]> matita.cs.unibo.it Git - helm.git/blobdiff - components/tactics/paramodulation/equality_indexing.ml
added (but not yet used) remove_local_context
[helm.git] / components / tactics / paramodulation / equality_indexing.ml
index 4c07731d51f3bb4e46b2c58aa1dce78e181800d4..d5e5353e9bd585f58427237e6083a952d7e62bf4 100644 (file)
@@ -27,7 +27,7 @@
 
 module type EqualityIndex =
   sig
-    module PosEqSet : Set.S with type elt = Utils.pos * Inference.equality
+    module PosEqSet : Set.S with type elt = Utils.pos * Equality.equality
     val arities : (Cic.term, int) Hashtbl.t
     type key = Cic.term
     type t = Discrimination_tree.DiscriminationTreeIndexing(PosEqSet).t
@@ -35,16 +35,18 @@ module type EqualityIndex =
     val retrieve_generalizations : t -> key -> PosEqSet.t
     val retrieve_unifiables : t -> key -> PosEqSet.t
     val init_index : unit -> unit
-    val remove_index : t -> Inference.equality -> t
-    val index : t -> Inference.equality -> t
-    val in_index : t -> Inference.equality -> bool
+    val remove_index : t -> Equality.equality -> t
+    val index : t -> Equality.equality -> t
+    val in_index : t -> Equality.equality -> bool
   end
 
 module DT = 
 struct
     module OrderedPosEquality = struct
-       type t = Utils.pos * Inference.equality
-       let compare = Pervasives.compare
+       type t = Utils.pos * Equality.equality
+       let compare (p1,e1) (p2,e2) = 
+         let rc = Pervasives.compare p1 p2 in
+           if rc = 0 then Equality.compare e1 e2 else rc
       end
 
     module PosEqSet = Set.Make(OrderedPosEquality);;
@@ -58,7 +60,7 @@ struct
     ;;
 
     let remove_index tree equality = 
-      let _, _, (_, l, r, ordering), _ = equality in
+      let _, _, (_, l, r, ordering), _,_ = Equality.open_equality equality in
        match ordering with
          | Utils.Gt -> remove_index tree l (Utils.Left, equality)
          | Utils.Lt -> remove_index tree r (Utils.Right, equality)
@@ -67,7 +69,7 @@ struct
                remove_index tree l (Utils.Left, equality)
 
     let index tree equality = 
-      let _, _, (_, l, r, ordering), _ = equality in
+      let _, _, (_, l, r, ordering), _,_ = Equality.open_equality equality in
        match ordering with
          | Utils.Gt -> index tree l (Utils.Left, equality)
          | Utils.Lt -> index tree r (Utils.Right, equality)
@@ -77,9 +79,9 @@ struct
   
 
     let in_index tree equality = 
-      let _, _, (_, l, r, ordering), _ = equality in
+      let _, _, (_, l, r, ordering), _,_ = Equality.open_equality equality in
       let meta_convertibility (pos,equality') = 
-       Inference.meta_convertibility_eq equality equality' 
+       Equality.meta_convertibility_eq equality equality' 
       in
        in_index tree l meta_convertibility || in_index tree r meta_convertibility
 
@@ -88,8 +90,10 @@ struct
 module PT = 
   struct
     module OrderedPosEquality = struct
-       type t = Utils.pos * Inference.equality
-       let compare = Pervasives.compare
+       type t = Utils.pos * Equality.equality
+       let compare (p1,e1) (p2,e2) = 
+         let rc = Pervasives.compare p1 p2 in
+           if rc = 0 then Equality.compare e1 e2 else rc
       end
 
     module PosEqSet = Set.Make(OrderedPosEquality);;
@@ -103,7 +107,7 @@ module PT =
     ;;
 
     let remove_index tree equality = 
-      let _, _, (_, l, r, ordering), _ = equality in
+      let _, _, (_, l, r, ordering), _,_ = Equality.open_equality equality in
          match ordering with
          | Utils.Gt -> remove_index tree l (Utils.Left, equality)
          | Utils.Lt -> remove_index tree r (Utils.Right, equality)
@@ -112,7 +116,7 @@ module PT =
                remove_index tree l (Utils.Left, equality)
 
     let index tree equality = 
-      let _, _, (_, l, r, ordering), _ = equality in
+      let _, _, (_, l, r, ordering), _,_ = Equality.open_equality equality in
        match ordering with
          | Utils.Gt -> index tree l (Utils.Left, equality)
          | Utils.Lt -> index tree r (Utils.Right, equality)
@@ -122,9 +126,9 @@ module PT =
   
 
     let in_index tree equality = 
-      let _, _, (_, l, r, ordering), _ = equality in
+      let _, _, (_, l, r, ordering), _,_ = Equality.open_equality equality in
       let meta_convertibility (pos,equality') = 
-       Inference.meta_convertibility_eq equality equality' 
+       Equality.meta_convertibility_eq equality equality' 
       in
        in_index tree l meta_convertibility || in_index tree r meta_convertibility
 end