]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/library/coercDb.ml
fixed undo support for coercions inside records
[helm.git] / helm / ocaml / library / coercDb.ml
index 437ad65ae202bcddab717c3fa5e5d327f63d6dfc..ac5067585b9c0d5b4cb6409de9f9e77f57bd18d9 100644 (file)
@@ -28,7 +28,6 @@ exception EqCarrNotImplemented of string Lazy.t
 exception EqCarrOnNonMetaClosed
 
 let db = ref []
-let use_coercions = ref true
 
 let coerc_carr_of_term t =
   try
@@ -69,7 +68,21 @@ let remove_coercion p =
   db := List.filter (fun u -> not(p u)) !db
 
 let find_coercion f =
-  if !use_coercions then
-    List.map (fun (_,_,x) -> x) (List.filter (fun (s,t,_) -> f (s,t)) !db)
-  else []
+  List.map (fun (_,_,x) -> x) (List.filter (fun (s,t,_) -> f (s,t)) !db)
+
+let is_a_coercion u =
+  List.exists (fun (_,_,x) -> UriManager.eq x u) !db
+
+let get_carr uri =
+  try
+    let src, tgt, _ = List.find (fun (_,_,x) -> UriManager.eq x uri) !db in
+    src, tgt
+  with Not_found -> assert false (* uri must be a coercion *)
+
+let term_of_carr = function
+  | Uri u -> CicUtil.term_of_uri u
+  | Sort s -> Cic.Sort s
+  | Term _ -> assert false
+  
+