coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Abhishek Anand <abhishek.anand.iitg AT gmail.com>
- To: coq-club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] unable to set up rewriting upto mod equivalence
- Date: Tue, 5 Nov 2019 07:25:32 -0800
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=abhishek.anand.iitg AT gmail.com; spf=Pass smtp.mailfrom=abhishek.anand.iitg AT gmail.com; spf=None smtp.helo=postmaster AT mail-io1-f54.google.com
- Ironport-phdr: 9a23:Iaq/VxzZ6B+HwkHXCy+O+j09IxM/srCxBDY+r6Qd2+oRIJqq85mqBkHD//Il1AaPAdyArasd1qGJ7ejJYi8p2d65qncMcZhBBVcuqP49uEgeOvODElDxN/XwbiY3T4xoXV5h+GynYwAOQJ6tL1LdrWev4jEMBx7xKRR6JvjvGo7Vks+7y/2+94fcbglVijexe65+IAi2oAnetMQbgJZpJ7osxBfOvnZGYfldy3lyJVKUkRb858Ow84Bm/i9Npf8v9NNOXLvjcaggQrNWEDopM2Yu5M32rhbDVheA5mEdUmoNjBVFBRXO4QzgUZfwtiv6sfd92DWfMMbrQ704RSiu4qF2QxLulSwJNSM28HvPh8N/gqJUohKvqRJ8zYDJfo+aKOFzcbnBcd4AX2dNQtpdWi5HD4ihb4UPFe0BPeNAooThvFQOrRq+BRKsBOzxyT9Dm2P73asg3OQnDA7NwQstEMgVv3TUrdX1L6cSXv62zKXS1zrDaelZ2THg54TScxAhoO2MXb1rfMrezEkgDQLFjlGKpYP5ODOV0/0Avm6G5ORuUuKvjnQoqwB3ojW32sgsjZPJhoQLxVDA8SV12pg6KsClSEN9fNWqE4NQujmEO4dqRs4uWWJltSYgxrEbuJO2fTIGxZQoyhPZdveJaZKH4gj5W+aUOTp4hGxqeLa4hxuq9Eiv0Oz8Vs2t3FZLqSpJj8DAtn4N2hHc8MSHRfx9/kCu2TaLyQ/f8P1LIUcxlabDKp4hxKA/loYLvEjdAiP7nF/6gayWe0k+5+Sl6uXqbq/mq5KTL4N0jxvxMqUqmsyxG+Q4NQ0OUnCB9uun1L3j/Fb5QLVUgf01iKXWqpbaKt4dpqGkGQNV04cj6wqwDzq939QYmGMILFNBeB6dk4fpPFTOLOjiDfijm1SsjCtrx/feM7L9BZXNN2HPn6vlfbZg8EFR0xEzzNBa55JMEL4NOvPzWknrtNzZFBA1KQK0w/y0QOl6g4gZQCeEBrKTePfZtkbN7eYyKcGNYpUUsXDzMa52yeTpiCoQk18cZqmk3tM+bnm+ErwyKk+ZYGHsj9RHGGEDuAZ4Te32h3WNVDdSYzC5WKdqtWJzM56vEYqWHtPlu7eGxiruRsQLNFADMUiFFDLTT6vBW/oIb3jPcMpokzhBVL/4DoF8iVehswj1z7chJe3RqHVB6cDTkeNt7uiWrikcsCRuBp3EgW6IRmBw2GgPQm1uhfEtkQlG0l6GlJNArbldHN1X6elOV15jZ5HZxu1+Tdv1X1CYcw==
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.