X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fcomponents%2Fgrafite_parser%2FgrafiteParser.ml;h=eaf0c4c01097e10ef8aa02ec60ee202ce7cb818a;hb=489639a3c319d0349a9c864fd0eeaf659daa3d3f;hp=803051e6900ae5facb67fc57e9556550a583da9a;hpb=433e66b381d1b89e48c05d517494fc300fd0abb5;p=helm.git diff --git a/matita/components/grafite_parser/grafiteParser.ml b/matita/components/grafite_parser/grafiteParser.ml index 803051e69..eaf0c4c01 100644 --- a/matita/components/grafite_parser/grafiteParser.ml +++ b/matita/components/grafite_parser/grafiteParser.ml @@ -243,6 +243,8 @@ EXTEND IDENT "equivalent"; "to"; t' = tactic_term -> t']-> G.NTactic (loc,[G.Assume (loc,id,t,t1)]) | IDENT "suppose" ; t = tactic_term ; LPAREN ; id = IDENT ; RPAREN ; t1 = OPT [IDENT "that"; IDENT "is"; IDENT "equivalent"; "to"; t' = tactic_term -> t'] -> G.NTactic (loc,[G.Suppose (loc,t,id,t1)]) + | "let"; name = IDENT ; SYMBOL <:unicode> ; t = tactic_term -> + G.NTactic(loc,[G.NLetIn (loc,(None,[],Some N.UserInput),t,name)]) | just = [ IDENT "using"; t=tactic_term -> `Term t | params = auto_params -> @@ -260,14 +262,92 @@ EXTEND BYC_done -> G.Bydone (loc, just) | BYC_weproved (ty,id,t1) -> G.By_just_we_proved(loc, just, ty, id, t1) - (* | BYC_letsuchthat (id1,t1,t2,id2) -> G.ExistsElim (loc, just, id1, t1, t2, id2) | BYC_wehaveand (id1,t1,id2,t2) -> - G.AndElim (loc, just, id1, t1, id2, t2)*)) + G.AndElim (loc, just, t1, id1, t2, id2)) ]) | IDENT "we" ; IDENT "need" ; "to" ; IDENT "prove" ; t = tactic_term ; id = OPT [ LPAREN ; id = IDENT ; RPAREN -> id ] ; t1 = OPT [IDENT "or" ; IDENT "equivalently"; t' = tactic_term -> t']-> G.NTactic (loc,[G.We_need_to_prove (loc, t, id, t1)]) + | IDENT "the" ; IDENT "thesis" ; IDENT "becomes" ; t1=tactic_term ; t2 = OPT [IDENT "or"; IDENT + "equivalently"; t2 = tactic_term -> t2] -> + G.NTactic (loc,[G.Thesisbecomes(loc,t1,t2)]) + | IDENT "we" ; IDENT "proceed" ; IDENT "by" ; IDENT "cases" ; "on" ; t=tactic_term ; "to" ; IDENT "prove" ; t1=tactic_term -> + G.NTactic (loc,[G.We_proceed_by_cases_on (loc, t, t1)]) + | IDENT "we" ; IDENT "proceed" ; IDENT "by" ; IDENT "induction" ; "on" ; t=tactic_term ; "to" ; IDENT "prove" ; t1=tactic_term -> + G.NTactic (loc,[G.We_proceed_by_induction_on (loc, t, t1)]) + | IDENT "by" ; IDENT "induction" ; IDENT "hypothesis" ; IDENT "we" ; IDENT "know" ; t=tactic_term ; LPAREN ; id = IDENT ; RPAREN -> + G.NTactic (loc,[G.Byinduction(loc, t, id)]) + | IDENT "case" ; id = IDENT ; params=LIST0[LPAREN ; i=IDENT ; + SYMBOL":" ; t=tactic_term ; RPAREN -> i,t] -> + G.NTactic (loc,[G.Case(loc,id,params)]) + | IDENT "print_stack" -> G.NTactic (loc,[G.PrintStack loc]) + (* DO NOT FACTORIZE with the two following, camlp5 sucks*) +(* + | IDENT "conclude"; + termine = tactic_term; + SYMBOL "=" ; + t1=tactic_term ; + t2 = + [ IDENT "using"; t=tactic_term -> `Term t + | IDENT "using"; IDENT "once"; term=tactic_term -> `SolveWith term + | IDENT "proof" -> `Proof + | params = auto_params -> `Auto + ( + let just,params = params in + match just with + | None -> (None,params) + | Some (`Univ univ) -> (Some univ,params) + (* `Trace behaves exaclty like None for the moment being *) + | Some (`Trace) -> (None,params) + ) + ]; + cont = rewriting_step_continuation -> + G.NTactic (loc,[G.RewritingStep(loc, Some (None,termine), t1, t2, cont)]) + | IDENT "obtain" ; name = IDENT; + termine = tactic_term; + SYMBOL "=" ; + t1=tactic_term ; + t2 = + [ IDENT "using"; t=tactic_term -> `Term t + | IDENT "using"; IDENT "once"; term=tactic_term -> `SolveWith term + | IDENT "proof" -> `Proof + | params = auto_params -> `Auto + ( + let just,params = params in + match just with + | None -> (None,params) + | Some (`Univ univ) -> (Some univ,params) + (* `Trace behaves exaclty like None for the moment being *) + | Some (`Trace) -> (None,params) + ) + ]; + cont = rewriting_step_continuation -> + G.NTactic(loc,[G.RewritingStep(loc, Some (Some name,termine), t1, t2, cont)]) +*) + | IDENT "obtain" ; name = IDENT; + termine = tactic_term -> + G.NTactic(loc,[G.Obtain(loc, name, termine)]) + | IDENT "conclude" ; termine = tactic_term -> + G.NTactic(loc,[G.Conclude(loc, termine)]) + | SYMBOL "=" ; + t1=tactic_term ; + t2 = + [ IDENT "using"; t=tactic_term -> `Term t + | IDENT "using"; IDENT "once"; term=tactic_term -> `SolveWith term + | IDENT "proof" -> `Proof + | params = auto_params -> `Auto + ( + let just,params = params in + match just with + | None -> (None,params) + | Some (`Univ univ) -> (Some univ,params) + (* `Trace behaves exaclty like None for the moment being *) + | Some (`Trace) -> (None,params) + ) + ]; + cont = rewriting_step_continuation -> + G.NTactic(loc,[G.RewritingStep(loc, t1, t2, cont)]) ] ]; auto_fixed_param: [