X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2FmatitaMathView.ml;h=7f1917cfe1cf5ce6c3642966aaebd54ad1846546;hb=2bd1dbc6fdad64f989089165a4e7367c072d2656;hp=3b4c566e2a9a42c50c80bf7011cf37eabe0831a2;hpb=50afaf262195266d156f594cff7e92a6e8898b3e;p=helm.git diff --git a/helm/software/matita/matitaMathView.ml b/helm/software/matita/matitaMathView.ml index 3b4c566e2..7f1917cfe 100644 --- a/helm/software/matita/matitaMathView.ml +++ b/helm/software/matita/matitaMathView.ml @@ -252,7 +252,7 @@ object (self) match self#get_term_by_id cic_info id with | SelTerm (t, father_hyp) -> let sequent = self#sequent_of_id ~paste_kind:`Pattern id in - let text = self#string_of_cic_sequent sequent in + let text = self#string_of_cic_sequent ~output_type:`Pattern sequent in (match father_hyp with | None -> None, [], Some text | Some hyp_name -> None, [ hyp_name, text ], None) @@ -264,7 +264,7 @@ object (self) match self#get_term_by_id cic_info id with | SelTerm (t, father_hyp) -> let sequent = self#sequent_of_id ~paste_kind:`Term id in - let text = self#string_of_cic_sequent sequent in + let text = self#string_of_cic_sequent ~output_type:`Term sequent in text | SelHyp (hyp_name, _ctxt) -> hyp_name @@ -288,14 +288,13 @@ object (self) reductions_menu_item#set_submenu reductions; tactics_menu_item#set_submenu tactics; let normalize = add_menu_item ~menu:reductions ~label:"Normalize" () in - let reduce = add_menu_item ~menu:reductions ~label:"Reduce" () in let simplify = add_menu_item ~menu:reductions ~label:"Simplify" () in let whd = add_menu_item ~menu:reductions ~label:"Weak head" () in menu#append (GMenu.separator_item ()); let copy = add_menu_item ~stock:`COPY () in let gui = get_gui () in List.iter (fun item -> item#misc#set_sensitive gui#canCopy) - [ copy; check; normalize; reduce; simplify; whd ]; + [ copy; check; normalize; simplify; whd ]; let reduction_action kind () = let pat = self#tactic_text_pattern_of_selection in let statement = @@ -303,13 +302,14 @@ object (self) "\n" ^ GrafiteAstPp.pp_executable ~term_pp:(fun s -> s) ~lazy_term_pp:(fun _ -> assert false) ~obj_pp:(fun _ -> assert false) + ~map_unicode_to_tex:(Helm_registry.get_bool + "matita.paste_unicode_as_tex") (GrafiteAst.Tactic (loc, Some (GrafiteAst.Reduce (loc, kind, pat)), GrafiteAst.Semicolon loc)) in (MatitaScript.current ())#advance ~statement () in connect_menu_item copy gui#copy; connect_menu_item normalize (reduction_action `Normalize); - connect_menu_item reduce (reduction_action `Reduce); connect_menu_item simplify (reduction_action `Simpl); connect_menu_item whd (reduction_action `Whd); menu#popup ~button:right_button ~time @@ -434,43 +434,37 @@ object (self) let tactic_text_pattern = self#tactic_text_pattern_of_node node in GrafiteAstPp.pp_tactic_pattern ~term_pp:(fun s -> s) ~lazy_term_pp:(fun _ -> assert false) + ~map_unicode_to_tex:(Helm_registry.get_bool + "matita.paste_unicode_as_tex") tactic_text_pattern | `Term -> self#tactic_text_of_node node else string_of_dom_node node - method private string_of_cic_sequent cic_sequent = + method private string_of_cic_sequent ~output_type cic_sequent = let script = MatitaScript.current () in let metasenv = if script#onGoingProof () then script#proofMetasenv else [] in - (* - let _, (acic_sequent, _, _, ids_to_inner_sorts, _) = - Cic2acic.asequent_of_sequent metasenv cic_sequent in - let _, _, _, annterm = acic_sequent in - let ast, ids_to_uris = - TermAcicContent.ast_of_acic ids_to_inner_sorts annterm in - let pped_ast = TermContentPres.pp_ast ast in - let markup = CicNotationPres.render ids_to_uris pped_ast in - BoxPp.render_to_string text_width markup - *) let map_unicode_to_tex = - Helm_registry.get_opt Helm_registry.bool "matita.paste_unicode_as_tex" in - ApplyTransformation.txt_of_cic_sequent_conclusion ?map_unicode_to_tex - text_width metasenv cic_sequent + Helm_registry.get_bool "matita.paste_unicode_as_tex" in + ApplyTransformation.txt_of_cic_sequent_conclusion ~map_unicode_to_tex + ~output_type text_width metasenv cic_sequent - method private pattern_of term context unsh_sequent = - let context_len = List.length context in + method private pattern_of term father_hyp unsh_sequent = let _, unsh_context, conclusion = unsh_sequent in - try - (match - List.nth unsh_context (List.length unsh_context - context_len - 1) - with - | None -> assert false (* can't select a restricted hypothesis *) - | Some (name, Cic.Decl ty) -> - ProofEngineHelpers.pattern_of ~term:ty [term] - | Some (name, Cic.Def (bo, _)) -> - ProofEngineHelpers.pattern_of ~term:bo [term]) - with Failure _ | Invalid_argument _ -> - ProofEngineHelpers.pattern_of ~term:conclusion [term] + let where = + match father_hyp with + None -> conclusion + | Some name -> + let rec aux = + function + [] -> assert false + | Some (Cic.Name name', Cic.Decl ty)::_ when name' = name -> ty + | Some (Cic.Name name', Cic.Def (bo,_))::_ when name' = name-> bo + | _::tl -> aux tl + in + aux unsh_context + in + ProofEngineHelpers.pattern_of ~term:where [term] method private get_cic_info id = match self#cic_info with @@ -484,14 +478,17 @@ object (self) let cic_info, unsh_sequent = self#get_cic_info id in let cic_sequent = match self#get_term_by_id cic_info id with - | SelTerm (t, _father_hyp) -> + | SelTerm (t, father_hyp) -> +(* +IDIOTA: PRIMA SI FA LA LOCATE, POI LA PATTERN_OF. MEGLIO UN'UNICA pattern_of CHE PRENDA IN INPUT UN TERMINE E UN SEQUENTE. PER IL MOMENTO RISOLVO USANDO LA father_hyp PER RITROVARE L'IPOTESI PERDUTA +*) let occurrences = ProofEngineHelpers.locate_in_conjecture t unsh_sequent in (match occurrences with | [ context, _t ] -> (match paste_kind with | `Term -> ~-1, context, t - | `Pattern -> ~-1, [], self#pattern_of t context unsh_sequent) + | `Pattern -> ~-1, [], self#pattern_of t father_hyp unsh_sequent) | _ -> HLog.error (sprintf "found %d occurrences while 1 was expected" (List.length occurrences)); @@ -621,11 +618,11 @@ class sequentsViewer ~(notebook:GPack.notebook) ~(cicMathView:cicMathView) () = method load_logo = notebook#set_show_tabs false; - notebook#append_page logo + ignore(notebook#append_page logo) method load_logo_with_qed = notebook#set_show_tabs false; - notebook#append_page logo_with_qed + ignore(notebook#append_page logo_with_qed) method reset = cicMathView#remove_selections; @@ -650,7 +647,9 @@ class sequentsViewer ~(notebook:GPack.notebook) ~(cicMathView:cicMathView) () = _metasenv <- []; self#script#setGoal None - method load_sequents { proof = (_,metasenv,_,_, _) as proof; stack = stack } = + method load_sequents + { proof = (_,metasenv,_subst,_,_, _) as proof; stack = stack } + = _metasenv <- metasenv; pages <- 0; let win goal_switch = @@ -697,7 +696,8 @@ class sequentsViewer ~(notebook:GPack.notebook) ~(cicMathView:cicMathView) () = let add_tab markup goal_switch = let goal = Stack.goal_of_switch goal_switch in if not (List.mem goal !added_goals) then begin - notebook#append_page ~tab_label:(tab_label markup) (win goal_switch); + ignore(notebook#append_page + ~tab_label:(tab_label markup) (win goal_switch)); page2goal <- (!page, goal_switch) :: page2goal; goal2page <- (goal_switch, !page) :: goal2page; incr page; @@ -902,10 +902,6 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) ignore (win#toplevel#event#connect#delete (fun _ -> let my_id = Oo.id self in cicBrowsers := List.filter (fun b -> Oo.id b <> my_id) !cicBrowsers; - if !cicBrowsers = [] && - Helm_registry.get "matita.mode" = "cicbrowser" - then - GMain.quit (); false)); ignore(win#whelpResultTreeview#connect#row_activated ~callback:(fun _ _ -> @@ -930,8 +926,12 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) match self#currentCicUri with | Some uri -> self#load (`Metadata (`Deps (`Back, uri))) | None -> ()); + (* remove hbugs *) + (* connect_menu_item win#hBugsTutorsMenuItem (fun () -> self#load (`HBugs `Tutors)); + *) + win#hBugsTutorsMenuItem#misc#hide (); connect_menu_item win#browserUrlMenuItem (fun () -> win#browserUri#entry#misc#grab_focus ()); @@ -1039,7 +1039,6 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) | `About `Coercions -> self#coerchgraph true () | `Check term -> self#_loadCheck term | `Cic (term, metasenv) -> self#_loadTermCic term metasenv - | `Development d -> self#_showDevelDeps d | `Dir dir -> self#_loadDir dir | `HBugs `Tutors -> self#_loadHBugsTutors | `Metadata (`Deps ((`Fwd | `Back) as dir, uri)) -> @@ -1092,11 +1091,11 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) method private home () = self#_showMath; match self#script#grafite_status.proof_status with - | Proof (uri, metasenv, bo, ty, attrs) -> + | Proof (uri, metasenv, _subst, bo, ty, attrs) -> let name = UriManager.name_of_uri (HExtlib.unopt uri) in let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], attrs) in self#_loadObj obj - | Incomplete_proof { proof = (uri, metasenv, bo, ty, attrs) } -> + | Incomplete_proof { proof = (uri, metasenv, _subst, bo, ty, attrs) } -> let name = UriManager.name_of_uri (HExtlib.unopt uri) in let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], attrs) in self#_loadObj obj @@ -1110,7 +1109,7 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) self#_loadObj obj method private _loadDir dir = - let content = Http_getter.ls dir in + let content = Http_getter.ls ~local:false dir in let l = List.fast_sort Pervasives.compare @@ -1130,16 +1129,6 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) win#browserUri#entry#set_text (MatitaTypes.string_of_entry entry); current_entry <- entry - method private _showDevelDeps d = - match MatitamakeLib.development_for_name d with - | None -> () - | Some devel -> - (match MatitamakeLib.dot_for_development devel with - | None -> () - | Some fname -> - gviz#load_graph_from_file ~gviz_cmd:"tred | dot" fname; - self#_showGviz) - method private _loadObj obj = (* showMath must be done _before_ loading the document, since if the * widget is not mapped (hidden by the notebook) the document is not