]> matita.cs.unibo.it Git - helm.git/commitdiff
Replace is now working again and it is able to match the pattern up to
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Fri, 8 Jul 2005 14:01:26 +0000 (14:01 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Fri, 8 Jul 2005 14:01:26 +0000 (14:01 +0000)
unification.

helm/matita/tests/replace.ma
helm/ocaml/tactics/equalityTactics.ml

index 7117d5b8210b29f4b64d34628eba978f6999d96e..d209e97d42f6fb6ea474d5dcfc8486a0943ecf01 100644 (file)
@@ -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.
index 99bfd2081c83e46c5c6426da02e0225a06611b65..a14a418bf5326808d8569b40e15b121468f0ab4b 100644 (file)
@@ -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
 ;;