]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_transformations/content2pres.ml
Cic2content split into Content and Cic2content.
[helm.git] / helm / ocaml / cic_transformations / content2pres.ml
index 5d6923237e0b73ad25800f92edea881365d9f6bf..46585f14cd80c1036782f580c649f10ac5939de7 100644 (file)
@@ -42,7 +42,7 @@ let rec split n l =
 
 let is_big_general countterm p =
   let maxsize = Cexpr2pres.maxsize in
-  let module Con = Cic2content in
+  let module Con = Content in
   let rec countp current_size p =
     if current_size > maxsize then current_size
     else 
@@ -62,23 +62,23 @@ let is_big_general countterm p =
       if current_size > maxsize then maxsize
       else 
         (match e with
-          Con.Declaration d -> 
+          `Declaration d -> 
             (match d.Con.dec_name with
                Some s -> current_size + 4 + (String.length s)
              | None -> prerr_endline "NO NAME!!"; assert false)
-        | Con.Hypothesis h ->
+        | `Hypothesis h ->
             (match h.Con.dec_name with
                 Some s -> current_size + 4 + (String.length s)
               | None -> prerr_endline "NO NAME!!"; assert false) 
-        | Con.Proof p -> countp current_size p
-        | Con.Definition d -> 
+        | `Proof p -> countp current_size p
+        | `Definition d -> 
             (match d.Con.def_name with
                 Some s -> 
                   let c1 = (current_size + 4 + (String.length s)) in
                   (countterm c1 d.Con.def_term)
               | None -> 
                   prerr_endline "NO NAME!!"; assert false) 
-        | Con.Joint ho -> maxsize + 1) (* we assume is big *)
+        | `Joint ho -> maxsize + 1) (* we assume is big *)
   and 
     countapplycontext current_size ac =
       List.fold_left countp current_size ac
@@ -143,7 +143,7 @@ let make_concl verb concl =
 ;;
 
 let make_args_for_apply term2pres args =
- let module Con = Cic2content in
+ let module Con = Content in
  let module P = Mpresentation in
  let rec make_arg_for_apply is_first arg row = 
    (match arg with 
@@ -168,7 +168,7 @@ let make_args_for_apply term2pres args =
  | _ -> assert false;;
 
 let rec justification term2pres p = 
-  let module Con = Cic2content in
+  let module Con = Content in
   let module P = Mpresentation in
   if ((p.Con.proof_conclude.Con.conclude_method = "Exact") or
      ((p.Con.proof_context = []) &
@@ -183,13 +183,13 @@ let rec justification term2pres p =
      
 and proof2pres term2pres p =
   let rec proof2pres p =
-    let module Con = Cic2content in
+    let module Con = Content in
     let module P = Mpresentation in
       let indent = 
         let is_decl e = 
           (match e with 
-             Con.Declaration _
-           | Con.Hypothesis _ -> true
+             `Declaration _
+           | `Hypothesis _ -> true
            | _ -> false) in
         ((List.filter is_decl p.Con.proof_context) != []) in 
       let concl = 
@@ -239,9 +239,9 @@ and proof2pres term2pres p =
 
   and ce2pres =
     let module P = Mpresentation in
-    let module Con = Cic2content in
+    let module Con = Content in
       function
-        Con.Declaration d -> 
+        `Declaration d -> 
           (match d.Con.dec_name with
               Some s ->
                 let ty = term2pres d.Con.dec_type in
@@ -253,7 +253,7 @@ and proof2pres term2pres p =
                    ty])
             | None -> 
                 prerr_endline "NO NAME!!"; assert false)
-      | Con.Hypothesis h ->
+      | `Hypothesis h ->
           (match h.Con.dec_name with
               Some s ->
                 let ty = term2pres h.Con.dec_type in
@@ -267,8 +267,8 @@ and proof2pres term2pres p =
                    ty])
             | None -> 
                 prerr_endline "NO NAME!!"; assert false) 
-      | Con.Proof p -> proof2pres p
-      | Con.Definition d -> 
+      | `Proof p -> proof2pres p
+      | `Definition d -> 
            (match d.Con.def_name with
               Some s ->
                 let term = term2pres d.Con.def_term in
@@ -279,7 +279,7 @@ and proof2pres term2pres p =
                    term])
             | None -> 
                 prerr_endline "NO NAME!!"; assert false) 
-      | Con.Joint ho -> 
+      | `Joint ho -> 
             P.Mtext ([],"jointdef")
 
   and acontext2pres ac continuation indent =
