]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/applyTransformation.ml
cic_unification removed
[helm.git] / matita / matita / applyTransformation.ml
index bdc3b9268c799089fe34f49a7e5cb40a664ff7a6..ad51250d8dc87f3d1576d0aca8136df179cd5213 100644 (file)
@@ -44,9 +44,7 @@ module G  = GrafiteAst
 module GE = GrafiteEngine
 module LS = LibrarySync
 module Ds = CicDischarge
-module PO = ProceduralOptimizer
 module N = CicNotationPt
-module A2P = Acic2Procedural
 
 let mpres_document pres_box =
   Xml.add_xml_declaration (CicNotationPres.print_box pres_box)
@@ -74,6 +72,15 @@ let nmml_of_cic_sequent status metasenv subst sequent =
   let xmlpres = mpres_document pres_sequent in
    Xml2Gdome.document_of_xml DomMisc.domImpl xmlpres
 
+let ntxt_of_cic_sequent ~map_unicode_to_tex size status metasenv subst sequent =
+  let content_sequent,ids_to_refs =
+   NTermCicContent.nmap_sequent status ~metasenv ~subst sequent in 
+  let pres_sequent = 
+   Sequent2pres.nsequent2pres ids_to_refs subst content_sequent in
+  let pres_sequent = CicNotationPres.mpres_of_box pres_sequent in
+   BoxPp.render_to_string ~map_unicode_to_tex
+    (function x::_ -> x | _ -> assert false) size pres_sequent
+
 let mml_of_cic_object obj =
   let (annobj, ids_to_terms, ids_to_father_ids, ids_to_inner_sorts,
     ids_to_inner_types, ids_to_conjectures, ids_to_hypotheses)
@@ -97,7 +104,15 @@ let nmml_of_cic_object status obj =
   Xml2Gdome.document_of_xml DomMisc.domImpl xmlpres
 ;;
 
-let txt_of_cic_sequent ~map_unicode_to_tex size metasenv sequent =
+let ntxt_of_cic_object ~map_unicode_to_tex size status obj =
+ let cobj,ids_to_nrefs = NTermCicContent.nmap_obj status obj in 
+ let pres_sequent = Content2pres.ncontent2pres ~ids_to_nrefs cobj in
+ let pres_sequent = CicNotationPres.mpres_of_box pres_sequent in
+  BoxPp.render_to_string ~map_unicode_to_tex
+   (function x::_ -> x | _ -> assert false) size pres_sequent
+;;
+
+let txt_of_cic_sequent_all ~map_unicode_to_tex size metasenv sequent =
   let unsh_sequent,(asequent,ids_to_terms,
     ids_to_father_ids,ids_to_inner_sorts,ids_to_hypotheses)
   =
@@ -106,10 +121,20 @@ let txt_of_cic_sequent ~map_unicode_to_tex size metasenv sequent =
   let content_sequent = Acic2content.map_sequent asequent in 
   let pres_sequent = 
    CicNotationPres.mpres_of_box
-    (Sequent2pres.sequent2pres ~ids_to_inner_sorts content_sequent)
-  in
+    (Sequent2pres.sequent2pres ~ids_to_inner_sorts content_sequent) in
+  let txt =
   BoxPp.render_to_string ~map_unicode_to_tex
     (function x::_ -> x | _ -> assert false) size pres_sequent
+  in
+  (txt,
+   unsh_sequent,
+   (asequent,
+    (ids_to_terms,ids_to_father_ids,ids_to_hypotheses,ids_to_inner_sorts)))
+
+let txt_of_cic_sequent ~map_unicode_to_tex size metasenv sequent =
+ let txt,_,_ = txt_of_cic_sequent_all ~map_unicode_to_tex size metasenv sequent
+ in txt
+;;
 
 let txt_of_cic_sequent_conclusion ~map_unicode_to_tex ~output_type size
  metasenv sequent =
@@ -132,44 +157,6 @@ let txt_of_cic_term ~map_unicode_to_tex size metasenv context t =
    metasenv fake_sequent 
 ;;
 
