]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/library/coercDb.ml
Bug fixed: terms with a Cast used to raise assert false when whd was avoided
[helm.git] / helm / software / components / library / coercDb.ml
index 8e2c62f310ca5b14251dcaa0a72dd2f94424688e..c5356b3e17fb2dfe1f4722b22b4a952643bf9464 100644 (file)
@@ -32,25 +32,26 @@ exception EqCarrOnNonMetaClosed
 let db = ref []
 
 let coerc_carr_of_term t =
-  try
-    Uri (CicUtil.uri_of_term t)
-  with Invalid_argument _ ->
-    match t with
-    | Cic.Sort s -> Sort s
-    | Cic.Appl ((Cic.Const (uri, _))::_) 
-    | Cic.Appl ((Cic.MutInd (uri, _, _))::_) 
-    | Cic.Appl ((Cic.MutConstruct (uri, _, _, _))::_) -> Uri uri
-    | t -> Term t
+ try
+  match t with
+     Cic.Sort s -> Sort s
+   | Cic.Appl (t::_)
+   | t -> Uri (CicUtil.uri_of_term t)
+ with Invalid_argument _ ->
+  Term t
 ;;
 
-let name_of_carr = function
+let rec name_of_carr = function
   | Uri u -> UriManager.name_of_uri u
   | Sort s -> CicPp.ppsort s
   | Term (Cic.Appl ((Cic.Const (uri, _))::_)) 
   | Term (Cic.Appl ((Cic.MutInd (uri, _, _))::_)) 
   | Term (Cic.Appl ((Cic.MutConstruct (uri, _, _, _))::_)) -> 
         UriManager.name_of_uri uri
-  | Term t -> (* CicPp.ppterm t *) assert false
+  | Term (Cic.Prod (_,_,t)) -> name_of_carr (Term t)
+  | Term t -> 
+      prerr_endline ("CoercDb.name_of_carr:" ^ CicPp.ppterm t); 
+      "FixTheNameMangler"
 
 let eq_carr src tgt =
   match src, tgt with