Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] unable to set up rewriting upto mod equivalence

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] unable to set up rewriting upto mod equivalence


Chronological Thread 
  • 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: Tue, 5 Nov 2019 14:29:23 +0800
  • Authentication-results: mail3-smtp-sop.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-oi1-f173.google.com
  • Ironport-phdr: 9a23:xjq3vxPRvAjBRRGWutYl6mtUPXoX/o7sNwtQ0KIMzox0Lfn9rarrMEGX3/hxlliBBdydt6sfzbOP7+uxBCQp2tWoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6nK94iQPFRrhKAF7Ovr6GpLIj8Swyuu+54Dfbx9HiTagb75+Ngi6oRjeu8UZhYZvKrs6xwfUrHdPZ+lY335jK0iJnxb76Mew/Zpj/DpVtvk86cNOUrj0crohQ7BAAzsoL2465MvwtRneVgSP/WcTUn8XkhVTHQfI6gzxU4rrvSv7sup93zSaPdHzQLspVzmu87tnRRn1gyoBKjU38nzYitZoga1UrhKupRxxzYDXbo+IKvRxYrjQcskGSWdbRMtdSzBND4G6YoASD+QBJ+FYr4zlqlYQtxS+AhSnCvjuyj9OiX723Lc10+IuEQrb2wEvA8gBsHPNrNX0MqcTXuG1w7POzTXMdP5W1jL955LJchAlu/2DQbVwcc/IxEQpCgjLgFKQqYn/MDOU0OQAq3SU7+16VeKplWEnrwVxriKxycgxl4nEgJ8exFPc9Shh3oo5Odm1RFR4bNOkCpdcqiCXOolsTs8/QWxltiA3waAct5GhZigF0pEnygbfa/OZd4iI5QruVOOLLjd5gHJpYbW/hxev/US5xO3wS8u53VhQoipKldnMsX8N1xjN5cSdVvR9+UKh1S6O1wDV9O5EPVg5mbTHJ5Ml2LI9lZoevV7eEiL3mkj6lrKae0cq9+Sw7uToeLTmppuSN49ujQH+N7wjldClDuQ/KwgOXm6b+Ou91LL5+035T65HjvIzkqbDsZDaId4XqbK+Aw9Qyooj8QqwDy+60NQEmnkKNE5KeBWej4TwJ17OJO34AuykjlS3kDZrwujGMaf7DpXMKHjDirbhcqxn505S0gpghexYsplTE/QKJO/5ck73rt3RSBEjYCKuxOOyI9x6nrofX3KOC6mWePfZuFiR5+Q/IuCKa6cavT/8L74u4Pu43ixxokMUYaT8hchfU3u/BPkzexzFM0qpuc8IFCIxhiR7VPbj0QTQXjtaZnL0VKU5tGliWdCWSLzbT4Xou4SvmSKyH5lYfGdDUwneHnLhdoHCUPAJOnvLf51R1wccXL3kcLcPkBGjsAiglehiJ+vQvyoZ7NftjYcuoeLUkh42+Hp/CMHPi2w=

The following line should work:

rewrite (modEq0 d) at 2.

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 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.



Archive powered by MHonArc 2.6.18.

Top of Page