-ignore (
- CicMetaSubst.set_ppterm_in_context
-  (fun ~metasenv subst term context ->
-    try
-     let context' = CicMetaSubst.apply_subst_context subst context in
-     let metasenv = CicMetaSubst.apply_subst_metasenv subst metasenv in
-     let term' = CicMetaSubst.apply_subst subst term in
-     let res =
-      txt_of_cic_term
-       ~map_unicode_to_tex:(Helm_registry.get_bool "matita.paste_unicode_as_tex")
-       30 metasenv context' term' in
-      if String.contains res '\n' then
-       "\n" ^ res ^ "\n"
-      else
-       res
-    with
-       Sys.Break as exn -> raise exn
-     | exn ->
-        "[[ Exception raised during pretty-printing: " ^
-         (try
-           Printexc.to_string exn
-          with
-             Sys.Break as exn -> raise exn
-           | _ -> "<<exception raised pretty-printing the exception>>"
-         ) ^ " ]] " ^
-        (CicMetaSubst.use_low_level_ppterm_in_context := true;
-         try
-          let res =
-           CicMetaSubst.ppterm_in_context ~metasenv subst term context
-          in
-           CicMetaSubst.use_low_level_ppterm_in_context := false;
-           res
-         with
-          exc -> 
-           CicMetaSubst.use_low_level_ppterm_in_context := false;
-           raise exc))
-);;
-
 (****************************************************************************)
 (* txt_of_cic_object: IMPROVE ME *)
 
@@ -196,15 +183,17 @@ let enable_notations = function
    | false ->
       CicNotation.set_active_notations []
 
-let txt_of_cic_object 
+let txt_of_cic_object_all
  ~map_unicode_to_tex ?skip_thm_and_qed ?skip_initial_lambdas n params obj 
 =
   let get_aobj obj = 
      try   
-        let aobj,_,_,ids_to_inner_sorts,ids_to_inner_types,_,_ =
+        let
+          aobj,ids_to_terms,ids_to_father_ids,ids_to_inner_sorts,ids_to_inner_types,ids_to_conjectures,ids_to_hypotheses =
             Cic2acic.acic_object_of_cic_object obj
         in
-        aobj, ids_to_inner_sorts, ids_to_inner_types
+        aobj, ids_to_terms, ids_to_father_ids, ids_to_inner_sorts,
+        ids_to_inner_types,ids_to_conjectures,ids_to_hypotheses
      with 
         | E.Object_not_found uri -> 
              let msg = "txt_of_cic_object: object not found: " ^ UM.string_of_uri uri in
@@ -213,6 +202,7 @@ let txt_of_cic_object
              let msg = "txt_of_cic_object: " ^ Printexc.to_string e in
              failwith msg
   in
+  (*MATITA1.0
   if List.mem G.IPProcedural params then begin
 
      Procedural2.debug := A2P.is_debug 1 params;
@@ -226,7 +216,8 @@ let txt_of_cic_object
 (*     
      let _ = ProceduralTeX.tex_of_obj Format.std_formatter obj in
 *)     
-     let aobj, ids_to_inner_sorts, ids_to_inner_types = get_aobj obj in
+     let  aobj, ids_to_terms, ids_to_father_ids, ids_to_inner_sorts,
+       ids_to_inner_types,ids_to_conjectures,ids_to_hypothesis = get_aobj obj in
      let term_pp = term2pres ~map_unicode_to_tex (n - 8) ids_to_inner_sorts in
      let lazy_term_pp = term_pp in
      let obj_pp = CicNotationPp.pp_obj term_pp in
@@ -267,8 +258,9 @@ let txt_of_cic_object
            ~ids_to_inner_sorts ~ids_to_inner_types ~info params aobj 
      in
      String.concat "" (List.map aux script) ^ "\n\n"
-  end else
-     let aobj, ids_to_inner_sorts, ids_to_inner_types = get_aobj obj in
+  end else *)
+     let  aobj, ids_to_terms, ids_to_father_ids, ids_to_inner_sorts,
+       ids_to_inner_types,ids_to_conjectures,ids_to_hypotheses = get_aobj obj in
      let cobj = 
        Acic2content.annobj2content ids_to_inner_sorts ids_to_inner_types aobj 
      in
@@ -276,12 +268,24 @@ let txt_of_cic_object
         Content2pres.content2pres 
            ?skip_initial_lambdas ?skip_thm_and_qed ~ids_to_inner_sorts cobj 
      in
-     remove_closed_substs (
+     let txt =
+      remove_closed_substs (
         BoxPp.render_to_string ~map_unicode_to_tex
            (function _::x::_ -> x | _ -> assert false) n
            (CicNotationPres.mpres_of_box bobj)
         ^ "\n\n"
-     )
+      )
+     in
+      (txt,(aobj,
+       (ids_to_terms, ids_to_father_ids, ids_to_conjectures, ids_to_hypotheses,
+      ids_to_inner_sorts,ids_to_inner_types)))
+
+let txt_of_cic_object
+ ~map_unicode_to_tex ?skip_thm_and_qed ?skip_initial_lambdas n params obj 
+=
+ let txt,_ = txt_of_cic_object_all
+  ~map_unicode_to_tex ?skip_thm_and_qed ?skip_initial_lambdas n params obj
+ in txt
 
 let cic_prefix = Str.regexp_string "cic:/"
 let matita_prefix = Str.regexp_string "cic:/matita/"
