coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Samuel Gruetter <gruetter AT mit.edu>
- To: "coq-club AT inria.fr" <coq-club AT inria.fr>
- Subject: [Coq-Club] morphism option of ring tactic
- Date: Mon, 6 Aug 2018 19:56:51 +0000
- Accept-language: en-US
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gruetter AT mit.edu; spf=Pass smtp.mailfrom=gruetter AT mit.edu; spf=None smtp.helo=postmaster AT dmz-mailsec-scanner-1.mit.edu
- Ironport-phdr: 9a23:QnVlgRXt6WNcGiQqVVCYhO419EvV8LGtZVwlr6E/grcLSJyIuqrYbBSFt8tkgFKBZ4jH8fUM07OQ7/i+HzRYqb+681k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba9zIRmssQndqtQdjJd/JKo21hbHuGZDdf5MxWNvK1KTnhL86dm18ZV+7SleuO8v+tBZX6nicKs2UbJXDDI9M2Ao/8LrrgXMTRGO5nQHTGoblAdDDhXf4xH7WpfxtTb6tvZ41SKHM8D6Uaw4VDK/5KptVRTmijoINyQh/W/XlMJ+kb5brhyiqRx+34Hab46aOeFifqzGZ94WWXZNUtpTWiFHH4iyb5EPD+0EPetAsofyvV4OrQagCgmoGejhyyVIhmLo0q0mz+QuDxvG1xEnEtIBqnTUscv6NLsOUe+r1qnF1jDDb/JK2Tvn9ofHbw0hrOiKULltf8TRzkwvGBnEjlWWsYHkPima1v4Ms2iH7+psT+Wvi3Y5pAF3pDWk28QiipHRi44IyV3I7yF0zJwrKdC4UkJ3fMCoHINSuiyULYd6X98uT31ytConyLALuIS3cDYWxJg/2hLSaviKf5KW7h/jW+udOyp0iGh4dL6hmxq/91WrxPfmWcmuyllKqzJIktnSuXAJ0Bze8tWISv58/0u43DaAzQHT6uVfIU8qiaXXMoUhzaIqmZoVt0TMADX2lFzrgKOMc0Uk+/So5/75bbr7u5+QL450igfgPaQygsGzHOc1PhIKUmSB5+ix1Kfv8VDnTLlSi/05iKjZsJTUJcQBoa65BhdY0ok56xaiETimzMgYkmcdLF9efRKHjpTpN0vQL//lEPezm06snytzx/DaIr3hBY3AIWTEkLf4ZLpy90pcyBcowt1E/JJVCrQBIOrpVUPrtdzYCAU5Mw2uzOr9BtV9zNBWZWXaSKSeKebZtUKCzuMpOeiFIoEP8n6pIP88ovXqkHURmFkHfKDv04FBO16iGfEzGEycfHfoyvgbDGoWogckBLjlkkCPTSJefV63Xr566z0mXtH1RbzfT5yg1eTSlBywGYdbMzgfWwK8VEzwfoDBYM8iLSebI8tviDsBBOqkSpNn2B2z5lajl+hXa9HM8yhdjqrNkcBv7ryBkBAuszF4EpbFijzffyRPhmoNAgQO8uV/rEh6kQ7R3a1qxvlRFNhI6vgMSQwzM5jR1akjTdXzRkTMcsrbEFs=
Dear Coq-club,
I'm trying to figure out how to use the "morphism" option of of the
"Add Ring" command.
I have the following:
Require Import Coq.ZArith.ZArith.
Open Scope Z_scope.
Class Reg(t: Set) := mkReg {
add: t -> t -> t;
sub: t -> t -> t;
mul: t -> t -> t;
ZToReg: Z -> t;
regRing: @ring_theory t (ZToReg 0) (ZToReg 1) add mul sub
(fun x => sub (ZToReg 0) x) (@eq t);
ZToReg_morphism:
@ring_morph t (ZToReg 0) (ZToReg 1) add mul sub
(fun x => sub (ZToReg 0) x) (@eq t)
Z 0 1 Z.add Z.mul Z.sub Z.opp Z.eqb
ZToReg;
}.
Section FlatToRiscv.
Context {mword: Set}.
Context {MW: Reg mword}.
Add Ring mword_ring :
(@regRing mword MW) (morphism (@ZToReg_morphism mword MW)).
(* I'd like to solve the following goal automatically using "ring": *)
Goal forall (x y: Z),
add (ZToReg x) (ZToReg y) = ZToReg (x + y).
Proof.
intros.
(* but it fails! *)
Fail ring.
(* however, the morphism I provided to "Add Ring" does contain a
lemma which can solve this goal: *)
rewrite (ZToReg_morphism.(morph_add)).
reflexivity.
Qed.
(* So, am I expecting too much of "ring"? Or am I not using it properly? *)
(* And for reference, here's a more realistic example of what kind of
goal I'd like to solve with "ring": *)
Goal forall (P : mword) (L : Z),
add (add P (mul (ZToReg 4) (ZToReg L))) (ZToReg 4) =
add P (mul (ZToReg 4) (ZToReg (L + 1))).
Proof.
intros.
rewrite (ZToReg_morphism.(morph_add)).
ring.
Qed.
(* My question is:
Can I get rid of the "rewrite (ZToReg_morphism.(morph_add))"? *)
End FlatToRiscv.
Thanks!
Sam
- [Coq-Club] morphism option of ring tactic, Samuel Gruetter, 08/06/2018
- RE: [Coq-Club] morphism option of ring tactic, Soegtrop, Michael, 08/07/2018
- RE: [Coq-Club] morphism option of ring tactic, Soegtrop, Michael, 08/07/2018
- Re: [Coq-Club] morphism option of ring tactic, Samuel Gruetter, 08/08/2018
- RE: [Coq-Club] morphism option of ring tactic, Soegtrop, Michael, 08/08/2018
- Re: [Coq-Club] morphism option of ring tactic, Samuel Gruetter, 08/10/2018
- RE: [Coq-Club] morphism option of ring tactic, Soegtrop, Michael, 08/08/2018
- Re: [Coq-Club] morphism option of ring tactic, Samuel Gruetter, 08/08/2018
- RE: [Coq-Club] morphism option of ring tactic, Soegtrop, Michael, 08/07/2018
- RE: [Coq-Club] morphism option of ring tactic, Soegtrop, Michael, 08/07/2018
Archive powered by MHonArc 2.6.18.