]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_annotations/cicAnnotation2Xml.ml
New experimental commit: metavariables representation is changed again,
[helm.git] / helm / ocaml / cic_annotations / cicAnnotation2Xml.ml
index 8d12434cb7129559d248dc1bad87dbefa44cc082..8fb002f3f0d87286dd7a182fa215276ceee8a1cd 100644 (file)
@@ -42,6 +42,8 @@ let print_ann i2a id =
 ;;
 
 (*CSC ottimizzazione: al posto di curi cdepth (vedi codice) *)
+(* It takes in input a hash table mapping ids to annotations, an annotated 
+term, and gives back a Xml.token Stream.t representing the .ann file *)
 let print_term i2a =
  let rec aux =
   let module C = Cic in
@@ -50,7 +52,7 @@ let print_term i2a =
     function
        C.ARel (id,_,_) -> print_ann i2a id
      | C.AVar (id,_) -> print_ann i2a id
-     | C.AMeta (id,_) -> print_ann i2a id
+     | C.AMeta (id,_,_) -> print_ann i2a id
      | C.ASort (id,_) -> print_ann i2a id
      | C.AImplicit _ -> raise NotImplemented
      | C.AProd (id,_,s,t) -> [< print_ann i2a id ; aux s ; aux t >]
@@ -117,8 +119,19 @@ let pp_annotation obj i2a curi =
        | C.ACurrentProof (xid, _, conjs, bo, ty) ->
           [< print_ann i2a xid ;
              List.fold_right
-              (fun (_,t) i -> [< print_term i2a t ; i >])
-              conjs [<>] ;
+              (fun (_, context, t) i ->
+                [< List.fold_right
+                   (fun context_entry i -> 
+                     [<(match context_entry with
+                           Some (_,C.ADecl at) -> print_term i2a at
+                         | Some (_,C.ADef at) -> print_term i2a at
+                         | None -> [< >]
+                        ) ; i
+                       >]
+                   ) context [< >];
+                  print_term i2a t ; i
+                >]
+              ) conjs [<>] ;
              print_term i2a bo ;
              print_term i2a ty
           >]
@@ -131,3 +144,6 @@ let pp_annotation obj i2a curi =
       end
   >]
 ;;
+
+
+