coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: mukesh tiwari <mukeshtiwari.iiitm AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Simplifying pattern matching
- Date: Sat, 30 Jul 2022 14:36:44 +0100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mukeshtiwari.iiitm AT gmail.com; spf=Pass smtp.mailfrom=mukeshtiwari.iiitm AT gmail.com; spf=None smtp.helo=postmaster AT mail-lf1-f45.google.com
- Ironport-data: A9a23:5d4A1K+Cv3IZAtdq97GhDrUDvniTJUtcMsCJ2f8bNWPcYEJGY0x3m zAaCmjXaf+LYDCmc4pya4jgp0MAusTUnINmSwtlqHpEQiMRo6IpJ/zJdxaqZ3v6wu7rFR88s Z1GMrEsCOhuExcwcz/0auCJQUFUjP3OHvymYAL9EngZqTVMEU/Nsjo+3b9i6mJUqYLhWVnV5 oiq+5e31GKNglaYDEpEs8pvlzs05JweiBtA1rDpTa0jUPf2zhH5PbpHTU2DByOQrrp8QoZWc 93+IISRpQs1yfuC5uSNyd4XemVSKlLb0JPnZnB+A8BOiTAazsA+PzpS2Pc0MS9qZzu1c99Z1 u1C77/gdBYQL4LstM4DVhkbMxNSMvgTkFPHCSDXXc27ykTHdz7ozawrAh1re4If/elzDCdF8 vlwxDIlNEjSwbLrhuvlFa8w26zPL+GzVG8bknR9zjzCDeonXpnZQuPL5N5E2R8/g8lPGbDVY M9xhT9HMEucPEUXZAx/5JQWl9yC3XXBSQNij33I4qgVxmPNkksr+e24WDbSUoXSGZ89clyjj mnB5iHyBgwQHMeOzCKMtHOqnO7G2y3hML/+D5W9//9uxVmdnykdVEBQWly8rv20zEW5XrqzN nD45AIwlado1xyWX+DscD2UimCBvl08afZfRrhSBB629oLY5AOQB24hRzFHacA7uMJeedDM/ g/Z9z8OLWw/2IB5WU5x5Z/P8mzvYXl9wXsqIH5bHVFcsrEPtalq1kqXJuuPBpJZmTEcJN0d6 zWDrSx7g7tKyMBXiuO0+lfIhz/qrZ/MJuLU2uk1djL7hu+aTNT+D2BN1bQ9xagcRGp+Zgfd1 EXoY+DEsIgz4WilzURhutklErCz/OqiOzbBm1NpFJRJ323zpi/6JNEMumEgexcB3iM4ldnBM B+7VeR5tM87AZdWRfIfj3+ZUJl0k/a5TbwJqNiNPoUTOPCdizNrDAk3PRLKt4wcuEcrlq47N P+mnTWEXB4n5VBc5GPuHY81iOd1rghnnD+7bc2lknyPjOXGDFbIGO9tGAbfNYgRsfLUyC2Lq Yo3H5XRkH13DrauChQ7BKZJcjjm21BgVc6owyGWH8bfSjdb9JYJUaSMme54JNI/xsy4VI7gp xmAZ6OR83Kn7VWvFOlAQisLhGrHUcktoHQlEzYrOFr0iXEvbZz+vqgafpozO7Ig8bU7n/JzS vAEfeSGA+hOGmyXoWRDMcGlodwwbgmviCKPIzGhP2oycptmcArDpY3pcw7pwy8RA3flrsA5u bChiljWTMNbFQRvBcrbcty1yFa1sSRPke5+RRqaLdxaeUGq+49vcnSjgvgyKsAKCBPC2jrKj 1bMUUlE/bHA+tZn/sPIiKaIq5aSP9F/RkcKTXPG6buWNDXB+jXxzIJFVtGOd2+PWW7x/pKke rwJnfzxNfswnGFKvZB5JLBlwP9s/NDovbJbkl1pEXiXPVSmDrRsfiuP0cVV7PYfw7ZYvU6yV BvK9IUHf7qOP8zhHRgaIw98NraP0vQdmz/z6/UpIRWluHUmouLfCUgCbQORjCF9LaduNN93y +kWvsNLuRe0jQAnM4rbgy0IpX6AKGcMD/cuup0AWtS5jwMqzhRGb8WZBHOrpp6IbNpIPw8hJ TrN3PjOgLFVx0zjdXsvFCiSgbAM28xW4B0ankUfI1mpm8begqNl1hNm9zlqHB9eyQ9K0r4uN 2VmX6GvyX5iI9u1aAl/s2GQ98VpARSY/gn1xQJMmjGECUavUWPJISs2PuPlEIX1NY5DVmAzw V1a4D+NvfXWkAXZ0S47WEojoPvmJTC03hOXg9ipRqxpALFjCQcIQcaSia4gpB7uAMd3j0rCz QWvECCcdoWjXRMtT2YH50V2GFjepN1o5ICPfB25wJ40IA==
- Ironport-hdrordr: A9a23:Hc0W7KwS4W3oZAc/iiGzKrPwFb1zdoMgy1knxilNoH1uA7Wlfq WV9sjzuiWE7Qr5NEtQ++xofZPwIk80lqQV3WByB8bHYOCOggLBR72Kr7GD/9SKIVyYygcy79 YHT0G8MrHN5JpB4PoSLDPWLz/o+re6zJw=
- Ironport-phdr: A9a23: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 50LGOczvLMdGfYTC0AjF9sHcs4fYw==
- Ironport-sdr: 9obRXoK9Vuc7DPipY5mBJ8/aV/E0vHP851sBKAnnMvGMEzugXZjXfiXwyrHxTVRxL44uM74/ss aIjmyk0cGAwI1HDLKzHg2tiTu3gjAkaXPgUst9A/1dRo/FJv1mcsl3/0mdRDuVeY4zQznI3ml7 hvuXBpCTvYw7c+ghHjFZM5zguFF+Ti2UuYU+mlBWZqx/6/x+cFyXCTuPQ+HmEBnlsHUflXlQnA 0cp0FU2t7QCNHTSXyU8KVU5kz062DMNHbWdKoMGI848bEGhd5evnbz5SXdbVeDjRLQJSW+BT5W b2QoQiwdPYbXF0E76nksUvDS
Hi Wendlasida,
I am not sure that it’s the best way but one way to do is to define a lemma:
Lemma ex_rewrite : forall opt h,
(opt = match h with
| Form_1 x => Value_1
| Form_2 x1 x2 => Value_2
...
| Form_n x1... xn => Value_n
| _ => Value_others ) <->
| Form_1 x => Value_1
| Form_2 x1 x2 => Value_2
...
| Form_n x1... xn => Value_n
| _ => Value_others ) <->
(exists x, h = Form_1 x /\ opt = Value_1) \/ (exists x1 x2, h = Form_2 x1 x2 /\ opt = Value_1) ... (exists x1 ... xn, h = Form_n x1 xn /\ opt = Value_n) \/ (opt = Value_others).
You prove it once and use it everywhere. (However, if h appears in somewhere in your proof, then ‘destruct h’ (or case h which you are already doing) would give you all the constructors and you can discharge them accordingly, so I am not sure if the above is going add any value).
Best,
Mukesh
On Sat, 30 Jul 2022 at 11:26, Wendlasida Ouedraogo <ouedraogo.tertius AT gmail.com> wrote:
Dear All,I am currently working on programs that perform a lot of pattern matchings. I am looking for a tactic or an existing library that can help me to transform an hypothesis like:opt = match h with
| Form_1 x => Value_1
| Form_2 x1 x2 => Value_2
...
| Form_n x1... xn => Value_n
| _ => Value_othersinto(exists x, h = Form_1 x /\ opt = Value_1) \/ (exists x1 x2, h = Form_2 x1 x2 /\ opt = Value_1) ... (exists x1 ... xn, h = Form_n x1 xn /\ opt = Value_n) \/ (opt = Value_others)Is there a tactic that can perform such transformation? I usually perform this transformation using the "assert" and "case" tactics that lead to long proofs or a high number of subgoals. Any ideas?--Mobile : 0751061208Cordialement,M. Wendlasida Tertius OUEDRAOGO
- [Coq-Club] Simplifying pattern matching, Wendlasida Ouedraogo, 07/30/2022
- Re: [Coq-Club] Simplifying pattern matching, mukesh tiwari, 07/30/2022
Archive powered by MHonArc 2.6.19+.