]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/tactics/paramodulation/equality.mli
- init_cache_and_tables rewritten using the automation_cache
[helm.git] / helm / software / components / tactics / paramodulation / equality.mli
index d3acf8950c6b5cff5225dcf4eb395f3eba06edc7..b4aa66d29bd0fa6def5407a77a88fbcf3272190a 100644 (file)
@@ -65,8 +65,7 @@ val mk_eq_ind :
 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 -> 
@@ -101,8 +100,8 @@ val build_proof_term :
   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 
@@ -114,7 +113,9 @@ exception TermIsNotAnEquality;;
    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
@@ -122,6 +123,13 @@ val equality_of_term: equality_bag -> Cic.term -> Cic.term -> 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.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
@@ -134,6 +142,8 @@ val meta_convertibility_subst:
 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
@@ -144,12 +154,12 @@ val is_identity: Utils.environment -> equality -> bool
  *)
 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