X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FgTopLevel%2FgTopLevel.ml;h=f6556ed8c58614589af187b497486ffc8e6c4cb4;hb=9b5c1945c6d3af81f07c41da187404c2431cefa3;hp=268d2846ee853b1613a7fa2e08d6d0ab584f5279;hpb=faf01084c13ccd731d7040fadb96caa0a2aa0019;p=helm.git diff --git a/helm/gTopLevel/gTopLevel.ml b/helm/gTopLevel/gTopLevel.ml index 268d2846e..f6556ed8c 100644 --- a/helm/gTopLevel/gTopLevel.ml +++ b/helm/gTopLevel/gTopLevel.ml @@ -165,50 +165,60 @@ let mml_of_cic_object uri annobj ids_to_inner_sorts ids_to_inner_types = (* CALLBACKS *) +exception RefreshSequentException of exn;; +exception RefreshProofException of exn;; + let refresh_proof (output : GMathView.math_view) = - let uri,currentproof = - match !ProofEngine.proof with - None -> assert false - | Some (uri,metasenv,bo,ty) -> - uri,(Cic.CurrentProof (UriManager.name_of_uri uri, metasenv, bo, ty)) - in - let - (acic,ids_to_terms,ids_to_father_ids,ids_to_inner_sorts,ids_to_inner_types) - = - Cic2acic.acic_object_of_cic_object currentproof - in - let mml = mml_of_cic_object uri acic ids_to_inner_sorts ids_to_inner_types in - output#load_tree mml ; - current_cic_infos := Some (ids_to_terms,ids_to_father_ids) + try + let uri,currentproof = + match !ProofEngine.proof with + None -> assert false + | Some (uri,metasenv,bo,ty) -> + uri,(Cic.CurrentProof (UriManager.name_of_uri uri, metasenv, bo, ty)) + in + let + (acic,ids_to_terms,ids_to_father_ids,ids_to_inner_sorts,ids_to_inner_types) + = + Cic2acic.acic_object_of_cic_object currentproof + in + let mml = + mml_of_cic_object uri acic ids_to_inner_sorts ids_to_inner_types + in + output#load_tree mml ; + current_cic_infos := Some (ids_to_terms,ids_to_father_ids) + with + e -> raise (RefreshProofException e) ;; let refresh_sequent (proofw : GMathView.math_view) = - match !ProofEngine.goal with - None -> proofw#unload - | Some (_,currentsequent) -> - let metasenv = - match !ProofEngine.proof with - None -> assert false - | Some (_,metasenv,_,_) -> metasenv - in - let sequent_gdome,ids_to_terms,ids_to_father_ids = - SequentPp.XmlPp.print_sequent metasenv currentsequent + try + match !ProofEngine.goal with + None -> proofw#unload + | Some (_,currentsequent) -> + let metasenv = + match !ProofEngine.proof with + None -> assert false + | Some (_,metasenv,_,_) -> metasenv in - let sequent_doc = - Xml2Gdome.document_of_xml domImpl sequent_gdome + let sequent_gdome,ids_to_terms,ids_to_father_ids = + SequentPp.XmlPp.print_sequent metasenv currentsequent in - let sequent_mml = - applyStylesheets sequent_doc sequent_styles sequent_args + let sequent_doc = + Xml2Gdome.document_of_xml domImpl sequent_gdome in - proofw#load_tree ~dom:sequent_mml ; - current_goal_infos := Some (ids_to_terms,ids_to_father_ids) + let sequent_mml = + applyStylesheets sequent_doc sequent_styles sequent_args + in + proofw#load_tree ~dom:sequent_mml ; + current_goal_infos := Some (ids_to_terms,ids_to_father_ids) + with + e -> raise (RefreshSequentException e) +;; + (* ignore(domImpl#saveDocumentToFile ~doc:sequent_doc ~name:"/public/sacerdot/guruguru1" ~indent:true ()) ; -ignore(domImpl#saveDocumentToFile ~doc:sequent_mml - ~name:"/public/sacerdot/guruguru2" ~indent:true ()) *) -;; let mml_of_cic_term term = let context = @@ -256,11 +266,26 @@ let call_tactic tactic rendering_window () = refresh_sequent proofw ; refresh_proof output with - e -> - output_html outputhtml - ("

" ^ Printexc.to_string e ^ "

") ; - ProofEngine.proof := savedproof ; - ProofEngine.goal := savedgoal ; + RefreshSequentException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "sequent: " ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw + | RefreshProofException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "proof: " ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw ; + refresh_proof output + | e -> + output_html outputhtml + ("

" ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; end ;; @@ -304,11 +329,33 @@ let call_tactic_with_input tactic rendering_window () = with CicTextualParser0.Eof -> inputt#delete_text 0 inputlen + | RefreshSequentException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "sequent: " ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw + | RefreshProofException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "proof: " ^ Printexc.to_string e ^ "

") ; +prerr_endline "PROVA CHE FA SOLLEVARE UN'ECCEZIONE:" ; flush stderr ; +begin +match !ProofEngine.proof with Some (_,metasenv,bo,_) -> +List.iter (function (i,ty) -> prerr_endline ("?" ^ string_of_int i ^ ": " ^ +CicPp.ppterm ty) ; flush stderr) metasenv ; +prerr_endline ("PROOF: " ^ CicPp.ppterm bo) ; flush stderr ; +end ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw ; + refresh_proof output | e -> output_html outputhtml - ("

" ^ Printexc.to_string e ^ "

"); + ("

" ^ Printexc.to_string e ^ "

") ; ProofEngine.proof := savedproof ; - ProofEngine.goal := savedgoal + ProofEngine.goal := savedgoal ; ;; let call_tactic_with_goal_input tactic rendering_window () = @@ -338,9 +385,26 @@ let call_tactic_with_goal_input tactic rendering_window () = refresh_proof rendering_window#output | None -> assert false (* "ERROR: No current term!!!" *) with - e -> - output_html outputhtml - ("

" ^ Printexc.to_string e ^ "

") + RefreshSequentException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "sequent: " ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw + | RefreshProofException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "proof: " ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw ; + refresh_proof output + | e -> + output_html outputhtml + ("

" ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; end | None -> output_html outputhtml @@ -409,9 +473,26 @@ let call_tactic_with_input_and_goal_input tactic rendering_window () = end | None -> assert false (* "ERROR: No current term!!!" *) with - e -> - output_html outputhtml - ("

" ^ Printexc.to_string e ^ "

") + RefreshSequentException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "sequent: " ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw + | RefreshProofException e -> + output_html outputhtml + ("

Exception raised during the refresh of the " ^ + "proof: " ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; + refresh_sequent proofw ; + refresh_proof output + | e -> + output_html outputhtml + ("

" ^ Printexc.to_string e ^ "

") ; + ProofEngine.proof := savedproof ; + ProofEngine.goal := savedgoal ; end | None -> output_html outputhtml