@@ -322,7 +322,7 @@ and proof2pres term2pres p =
         [P.Mtd ([], conclude_aux conclude)])
 
   and conclude_aux conclude =
-    let module Con = Cic2content in
+    let module Con = Content in
     let module P = Mpresentation in
     if conclude.Con.conclude_method = "TD_Conversion" then
       let expected = 
@@ -446,7 +446,7 @@ and proof2pres term2pres p =
 
   and arg2pres =
     let module P = Mpresentation in
-    let module Con = Cic2content in
+    let module Con = Content in
     function
         Con.Aux n -> 
           P.Mtext ([],"aux " ^ string_of_int n)
@@ -461,7 +461,7 @@ and proof2pres term2pres p =
  
    and byinduction conclude =
      let module P = Mpresentation in
-     let module Con = Cic2content in
+     let module Con = Content in
      let proof_conclusion = 
        (match conclude.Con.conclude_conclusion with
           None -> P.Mtext([],"No conclusion???")
@@ -507,7 +507,7 @@ and proof2pres term2pres p =
 
     and make_case =  
       let module P = Mpresentation in
-      let module Con = Cic2content in
+      let module Con = Content in
       function 
         Con.ArgProof p ->
           let name =
@@ -517,15 +517,15 @@ and proof2pres term2pres p =
           let indhyps,args =
              List.partition 
                (function
-                   Con.Hypothesis h -> h.Con.dec_inductive
+                   `Hypothesis h -> h.Con.dec_inductive
                  | _ -> false) p.Con.proof_context in
           let pattern_aux =
              List.fold_right
                (fun e p -> 
                   let dec  = 
                     (match e with 
-                       Con.Declaration h 
-                     | Con.Hypothesis h -> 
+                       `Declaration h 
+                     | `Hypothesis h -> 
                          let name = 
                            (match h.Con.dec_name with
                               None -> "NO NAME???"
@@ -557,7 +557,7 @@ and proof2pres term2pres p =
                  (P.Mtext([],"by induction hypothesis we know:")))]) in
                let make_hyp =
                  function 
-                   Con.Hypothesis h ->
+                   `Hypothesis h ->
                      let name = 
                        (match h.Con.dec_name with
                           None -> "no name"
@@ -588,11 +588,43 @@ and proof2pres term2pres p =
 proof2pres p
 ;;
 
-(*  
-let content2pres = 
-  proof2pres 
-    (function p -> Cexpr2pres.cexpr2pres_charcount (Content_expressions.acic2cexpr p))
-;; *)
-
+exception ToDo;;
 
+let content2pres term2pres (id,params,metasenv,obj) =
+ let module Con = Content in
+ let module P = Mpresentation in
+  match obj with
+     `Def (Con.Const,thesis,`Proof p) ->
+       P.Mtable
+        [None,"align","baseline 1";
+         None,"equalrows","false";
+         None,"columnalign","left";
+         None,"helm:xref","id"]
+        [(*P.Mtr []
+         [P.Mtd []
+           (P.Mrow []
+             [P.Mtext [] ("UNFINISHED PROOF" ^ id ^"(" ^ params ^ ")")])] ;
+*)
+         P.Mtr []
+          [P.Mtd []
+            (P.Mrow []
+              [P.Mtext [] "THESIS:"])] ;
+         P.Mtr []
+          [P.Mtd []
+            (P.Mrow []
+              [P.Mphantom []
+                (P.Mtext [] "__") ;
+              term2pres thesis])] ;
+         P.Mtr []
+          [P.Mtd []
+            (P.Mrow []
+              [proof2pres term2pres p])]]
+   | _ -> raise ToDo
+;;
 
+let content2pres ~ids_to_inner_sorts =
+ content2pres 
+  (function p -> 
+   (Cexpr2pres.cexpr2pres_charcount 
+    (Content_expressions.acic2cexpr ids_to_inner_sorts p)))
+;;