From: Claudio Sacerdoti Coen Date: Fri, 8 Jul 2005 14:01:26 +0000 (+0000) Subject: Replace is now working again and it is able to match the pattern up to X-Git-Tag: pre_notation~69 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=1e3ecdc411ef77f18c1d090b615f2dc665af0313;p=helm.git Replace is now working again and it is able to match the pattern up to unification. --- diff --git a/helm/matita/tests/replace.ma b/helm/matita/tests/replace.ma index 7117d5b82..d209e97d4 100644 --- a/helm/matita/tests/replace.ma +++ b/helm/matita/tests/replace.ma @@ -17,3 +17,8 @@ theorem t: \forall x:nat. x * (x + 0) = (0 + x) * (x + x * 0). reflexivity. auto. qed. + +(* This test tests "replace in match t" where t contains some metavariables *) +theorem t2: 2 + (3 * 4) = (5 + 5) + 2 * 2. + replace in match 5+? with 6 + 4; [reflexivity | reflexivity]. +qed. diff --git a/helm/ocaml/tactics/equalityTactics.ml b/helm/ocaml/tactics/equalityTactics.ml index 99bfd2081..a14a418bf 100644 --- a/helm/ocaml/tactics/equalityTactics.ml +++ b/helm/ocaml/tactics/equalityTactics.ml @@ -126,19 +126,24 @@ let rewrite_simpl_tac ~direction ~pattern equality = ;; let replace_tac ~pattern ~with_what = -(* let replace_tac ~pattern:(wanted,hyps_pat,concl_pat) ~with_what status = let (proof, goal) = status in let module C = Cic in let module U = UriManager in let module P = PrimitiveTactics in let module T = Tacticals in - let _,metasenv,_,_ = proof in + let uri,metasenv,pbo,pty = proof in let (_,context,ty) as conjecture = CicUtil.lookup_meta goal metasenv in assert (hyps_pat = []); (*CSC: not implemented yet *) let context_len = List.length context in - let _,selected_terms_with_context = - ProofEngineHelpers.select ~metasenv ~conjecture ~pattern in + let subst,metasenv,u,_,selected_terms_with_context = + ProofEngineHelpers.select ~metasenv ~ugraph:CicUniv.empty_ugraph + ~conjecture ~pattern in + let metasenv = CicMetaSubst.apply_subst_metasenv subst metasenv in + let with_what = CicMetaSubst.apply_subst subst with_what in + let pbo = CicMetaSubst.apply_subst subst pbo in + let pty = CicMetaSubst.apply_subst subst pty in + let status = (uri,metasenv,pbo,pty),goal in let ty_of_with_what,u = CicTypeChecker.type_of_aux' metasenv context with_what CicUniv.empty_ugraph in @@ -223,7 +228,6 @@ let replace_tac ~pattern ~with_what = aux 0 whats status in ProofEngineTypes.mk_tactic (replace_tac ~pattern ~with_what) -*) assert false ;;