coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Jonathan Leivent <jonikelee AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] How do you do conditional rewriting?
- Date: Mon, 21 Sep 2015 12:07:01 -0400
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=jonikelee AT gmail.com; spf=Pass smtp.mailfrom=jonikelee AT gmail.com; spf=None smtp.helo=postmaster AT mail-qg0-f51.google.com
- Ironport-phdr: 9a23:F0/k7BYatEbjFAZHzzFaweX/LSx+4OfEezUN459isYplN5qZpci9bnLW6fgltlLVR4KTs6sC0LqK9fm8EUU7or+/81k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i760zceF13FOBZvIaytQ8iJ35jxjrz60qaQSjsLrQL1Wal1IhSyoFeZnegtqqwmFJwMzADUqGBDYeVcyDAgD1uSmxHh+pX4p8Y7oGxmkql+rIsYDe26Ivx5HvRkC2EtNHlw78n2vzHCSxGO7z0SSDY4iB1NVirC6hjmXp73+g/3t/Rw3jXSac/xS7E3VDCv4o9kTRbpjGEMMDtvozKfsdB5kK8O+EHpnBd42YOBPdmY
By looking at your condrewrite tactic, I'd guess that you are trying to create canonical forms for arithmetic terms using reflection. If so, maybe you should look at the code for the ring tactic?
-- Jonathan
On 09/21/2015 09:02 AM, Hugo Carvalho wrote:
Club,
I'm interested in rewriting conditionally. That is, to use the rewrite
tactic only if some condition applies. For example, say we have some way of
testing two numbers and will only apply the commutativity of addition if
the test goes through. Right now, my tactic looks like this:
Ltac condrewrite :=
match goal with
| [ |- context[(plus ?a ?b)] ] =>
let extravars := (*Some extra computation, such as reflecting a and b
into ASTs*) in
let cmp := (eval compute in (*Test goes here, depends on extravars*) ) in
match cmp with
| Gt => rewrite -> (plus_comm a b)
| _ => fail
end
end.
As you might imagine, this is fairly unwieldy. Notice the "context[(plus ?a
?b)]"; i'm replicating, within a ltac match, something i know the rewrite
tactic is perfectly capable of doing by itself.
Is there any way of doing this in a cleaner way?
- [Coq-Club] How do you do conditional rewriting?, Hugo Carvalho, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Adam Chlipala, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Hugo Carvalho, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Adam Chlipala, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Hugo Carvalho, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Adam Chlipala, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Hugo Carvalho, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Ilya Sergey, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Jonathan Leivent, 09/21/2015
- Re: [Coq-Club] How do you do conditional rewriting?, Adam Chlipala, 09/21/2015
Archive powered by MHonArc 2.6.18.