(************************************************************************) (* * The Rocq Prover / The Rocq Development Team *) (* v * Copyright INRIA, CNRS and contributors *) (* <O___,, * (see version control and CREDITS file for authors & dates) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************)
open Univ open UVars
(** {6 Graphs of universes. } *) type t
val set_type_in_type : bool -> t -> t
(** When [type_in_type], functions adding constraints do not fail and may instead ignore inconsistent constraints.
Checking functions such as [check_leq] always return [true].
*) val type_in_type : t -> bool
type'a check_function = t -> 'a -> 'a -> bool
val check_leq : Universe.t check_function val check_eq : Universe.t check_function val check_eq_level : Level.t check_function
(** The initial graph of universes: Prop < Set *) val initial_universes : t
(** Initial universes, but keeping options such as type in type from the argument. *) val initial_universes_with : t -> t
(** Check equality of instances w.r.t. a universe graph *) val check_eq_instances : Instance.t check_function
(** {6 ... } *) (** Merge of constraints in a universes graph. The function [merge_constraints] merges a set of constraints in a given universes graph. It raises the exception [UniverseInconsistency] if the
constraints are not satisfiable. *)
type path_explanation
type explanation =
| Path of path_explanation
| Other of Pp.t
exception UniverseInconsistency of univ_inconsistency
val enforce_constraint : univ_constraint -> t -> t
val merge_constraints : Constraints.t -> t -> t
val check_constraint : t -> univ_constraint -> bool val check_constraints : Constraints.t -> t -> bool val check_eq_sort : t -> Sorts.t -> Sorts.t -> bool val check_leq_sort : t -> Sorts.t -> Sorts.t -> bool
val enforce_leq_alg : Univ.Universe.t -> Univ.Universe.t -> t -> Univ.Constraints.t * t
(** Adds a universe to the graph, ensuring it is >= or > Set.
@raise AlreadyDeclared if the level is already declared in the graph. *)
exception AlreadyDeclared
val add_universe : Level.t -> strict:bool -> t -> t
(** Check that the universe levels are declared. *) val check_declared_universes : t -> Univ.Level.Set.t -> (unit, Univ.Level.Set.t) result
(** The empty graph of universes *) val empty_universes : t
(** [constraints_of_universes g] returns [csts] and [partition] where [csts] are the non-Eq constraints and [partition] is the partition
of the universes into equivalence classes. *) val constraints_of_universes : t -> Constraints.t * Level.Set.t list
val choose : (Level.t -> bool) -> t -> Level.t -> Level.t option (** [choose p g u] picks a universe verifying [p] and equal
to [u] in [g]. *)
(** [constraints_for ~kept g] returns the constraints about the universes [kept] in [g] up to transitivity.
eg if [g] is [a <= b <= c] then [constraints_for ~kept:{a, c} g] is [a <= c]. *) val constraints_for : kept:Level.Set.t -> t -> Constraints.t
val domain : t -> Level.Set.t (** Known universes *)
val check_subtype : AbstractContext.t check_function (** [check_subtype univ ctx1 ctx2] checks whether [ctx2] is an instance of
[ctx1]. *)
(** {6 Dumping} *)
type node =
| Alias of Level.t
| Node ofbool Level.Map.t (** Nodes v s.t. u < v (true) or u <= v (false) *)
(** {6 Debugging} *) val check_universes_invariants : t -> unit
module Internal : sig (** Makes the qvars treated as above prop.
Do not use outside kernel inductive typechecking. *) val add_template_qvars : Sorts.QVar.Set.t -> t -> t
val is_above_prop : t -> Sorts.QVar.t -> bool end
¤ Dauer der Verarbeitung: 0.33 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.