coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Yannick Zakowski <zakowski AT seas.upenn.edu>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] How to use patterns inside proofs?
- Date: Wed, 15 Jul 2020 13:03:20 -0400
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=zakowski AT seas.upenn.edu; spf=Pass smtp.mailfrom=zakowski AT seas.upenn.edu; spf=None smtp.helo=postmaster AT mail-qt1-f182.google.com
- Ironport-phdr: 9a23:MOhgkB8h92Kfpv9uRHKM819IXTAuvvDOBiVQ1KB20+scTK2v8tzYMVDF4r011RmVBNudsKgP2rCempujcFRI2YyGvnEGfc4EfD4+ouJSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47xaFLIv3K98yMZFAnhOgppPOT1HZPZg9iq2+yo9JDffgRFiCCzbL9sIxm7qRvdvdQKjIV/Lao81gHHqWZSdeRMwmNoK1OTnxLi6cq14ZVu7Sdete8/+sBZSan1cLg2QrJeDDQ9LmA6/9brugXZTQuO/XQTTGMbmQdVDgff7RH6WpDxsjbmtud4xSKXM9H6QawyVD+/6apgVR3mhzodNzMh7W/ZlMJwgqJYrhyvqRNwzIzbb52OOfVkYq/QZ8kXSXZPU8tTUSFKH4Oyb5EID+oEJetXrZPyp10IrRu/GQasB/7kxTxSiX/12q073f8hEQLH3Ac9GN8PsW7brNbyNKYcSuC1z6jIwC7Yb/xIwzj985LEcg05of6SW7Jwd9DdxlcyGAPYl1idr5HuMDyJ2OoXqWeb8/ZgWvy1i24hswx8viSiy8MyhoTUmI8YylDK+yt5zos6ONC1SkF2b9CrHZZTqSyXNY97Tt8sTm9npio3xaAKtJClcCUUzJkqwwPTZvqaeIaL+hLuTPidLSt8iX5/e7+yhwy+/VWhx+HgTMW4zVVHojRdntXSt30ByxLe582JR/dh40uuxDOC2gLP5uxGJE07jrbXJ4I9zrM1jZUetV/MEy/zlUrokqObeEAp9+az5Ov5frrro4GTOoFphQz8NKklh9axDv4iMgcUWmiW4eS826Pn/U3+WLhKi+c5kqjdsJzDPMQburO1DxZb0oo+6BuzES2q0NsfnXkAI1JFfAyIg5L1NFHJJfD0Ffa/g1Kynzd33/3KIKHtD5HXInXAkLrtZ6tx5k9AxAYp0NxS5IxYBqkEIP3pW0/xsNLYDgU+Mwyx2+vmCc9y1oAZWWOBGa+ZM6LSvEST5u0xOeaMf5UZuCvlK/c74f7ui2U1lkEAcqm0xZcXcmy3Hux6I0WFZnrhmssOEWATvgYnUOPqjECCXiVIanapX6M84yk7B5i8AYfCQICtmr2B0z2hEp1YfGAVQmyLRHzvbsCPX+oGQCOUOM5o1DIeBpa7TIp05Biosg7xyPJVJ+nT5TYbtNq3xtF24PLIlhAa7jF9FIKAy2yLSSd5kn5eFGx+57x2vUEokgTL6qN/mfENTYUCtcMMaR8zMNvn98I/DtnzXgzbedLQFgS9T9y9RywpQ9Q3hdICfhQkQonwvlX4xyOvRoQtufmTHpVtrPDH0nHqYdtlxnDAkqQtkgt+G5YdBSidnqd6sjPrKcvJnkGezfj4cK0d2GvU6D7GwzPe5gdXVwl/VaiDVncaNBPb
Hello Agnishom,
You need to bind you metavariable "?t" to the subterm in your goal with a match construct.
You can do so with the following for instance. Notice the
question mark in front of your meta-variables in the pattern, but
not afterwards.
match goal with
|- ?lhs + ?rhs = _ => replace (lhs + rhs) with (rhs + lhs)
end.
To avoid having to add this "= _" bit, you may use the "context" command:
match goal with
|- context[?lhs + ?rhs] => replace (lhs + rhs) with (rhs + lhs)
end.
Best,
Yannick
On 7/15/20 12:48 PM, Agnishom
Chattopadhyay wrote:
Hi;
I want to understand how to use pattern variables to
manipulate expressions inside proofs. A google search did not
help very much.
Let's say I have an _expression_ 2 + <bigExp> and I
want to rewrite it as <bigExp> + 2. I do not want to
mention <bigExp> explicitly in my proof. How do I
achieve this?
Here is my attempt.
Goal 2 + (3 + 1) = 6.
Proof.
replace (2 + ?t1) with (?t1 + 2).
Proof.
replace (2 + ?t1) with (?t1 + 2).
But it doesn't work.
--Agnishom
- [Coq-Club] How to use patterns inside proofs?, Agnishom Chattopadhyay, 07/15/2020
- Re: [Coq-Club] How to use patterns inside proofs?, jonikelee AT gmail.com, 07/15/2020
- Re: [Coq-Club] How to use patterns inside proofs?, Yannick Zakowski, 07/15/2020
Archive powered by MHonArc 2.6.19+.