X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Ftactics%2FequalityTactics.ml;h=94cb0624bacd7911e184631750ef5fb97b7bc3a4;hb=d1126c6b78a3333bbf415daf027004496b77c2f4;hp=7eae7fb5c0ee402d0761dd39df7fe4050d7ad4ce;hpb=016e4c6fc449b50ac19e73eb952cfb2dc64f4398;p=helm.git diff --git a/helm/ocaml/tactics/equalityTactics.ml b/helm/ocaml/tactics/equalityTactics.ml index 7eae7fb5c..94cb0624b 100644 --- a/helm/ocaml/tactics/equalityTactics.ml +++ b/helm/ocaml/tactics/equalityTactics.ml @@ -71,7 +71,9 @@ let rewrite_tac ~direction ~pattern equality = let lifted_gty = CicSubstitution.lift 1 gty in let lifted_conjecture = metano,(Some (fresh_name,Cic.Decl ty))::context,lifted_gty in - let lifted_pattern = Some lifted_t1,[],CicSubstitution.lift 1 concl_pat in + let lifted_pattern = + Some (fun _ m u -> lifted_t1, m, u),[],CicSubstitution.lift 1 concl_pat + in let subst,metasenv',ugraph,_,selected_terms_with_context = ProofEngineHelpers.select ~metasenv:metasenv' ~ugraph ~conjecture:lifted_conjecture @@ -103,11 +105,9 @@ let rewrite_tac ~direction ~pattern equality = (PT.exact_tac ~term:exact_proof) ((curi,metasenv',pbo,pty),goal) in assert (List.length goals = 0) ; - let goals = List.map (fun (i,_,_) -> i) metasenv' in let goals = - List.filter - (fun i -> - not (List.exists (fun (j,_,_) -> i=j) metasenv)) goals + ProofEngineHelpers.compare_metasenvs ~oldmetasenv:metasenv + ~newmetasenv:metasenv' in (proof',goals) in @@ -128,19 +128,25 @@ 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, metasenv, u = with_what context metasenv u 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 @@ -225,7 +231,6 @@ let replace_tac ~pattern ~with_what = aux 0 whats status in ProofEngineTypes.mk_tactic (replace_tac ~pattern ~with_what) -*) assert false ;;