]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_transformations/content2pres.ml
- selection attribute of maction is now explicitly generated
[helm.git] / helm / ocaml / cic_transformations / content2pres.ml
index 46585f14cd80c1036782f580c649f10ac5939de7..9356c288540066c7b207c4d02d75ba539866954e 100644 (file)
@@ -215,7 +215,8 @@ and proof2pres term2pres p =
                None -> P.Mtext([],"NO PROOF!!!")
              | Some c -> c) in 
           let action = 
-            P.Maction([None,"actiontype","toggle"],
+            P.Maction([None,"actiontype","toggle" ;
+                       None,"selection","1"],
               [(make_concl "proof of" ac);
                 body]) in
           P.Mtable ([None,"align","baseline 1"; None,"equalrows","false";
@@ -449,7 +450,7 @@ and proof2pres term2pres p =
     let module Con = Content in
     function
         Con.Aux n -> 
-          P.Mtext ([],"aux " ^ string_of_int n)
+          P.Mtext ([],"aux " ^ n)
       | Con.Premise prem -> 
           P.Mtext ([],"premise")
       | Con.Term t -> 
@@ -469,7 +470,7 @@ and proof2pres term2pres p =
      let inductive_arg,args_for_cases = 
        (match conclude.Con.conclude_args with
            Con.Aux(n)::_::tl ->
-             let l1,l2 = split n tl in
+             let l1,l2 = split (int_of_string n) tl in
              let last_pos = (List.length l2)-1 in
              List.nth l2 last_pos,l1
          | _ -> assert false) in
@@ -591,20 +592,22 @@ proof2pres p
 exception ToDo;;
 
 let content2pres term2pres (id,params,metasenv,obj) =
- let module Con = Content in
+ let module K = Content in
  let module P = Mpresentation in
   match obj with
-     `Def (Con.Const,thesis,`Proof p) ->
+     `Def (K.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 []
+               ("UNFINISHED PROOF" ^ id ^"(" ^
+                 String.concat " ; " (List.map UriManager.string_of_uri params)^
+                ")")])] ;
          P.Mtr []
           [P.Mtd []
             (P.Mrow []
@@ -614,11 +617,83 @@ let content2pres term2pres (id,params,metasenv,obj) =
             (P.Mrow []
               [P.Mphantom []
                 (P.Mtext [] "__") ;
-              term2pres thesis])] ;
-         P.Mtr []
+              term2pres thesis])]] @
+         (match metasenv with
+             None -> []
+           | Some metasenv' ->
+              [P.Mtr []
+                [P.Mtd []
+                  (* Conjectures are in their own table to make *)
+                  (* diffing the DOM trees easier.              *)
+                  (P.Mtable
+                    [None,"align","baseline 1";
+                     None,"equalrows","false";
+                     None,"columnalign","left"]
+                   ((P.Mtr []
+                      [P.Mtd []
+                       (P.Mrow []
+                         [P.Mtext [] "CONJECTURES:"])])::
+                    List.map
+                     (function
+                       (id,n,context,ty) ->
+                         P.Mtr []
+                          [P.Mtd []
+                           (P.Mrow []
+                             (List.map
+                               (function
+                                   (_,None) ->
+                                     P.Mrow []
+                                      [ P.Mi [] "_" ;
+                                        P.Mo [] ":?" ;
+                                        P.Mi [] "_"]
+                                 | (_,Some (`Declaration d))
+                                 | (_,Some (`Hypothesis d)) ->
+                                    let
+                                     { K.dec_name = dec_name ;
+                                       K.dec_type = ty } = d
+                                     in
+                                      P.Mrow []
+                                       [ P.Mi []
+                                          (match dec_name with
+                                              None -> "_"
+                                            | Some n -> n) ;
+                                         P.Mo [] ":" ;
+                                         term2pres ty]
+                                 | (_,Some (`Definition d)) ->
+                                    let
+                                     { K.def_name = def_name ;
+                                       K.def_term = bo } = d
+                                     in
+                                      P.Mrow []
+                                       [ P.Mi []
+                                          (match def_name with
+                                              None -> "_"
+                                            | Some n -> n) ;
+                                         P.Mo [] ":=" ;
+                                         term2pres bo]
+                                 | (_,Some (`Proof p)) ->
+                                    let proof_name = p.K.proof_name in
+                                     P.Mrow []
+                                      [ P.Mi []
+                                         (match proof_name with
+                                             None -> "_"
+                                           | Some n -> n) ;
+                                        P.Mo [] ":=" ;
+                                        proof2pres term2pres p]
+                               ) context @
+                             [ P.Mo [] "|-" ] @
+                             [ P.Mi [] (string_of_int n) ;
+                               P.Mo [] ":" ;
+                               term2pres ty ]
+                           ))
+                          ]
+                     ) metasenv'
+                  ))]]
+         )  @
+        [P.Mtr []
           [P.Mtd []
             (P.Mrow []
-              [proof2pres term2pres p])]]
+              [proof2pres term2pres p])]])
    | _ -> raise ToDo
 ;;