@@ -308,97 +312,6 @@ let discharge_uri params uri =
 
 let discharge_name s = s ^ "_discharged"
 
-let txt_of_inline_uri ~map_unicode_to_tex params suri =
-(*   
-   Ds.debug := true;
-*)
-   let print_exc = function
-      | ProofEngineHelpers.Bad_pattern s as e ->
-           Printexc.to_string e ^ " " ^ Lazy.force s
-      | e -> Printexc.to_string e
-   in
-   let dbd = LibraryDb.instance () in   
-   let sorted_uris = MetadataDeps.sorted_uris_of_baseuri ~dbd suri in
-   let error uri e =
-      let msg  = 
-         Printf.sprintf 
-            "ERROR IN THE GENERATION OF %s\nEXCEPTION: %s" 
-            (UM.string_of_uri uri) e
-      in
-      Printf.eprintf "%s\n" msg;
-      GrafiteTypes.command_error msg
-   in
-   let map uri =
-      Librarian.time_stamp "AT: BEGIN MAP";
-      try
-(* FG: for now the explicit variables must be discharged *)
-        let do_it obj =
-          let r = txt_of_cic_object ~map_unicode_to_tex 78 params obj in
-          Librarian.time_stamp "AT: END MAP  "; r
-       in
-       let obj, real = 
-          let s = UM.string_of_uri uri in
-          if Str.string_match matita_prefix s 0 then begin
-             Librarian.time_stamp "AT: GETTING OBJECT";
-             let obj, _ = E.get_obj Un.default_ugraph uri in
-             Librarian.time_stamp "AT: DONE          ";
-              obj, true
-          end else
-             Ds.discharge_uri discharge_name (discharge_uri params) uri
-       in
-       if real then do_it obj else
-       let newuri = discharge_uri params uri in
-       let _lemmas = LS.add_obj ~pack_coercion_obj:CicRefine.pack_coercion_obj newuri obj in
-       do_it obj
-      with
-         | TC.TypeCheckerFailure s ->
-           error uri ("failure  : " ^ Lazy.force s)
-         | TC.AssertFailure s      ->
-           error uri ("assert   : " ^ Lazy.force s)
-         | E.Object_not_found u    ->
-           error uri ("not found: " ^ UM.string_of_uri u)
-        | e                       -> error uri (print_exc e)
-   in
-   String.concat "" (List.map map sorted_uris)
-
-let txt_of_inline_macro ~map_unicode_to_tex params name =
-   let suri = 
-      if Librarian.is_uri name then name else
-      let include_paths = 
-         Helm_registry.get_list Helm_registry.string "matita.includes"
-      in
-      let _, baseuri, _, _ = 
-         Librarian.baseuri_of_script ~include_paths name
-      in
-      baseuri ^ "/"
-   in
-   txt_of_inline_uri ~map_unicode_to_tex params suri
-
-(****************************************************************************)
-(* procedural_txt_of_cic_term *)
-
-let procedural_txt_of_cic_term ~map_unicode_to_tex n params context term =
-  let term, _info = PO.optimize_term context term in
-  let annterm, ids_to_inner_sorts, ids_to_inner_types = 
-     try Cic2acic.acic_term_of_cic_term context term
-     with e -> 
-        let msg = "procedural_txt_of_cic_term: " ^ Printexc.to_string e in
-        failwith msg
-  in
-  let term_pp = term2pres ~map_unicode_to_tex (n - 8) ids_to_inner_sorts in
-  let lazy_term_pp = term_pp in
-  let obj_pp = CicNotationPp.pp_obj term_pp in
-  let aux = GrafiteAstPp.pp_statement
-     ~map_unicode_to_tex ~term_pp ~lazy_term_pp ~obj_pp in
-  let script = 
-     A2P.procedural_of_acic_term 
-        ~ids_to_inner_sorts ~ids_to_inner_types params context annterm 
-  in
-  String.concat "" (List.map aux script)
-;;
-
-(****************************************************************************)
-
 let txt_of_macro ~map_unicode_to_tex metasenv context m =
    GrafiteAstPp.pp_macro
      ~term_pp:(txt_of_cic_term ~map_unicode_to_tex 80 metasenv context)