From: Enrico Tassi Date: Tue, 24 May 2005 13:33:48 +0000 (+0000) Subject: added simpl X-Git-Tag: single_binding~14 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=7564f3a87499807bfc15bc488bd6452dc0392b62;p=helm.git added simpl --- diff --git a/helm/matita/matitaDb.ml b/helm/matita/matitaDb.ml index 878bd4fe7..aef37a2d0 100644 --- a/helm/matita/matitaDb.ml +++ b/helm/matita/matitaDb.ml @@ -65,7 +65,10 @@ let clean_owner_environment () = (fun uri -> let uri = Pcre.replace ~rex:xpointer_RE ~templ:"" uri in List.iter - (fun suffix -> Http_getter.unregister (uri ^ suffix)) + (fun suffix -> + (*prerr_endline ("unregistering " ^ uri ^ suffix);*) + Http_getter.unregister (uri ^ suffix)) + [""; ".body"; ".types"]) owned_uris; List.iter (fun statement -> diff --git a/helm/matita/matitaEngine.ml b/helm/matita/matitaEngine.ml index 7e7ac5641..4ca54d0e4 100644 --- a/helm/matita/matitaEngine.ml +++ b/helm/matita/matitaEngine.ml @@ -56,9 +56,19 @@ let tactic_of_ast = function | TacticAst.Fold of reduction_kind * 'term | TacticAst.Injection of 'ident | TacticAst.LetIn of 'term * 'ident - | TacticAst.Reduce of reduction_kind * 'term pattern * 'ident option | TacticAst.Replace_pattern of 'term pattern * 'term *) + | TacticAst.Reduce (_,reduction_kind,opts) -> + let terms, also_in_hypotheses = + match opts with + | Some (l,`Goal) -> Some l, false + | Some (l,`Everywhere) -> Some l, true + | None -> None, false + in + (match reduction_kind with + | `Reduce -> Tactics.reduce ~also_in_hypotheses ~terms + | `Simpl -> Tactics.simpl ~also_in_hypotheses ~terms + | `Whd -> Tactics.whd ~also_in_hypotheses ~terms) | TacticAst.Rewrite (_,dir,t,ident) -> if dir = `Left then EqualityTactics.rewrite_tac ~term:t @@ -297,9 +307,22 @@ let disambiguate_tactic status = function | TacticAst.Fold of reduction_kind * 'term | TacticAst.Injection of 'ident | TacticAst.LetIn of 'term * 'ident - | TacticAst.Reduce of reduction_kind * 'term pattern * 'ident option | TacticAst.Replace_pattern of 'term pattern * 'term *) + | TacticAst.Reduce (loc, reduction_kind, opts) -> + let status, opts = + match opts with + | None -> status, None + | Some (l,pat) -> + let status, l = + List.fold_right (fun t (status,acc) -> + let status',t' = disambiguate_term status t in + status', t'::acc) + l (status,[]) + in + status, Some (l, pat) + in + status, TacticAst.Reduce (loc, reduction_kind, opts) | TacticAst.Rewrite (loc,dir,t,ident) -> let status, term = disambiguate_term status t in status, TacticAst.Rewrite (loc,dir,term,ident)