Ltac2_plugin.Tac2typing_envmodule TVar : sig ... endval empty_env : ?strict:bool -> unit -> tdefault strict:true
val set_rec : (Names.KerName.t * int) Names.Id.Map.t -> t -> tval env_strict : t -> boolval get_alias : Names.lident -> t -> TVar.tval find_rec_var : Names.Id.t -> t -> (Names.KerName.t * int) optiontype mix_type_scheme = int * mix_var Tac2expr.glb_typexprval mem_var : Names.Id.t -> t -> boolval find_var : Names.Id.t -> t -> mix_type_schemeval is_used_var : Names.Id.t -> t -> boolval bound_vars : t -> Names.Id.Set.tval get_variable0 : (Names.Id.t -> bool) -> Tac2expr.tacref Tac2expr.or_relid -> Tac2expr.tacref Locus.or_varval get_variable : t -> Tac2expr.tacref Tac2expr.or_relid -> Tac2expr.tacref Locus.or_varval kind : t -> TVar.t Tac2expr.glb_typexpr -> TVar.t Tac2expr.glb_typexprView function, allows to ensure head normal forms
val pr_glbtype : t -> TVar.t Tac2expr.glb_typexpr -> Pp.tval eq_or_tuple : ('a -> 'b -> bool) -> 'a Tac2expr.or_tuple -> 'b Tac2expr.or_tuple -> boolexception CannotUnify of TVar.t Tac2expr.glb_typexpr * TVar.t Tac2expr.glb_typexprval unify0 : t -> TVar.t Tac2expr.glb_typexpr -> TVar.t Tac2expr.glb_typexpr -> unitunify0 raises CannotUnify, unify raises usererror
val unify : ?loc:Loc.t -> t -> TVar.t Tac2expr.glb_typexpr -> TVar.t Tac2expr.glb_typexpr -> unitval unify_arrow : ?loc:Loc.t -> t -> TVar.t Tac2expr.glb_typexpr -> (Loc.t option * TVar.t Tac2expr.glb_typexpr) list -> TVar.t Tac2expr.glb_typexprval abstract_var : t -> TVar.t Tac2expr.glb_typexpr -> mix_type_schemeval monomorphic : TVar.t Tac2expr.glb_typexpr -> mix_type_schemeval polymorphic : Tac2expr.type_scheme -> mix_type_schemeval push_name : Names.Name.t -> mix_type_scheme -> t -> tval push_ids : mix_type_scheme Names.Id.Map.t -> t -> tval subst_type : ('a -> 'b Tac2expr.glb_typexpr) -> 'a Tac2expr.glb_typexpr -> 'b Tac2expr.glb_typexprval normalize : t -> (int Stdlib.ref * int Tac2expr.glb_typexpr TVar.Map.t Stdlib.ref) -> TVar.t Tac2expr.glb_typexpr -> int Tac2expr.glb_typexpr