coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Cao Qinxiang <caoqinxiang AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] unable to set up rewriting upto mod equivalence
- Date: Wed, 6 Nov 2019 00:46:29 +0800
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=caoqinxiang AT gmail.com; spf=Pass smtp.mailfrom=caoqinxiang AT gmail.com; spf=None smtp.helo=postmaster AT mail-ot1-f50.google.com
- Ironport-phdr: 9a23:JHNVqhK3Few348UmLdmcpTZWNBhigK39O0sv0rFitYgRL/zxwZ3uMQTl6Ol3ixeRBMOHsqkC0rOL+PG5EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQpFiCezbL9oMRm6sAXcusYSjId/N6081gbHrnxUdupM2GhmP0iTnxHy5sex+J5s7SFdsO8/+sBDTKv3Yb02QaRXAzo6PW814tbrtQTYQguU+nQcSGQWnQFWDAXD8Rr3Q43+sir+tup6xSmaIcj7Rq06VDi+86tmTgLjhSEaPDA77W7XkNR9g61VoB2jpxJxzY3abpyLOvViZa7SZ88WSHBbU8pNSyBMAIWxZJYPAeobOuZYqpHwqkUUohu5GAKiH+LvyjlHh3/3x6I61eshGhzB0QM8Bd0Ot23UrNTzNKYdUOC61q/IzTrYYvNZ3Dfy8onIchQ7rf6QWrJwdNPcxE8yHA3LiVWQrJbqPzKT1ukVr2eb6PBgVeSxhG4jrwF9uCagydoxioTPm4kbyUjE+D1nzIopIdC0Uk12bN6+HJdOqi2WK5F6T8M+T2xupS000KcJuYShcygP0JknxwDQa/iAc4WQ5xLsTueRITNhiHJiZLKzmg++8Uagx+HgTMW031FKri1KktnIqH8BzQDc6s+CSvdl/0eh3yiA1xzL5+1aPUw5kbDXJp0hz7IqiJYfrFjPEjX2lUnqlKOWc18r+ums6+TpeLXmoZqcOpdohQ7kNaQug82/AeI3MwgPRWeb/+u82abs/U38WrpKj/k2nrPFv5DdIMQXvrS5DBNN0oY/9xa/CC+r38gfnXkeNV5KZBaHj5XyNFzVO/D5DfK/g0y2nztxxvDGOKfhApTXIXTZnrfhZ+U110kJww0qiNtb+ph8C7cbIfu1VFWimsbfC0oSOgv8+ufhGNR00IxWDWmGBbaYNrPTuFmHzu0qKuiIIoQSvWCueLAe+/fygCphyhcmdq6z0M5PMS3qLrFdO0ycJEHUrJIBHGMN5FdsSeXrjBiFTWcWaSvqGa074T4/BcStCoKRHtn80ozE5z+yG9htXk4DD1mNFXnycIDdAqUDbSuTJolqlTlWDOH9Gb9k7gmnsUrB85QiNvDdo3RKupfq1dwz7OrWx0k/
Dear Abhishek,
If rewrite (modEq0 d), it is to replace "d" in : "(fun d0 => modEq d0 (d0 + a - b) ?1) d", which cannot succeed.
Best,
Qinxiang Cao
Shanghai Jiao Tong University, John Hopcroft Center
Room 1110-2, SJTUSE Building
800 Dongchuan Road, Shanghai, China, 200240
On Tue, Nov 5, 2019 at 11:27 PM Abhishek Anand <abhishek.anand.iitg AT gmail.com> wrote:
Thanks. That worked.Is it a bug that `rewrite (modEq0 d) at 2` succeeds but `rewrite (modEq0 d)` doesn't? I thought the "at ..." suffix was used to prevent rewriting at unneeded places, not to make the rewrite succeed.On Mon, Nov 4, 2019 at 10:30 PM Cao Qinxiang <caoqinxiang AT gmail.com> wrote:The following line should work:rewrite (modEq0 d) at 2.Qinxiang CaoShanghai Jiao Tong University, John Hopcroft CenterRoom 1110-2, SJTUSE Building800 Dongchuan Road, Shanghai, China, 200240On Tue, Nov 5, 2019 at 1:32 PM Abhishek Anand <abhishek.anand.iitg AT gmail.com> wrote:I tried to set up rewriting up to mod equivalence (see modEq below).`rewrite` does not seem to work in the last lemma below even though I can prove it manually using only the declared instances.Require Import ZArith.
Open Scope Z_scope.
Require Import Morphisms.
Definition modEq (d:Z) := fun (a b :Z)=> a mod d = b mod d.
Global Instance modProperAdd (d:Z) :
Proper ((modEq d) ==> (modEq d) ==>(modEq d)) Z.add.
Proof using.
intros a b Hx e f Hy.
unfold modEq in *.
rewrite Zplus_mod.
symmetry.
rewrite Zplus_mod.
f_equal.
congruence.
Qed.
Global Instance modProperSub (d:Z) :
Proper ((modEq d) ==> (modEq d) ==>(modEq d)) Z.sub.
Proof using.
intros a b Hx e f Hy.
unfold modEq in *.
rewrite Zminus_mod.
symmetry.
rewrite Zminus_mod.
f_equal.
congruence.
Qed.
Lemma modEqRw (d a b:Z) :
modEq d a b -> a mod d = b mod d.
Proof using.
tauto.
Qed.
Global Instance modEqR (d:Z): Reflexive (modEq d).
Proof using.
hnf. intros. unfold modEq in *. congruence.
Qed.
Global Instance modEqS (d:Z): Symmetric (modEq d).
Proof using.
hnf. intros. unfold modEq in *. congruence.
Qed.
Global Instance modEqT (d:Z): Transitive (modEq d).
Proof using.
hnf. intros. unfold modEq in *. congruence.
Qed.
Lemma modEq0 (d:Z): modEq d d 0.
Proof using.
hnf. rewrite Z_mod_same_full.
reflexivity.
Qed.
Global Instance modProperOpp (d:Z) :
Proper ((modEq d) ==> (modEq d)) Z.opp.
Admitted.
Lemma rwTest (d a b:Z):
(d+a-b) mod d = (a-b) mod d.
Proof using.
erewrite modEqRw.
2:{
Fail rewrite modEq0. (* help! why does this fail? *)
apply modProperAdd;[ | reflexivity].
apply modProperAdd;[ | reflexivity].
apply modEq0.
}
reflexivity.
Qed.Thanks.-- Abhishekhttp://www.cs.cornell.edu/~aa755/
- [Coq-Club] unable to set up rewriting upto mod equivalence, Abhishek Anand, 11/05/2019
- Re: [Coq-Club] unable to set up rewriting upto mod equivalence, Cao Qinxiang, 11/05/2019
- Re: [Coq-Club] unable to set up rewriting upto mod equivalence, Abhishek Anand, 11/05/2019
- Re: [Coq-Club] unable to set up rewriting upto mod equivalence, Cao Qinxiang, 11/05/2019
- Re: [Coq-Club] unable to set up rewriting upto mod equivalence, Abhishek Anand, 11/05/2019
- Re: [Coq-Club] unable to set up rewriting upto mod equivalence, Cao Qinxiang, 11/05/2019
Archive powered by MHonArc 2.6.18.