TermTerms of our language.
An expression.
and desc = | Coh of string * (icit * string * t) list * t * substitutioncoherence
*)| Var of stringvariable
*)| Abs of icit * string * t * tabstraction
*)| App of icit * t * tapplication
*)| Pi of icit * string * t * tΠ-type
*)| Id of t * t * tidentity type
*)| Arr of t * t * tarrow type
*)| Hom of t * tinternal hom type
*)| Prod of t * tproduct type
*)| Op of topposite of a type
*)| Oneterminal type
*)| Meta of metaa variable to be unified
*)| Objobject type
*)| Typethe type of types
*)and context = (string * t) listand substitution = (string * t) listand meta = {id : int;source_pos : Extlib.Pos.t option;position in the source code (can be empty if the metavariable was created on the fly)
*)mutable value : t option;ty : t;}val is_pi : t -> boolval to_string : ?pa:bool -> t -> stringString representation of an expression. This should mostly be useful for debugging (we want to print values).
val string_of_context : (string * t) list -> stringval mk : ?pos:Extlib.Pos.t -> desc -> tCreate an expression from its contents.
val repos : Extlib.Pos.t -> t -> tChange the position.
val var : ?pos:Extlib.Pos.t -> string -> tval meta : ?pos:Extlib.Pos.t -> ?real:bool -> ?value:t -> t -> tval hole : ?pos:Extlib.Pos.t -> ?real:bool -> unit -> tval abs_coh : ?pos:Extlib.Pos.t -> string -> (icit * string * t) list -> t -> tCreate coherence with abstracted arguments.
type prog = command listA program.
val fresh_var : string -> tval homs : ?pos:Extlib.Pos.t -> t list -> t -> tBuild multiple hom types.
val abss : ?pos:Extlib.Pos.t -> (icit * string * t) list -> t -> tBuild multiple abstractions.
val pis : ?pos:Extlib.Pos.t -> (icit * string * t) list -> t -> tBuild multiple pi types.
val pis_explicit : ?pos:Extlib.Pos.t -> (string * t) list -> t -> tBuild multiple pi types.
val prods : ?pos:Extlib.Pos.t -> t list -> tBuild multiple products.
val has_fv : string -> t -> boolval is_var : t -> boolval is_obj : t -> boolval is_implicit_pi : t -> boolval is_metavariable : t -> boolval failure : Extlib.Pos.t -> ('a, unit, string, 'b) Stdlib.format4 -> 'cval dim : t -> intval free_variable_names : t -> string list