]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/matita/matitaProof.ml
renamed Http_client to Http_user_agent to avoid clashes with Gerd's
[helm.git] / helm / matita / matitaProof.ml
index 98b9cf02c85178f85c71e528759b891075caa07e..ca1b4c9077f9bb32f5af79e0ddf4e5154e224e7e 100644 (file)
  * http://helm.cs.unibo.it/
  *)
 
+open MatitaCicMisc
+
+let init_metadata _ = ()
+let compute_metadata _ _ = ()
+
+(*
+let init_metadata status =
+  let ((_, metasenv, _, _) as proof, _) = status in
+  let proof_object_metadata = (* compute proof annotations *)
+    Cic2acic.acic_object_of_cic_object (cicCurrentProof proof)
+  in
+  let sequents_metadata = (* compute all sequent annotations from scratch *)
+    List.map
+      (fun ((metano, context, term) as sequent) ->
+        (metano, Cic2acic.asequent_of_sequent metasenv sequent))
+      metasenv
+  in
+  (proof_object_metadata, sequents_metadata)
+
+let compute_metadata (old_status, old_metadata) new_status =
+  let ((_, new_metasenv, _, _) as new_proof, goal_opt) = new_status in
+  let proof_object_metadata = (* compute proof annotations *)
+    let obj =
+      match goal_opt with
+      | Some _ -> cicCurrentProof new_proof
+      | None -> cicConstant new_proof
+    in
+    Cic2acic.acic_object_of_cic_object obj
+  in
+  let sequents_metadata = (* compute all sequent annotations from scratch *)
+    (** TODO Zack could we reuse some of the annotations from the previous
+    * status to avoid recomputing all of them? uhm ... we have to which
+    * sequents haven't been changed by last tactic applications ... doh! *)
+    List.map
+      (fun ((metano, context, term) as sequent) ->
+        (metano, Cic2acic.asequent_of_sequent new_metasenv sequent))
+      new_metasenv
+  in
+  (proof_object_metadata, sequents_metadata)
+*)
+
 class proof ?uri ~typ ~metasenv ~body () =
   object (self)
 
-    inherit [unit] StatefulProofEngine.status ?uri ~typ ~body ~metasenv
-      (fun _ -> ())
-      (fun _ _ -> ())
-      ()
-
-    method private currentProof =
-      let (uri, metasenv, bo, ty) = self#proof in
-      let uri =
-        match uri with
-        | Some uri -> uri
-        | None -> MatitaTypes.untitled_con_uri
-      in
-        (* TODO CSC: Wrong: [] is just plainly wrong *)
-      Cic.CurrentProof (UriManager.name_of_uri uri, metasenv, bo, ty, [])
+    inherit [unit]
+      StatefulProofEngine.status
+        ~history_size:BuildTimeConf.undo_history_size ?uri ~typ ~body ~metasenv
+        init_metadata compute_metadata ()
 
     method toXml =
-      let currentproof = self#currentProof in
+      let currentproof = cicCurrentProof self#proof in
       let (acurrentproof,_,_,ids_to_inner_sorts,_,_,_) =
         Cic2acic.acic_object_of_cic_object ~eta_fix:false currentproof
       in