val mk_equality :
equality_bag -> int * proof *
(Cic.term * Cic.term * Cic.term * Utils.comparison) *
- Cic.metasenv ->
- equality
+ Cic.metasenv -> equality_bag * equality
val mk_tmp_equality :
int * (Cic.term * Cic.term * Cic.term * Utils.comparison) * Cic.metasenv ->
UriManager.uri -> (int * Cic.term) list -> int -> proof -> Cic.term
val refl_proof: UriManager.uri -> Cic.term -> Cic.term -> Cic.term
(** ensures that metavariables in equality are unique *)
-val fix_metas_goal: int -> goal -> int * goal
-val fix_metas: equality_bag -> int -> equality -> int * equality
+val fix_metas_goal: equality_bag -> goal -> equality_bag * goal
+val fix_metas: equality_bag -> equality -> equality_bag * equality
val metas_of_proof: equality_bag -> proof -> int list
(* this should be used _only_ to apply (efficiently) this subst on the
raises TermIsNotAnEquality if term is not an equation.
The first Cic.term is a proof of the equation
*)
-val equality_of_term: equality_bag -> Cic.term -> Cic.term -> equality
+val equality_of_term:
+ equality_bag -> Cic.term -> Cic.term -> Cic.metasenv ->
+ equality_bag * equality
(**
Re-builds the term corresponding to this equality
val term_of_equality: UriManager.uri -> equality -> Cic.term
val term_is_equality: Cic.term -> bool
+val saturate_term :
+ equality_bag -> Cic.metasenv -> Cic.substitution -> Cic.context -> Cic.term ->
+ equality_bag * Cic.term * Cic.metasenv * Cic.term list
+
+val push_maxmeta : equality_bag -> int -> equality_bag
+val maxmeta : equality_bag -> int
+val filter_metasenv_gt_maxmeta: equality_bag -> Cic.metasenv -> Cic.metasenv
+
(** tests a sort of alpha-convertibility between the two terms, but on the
metavariables *)
val meta_convertibility: Cic.term -> Cic.term -> bool
val is_weak_identity: equality -> bool
val is_identity: Utils.environment -> equality -> bool
+val is_in: equality_bag -> int -> bool
+
(* symmetric [eq_ty] [l] [id] [uri] [m]
*
* given an equality (_,p,(_,[l],r,_),[m],[id]) of 'type' l=r
*)
val symmetric:
equality_bag -> Cic.term -> Cic.term -> int -> UriManager.uri ->
- Cic.metasenv -> proof
+ Cic.metasenv -> equality_bag * proof
(* takes 3 lists of alive ids (they are threated the same way, the type is
* funny just to not oblige you to concatenate them) and drops all the dead
* equalities *)
-val collect: equality_bag -> int list -> int list -> int list -> unit
+val collect: equality_bag -> int list -> int list -> int list -> equality_bag
(* given an equality, returns the numerical id *)
val id_of: equality -> int