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: Re: [Coq-Club] rewrite as many occurrences as possible
- Date: Tue, 12 Oct 2021 03:10:43 +0000
- Accept-language: en-US
- Authentication-results: mail2-smtp-roc.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 outgoing-exchange-7.mit.edu
- Ironport-hdrordr: A9a23:/Z3msqju4XKMz8nVSMUvYr7kzHBQXr0ji2hC6mlwRA09TyX+raGTdZUguyMc5wxhO03I9erwWpVoIkmyyXcK2+ks1N6ZNWGM0ldAR7sP0WKN+VDdJxE=
- Ironport-phdr: A9a23:hm614ByELA4g8erXCzJpylBlVkEcU1XcAAcZ59Idhq5Udez7ptK+ZhSZtKwm0QCBdL6YwsoMs/DRvaHkVD5Iyre6m1dGTqZxUQQYg94dhQ0qDZ3NI0T6KPn3c35yR5waBxdq8H6hLEdaBtv1aUHMrX2u9z4SHQj0ORZoKujvFYPekdi72/q29pHObAlFhDiwaq5uIRurqgncqtMYipZ4JKYrzRvJrHpIe+BIym5tOFmegRXy6Nqu8ZB66yhftO4v+MBGUaXhYqQ3VqdYAyg8M2A0/8Lkqx/ORhaS63QGU2UWlh1IAxXZ7Bz/Q5z8vDf2uvZ71SKHO8D9ULI6Vim476pzSBHmljoJNyI3/m/UhMx/jqNbrw6uqRNw2IPUfJqaOeBicq/BYd8XR2xMVdtRWSxbBYO8apMCAfcbMuZdsonyuV8Opga/Cwm2GePg1CNIhmPo0q0gzu8sFg7G3BY9H90QrHTUsMv6NL0JXOCwzanI0S/PYO1L1jfg8YXFdA0qrv6QU7xqa8XR1VUvGB3fjlWWsYHpIS6Z2+YRv2WF7edtW+2hhmo6pgxxvzSj29oghpTGiIwVyF3K+iV3zYQ7K9CmSEN2f8KoHZpeuS2EKod7XswsTmd1syg0zb0GvIS0fCkMyJk/yB7fauCHc4iV4h34TuqePTB4hHd9dL2jgBay606gxfP4VsmwylpFsDdKksTKu3sQ1BLT8tCKRuZ+80u73TuDzR7f5+JeLU00lqfXM58sz78qmpcdrUjPBDL6lFj1gaOMa0kp+vCk5/nkb7n8opKQLYB5hhvjPqgzlcGyB/kzPBIUUGiB4+u80aXu/U3nT7VOif07iq7ZsI3GJcQUoa65AglV0ok65xmhADapzNQYkmMBLFJKZh2LlorkN0vLIPD5EfezmUqjnyp2x/zeP73hBIvCLmTbnbv8frtx8UpRxBAtwd1c/Z5ZCrIMLOr2WkDrtdzYChE5Mxazw+biENh92ZkeWX+RDa+FLKPdr0WI6/kqI+mNeI8ZoijyJOU45/L2l382hUcdfbW13ZsQcH23AvNmI1yAbXXwhtcBDHwFsxElTO3qjV2CSSRca2yzX6I6/DE7CZipAZ3NRoC30/S923LxFZpPI2tCF1qkEHHydozCVe1GIHaZJdYkmTgZX5CgTZUg3Fegrlmp5aBgK7/v8ygFuJar+8Jo6vHPmAt6oTNuEsmBz2yXZ2R1giUFSyJgj/M3mlB01lrWifswuPdfD9EGv5uhty8/NIKawuBnWYiasuPpecqVR1GnRNrjDCE6Tts3zNJLPAB4GsnkgxzejXLC61A9kr2XQpE47/CFt0U=
A related issue is that rewrite also doesn't backtrack if it fails to solve a
sidecondition: https://github.com/coq/coq/issues/7672
That issue (and a few other rewrite issues) made me learn how to write my own
rewrite tactics in Ltac.
In your case, the following home-made rewrite tactic might work:
Require Import ZArith.
Open Scope Z_scope.
Lemma rew_zoom_bw{T: Type}{lhs rhs: T}:
lhs = rhs ->
forall P : T -> Prop, P rhs -> P lhs.
Proof.
intros. subst. assumption.
Qed.
Ltac rewr equ :=
match type of equ with
| ?LHS = _ =>
match goal with
| |- context C[LHS] =>
change ((fun x => ltac:(let b := context C[x] in exact b)) LHS);
apply (rew_zoom_bw equ)
end
end.
Lemma xx (p:3=4) (n: 3=6 -> Z) : 1= match Z.eq_dec 3 6 return Z with
| left p => n p
| right _ => 7
end + 3.
Proof using.
rewr p.
Note that usually, I would use "pattern" in my home-made rewrite tactics, but
"pattern" has the same dependent types issue as Coq's and ssr's rewrite, so I
used "context" instead, so that only one occurrence is cut out at a time.
On Mon, 2021-10-11 at 18:31 -0700, Abhishek Anand wrote:
> Is there a Coq rewrite tactic that will try to rewrite as many occurrences
> as
> possible instead of just failing when one occurrence cannot be rewritten:
>
> Require Import ZArith.
>
> Open Scope Z_scope.
> Lemma xx (p:3=4) (n: 3=6 -> Z) : 1= match Z.eq_dec 3 6 return Z with
> | left p => n p
> | right _ => 7
> end + 3.
> Proof using.
> Fail rewrite_strat (try topdown p).
> Fail rewrite_strat (try bottomup p).
> Fail rewrite_strat (try innermost p).
> Fail rewrite_strat (try outermost p).
> Fail rewrite p.
> rewrite p at 2.
> Abort.
>
>
>
> -- Abhishek
> http://www.cs.cornell.edu/~aa755/
- [Coq-Club] rewrite as many occurrences as possible, Abhishek Anand, 10/12/2021
- Re: [Coq-Club] rewrite as many occurrences as possible, Samuel Gruetter, 10/12/2021
- Re: [Coq-Club] rewrite as many occurrences as possible, Jason Gross, 10/12/2021
- Re: [Coq-Club] rewrite as many occurrences as possible, Abhishek Anand, 10/12/2021
- Re: [Coq-Club] rewrite as many occurrences as possible, Jason Gross, 10/12/2021
- Re: [Coq-Club] rewrite as many occurrences as possible, Samuel Gruetter, 10/12/2021
Archive powered by MHonArc 2.6.19+.