]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_unification/coercGraph.ml
removed debug prerr_endline
[helm.git] / helm / ocaml / cic_unification / coercGraph.ml
index 4dd05073b26b3ab2af09899254f7713a6a25a22c..00cfa90daea8859fadec8266f1f7946508060b9e 100644 (file)
 
 open Printf;;
 
-ignore(Helm_registry.load_from "/home/tassi/helm/gTopLevel/gTopLevel.conf.xml")
+let debug_print = fun _ -> ()
+
+type coercions = (UriManager.uri * UriManager.uri * UriManager.uri) list
 
 (* the list of known coercions (MUST be transitively closed) *)
 let coercions = ref [
   (UriManager.uri_of_string "cic:/Coq/Init/Datatypes/nat.ind#xpointer(1/1)",
    UriManager.uri_of_string "cic:/Coq/Reals/Rdefinitions/R.con",
-   UriManager.uri_of_string "cic://Coq/Reals/Raxioms/INR.con") ;
+   UriManager.uri_of_string "cic:/Coq/Reals/Raxioms/INR.con") ;
 
    (
      UriManager.uri_of_string "cic:/CoRN/algebra/CFields/CField.ind#xpointer(1/1)",
@@ -58,13 +60,13 @@ let look_for_coercion src tgt =
         UriManager.eq t tgt) 
       !coercions 
     in
-    prerr_endline (sprintf ":) TROVATA la coercion %s %s" 
+    debug_print (sprintf ":) TROVATA la coercion %s %s" 
       (UriManager.name_of_uri src) 
       (UriManager.name_of_uri tgt));
     Some (CicUtil.term_of_uri (UriManager.string_of_uri u))
   with 
     Not_found -> 
-      prerr_endline (sprintf ":( NON TROVATA la coercion %s %s" 
+      debug_print (sprintf ":( NON TROVATA la coercion %s %s" 
         (UriManager.name_of_uri src) (UriManager.name_of_uri tgt));
       None
 ;;
@@ -94,7 +96,7 @@ let get_closure_coercions src tgt uri =
     [] c_to_src)
 ;;
 
-      
+let obj_attrs = [`Class `Coercion; `Generated]
 
 (* generate_composite_closure (c2 (c1 s)) in the universe graph univ *)
 let generate_composite_closure c1 c2 univ =
@@ -122,14 +124,14 @@ let generate_composite_closure c1 c2 univ =
     try 
       CicTypeChecker.type_of_aux' [] [] c univ
     with CicTypeChecker.TypeCheckerFailure s as exn ->
-      prerr_endline (sprintf "Generated composite coercion:\n%s\n%s" 
+      debug_print (sprintf "Generated composite coercion:\n%s\n%s" 
         (CicPp.ppterm c) s);
       raise exn
   in
   let cleaned_ty =
     FreshNamesGenerator.clean_dummy_dependent_types c_ty 
   in
-  let obj = Cic.Constant ("xxxx",Some c,cleaned_ty,[]) in 
+  let obj = Cic.Constant ("xxxx",Some c,cleaned_ty,[],obj_attrs) in 
     obj,univ
 ;;
 
@@ -161,13 +163,14 @@ let close_coercion_graph src tgt uri =
                 CicUtil.term_of_uri (UriManager.string_of_uri uri)
               in
               let first_step = 
-                (Cic.Constant ("",Some (term_of_uri' he),Cic.Sort Cic.Prop,[]))
+                Cic.Constant ("", Some (term_of_uri' he), Cic.Sort Cic.Prop, [],
+                  obj_attrs)
               in
               let o,u = 
                 List.fold_left (fun (o,u) coer ->
                   match o with 
-                  |  Cic.Constant (_,Some c,_,[]) ->
-                    generate_composite_closure c (term_of_uri' coer) u
+                  | Cic.Constant (_,Some c,_,[],_) ->
+                      generate_composite_closure c (term_of_uri' coer) u
                   | _ -> assert false 
                 ) (first_step, CicUniv.empty_ugraph) tl
               in
@@ -180,35 +183,19 @@ let close_coercion_graph src tgt uri =
               in
               let named_obj = 
                 match o with
-                | Cic.Constant (_,bo,ty,vl) -> Cic.Constant (name,bo,ty,vl)
+                | Cic.Constant (_,bo,ty,vl,attrs) ->
+                    Cic.Constant (name,bo,ty,vl,attrs)
                 | _ -> assert false 
               in
                 ((src,tgt,c_uri),(c_uri,named_obj,u))
       ) todo_list)
   in
-  coercions := !coercions @ new_coercions;
+  coercions := !coercions @ new_coercions @ [src,tgt,uri];
   new_coercions_obj
 ;;
 
+let get_coercions_list () =
+  !coercions
 
 
-
-(* stupid case *)
-
-let l = close_coercion_graph 
- (UriManager.uri_of_string
- "cic:/CoRN/algebra/CRings/CRing.ind#xpointer(1/1)")
- (UriManager.uri_of_string
- "cic:/CoRN/algebra/CAbGroups/CAbGroup.ind#xpointer(1/1)")
- (UriManager.uri_of_string
- "cic:/CoRN/algebra/CRings/cr_crr.con")
-in
- List.iter (fun (u,o,g) -> 
-   prerr_endline (CicPp.ppobj o);
-   prerr_endline (UriManager.string_of_uri u);
-   prerr_endline "")
- l
-
 (* EOF *)