coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Elias Castegren <eliasca AT kth.se>
- To: "coq-club AT inria.fr" <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] solving Qc inequalities
- Date: Fri, 22 Jan 2021 09:44:15 +0000
- Accept-language: sv-SE, en-US
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=eliasca AT kth.se; spf=Pass smtp.mailfrom=eliasca AT kth.se; spf=Pass smtp.helo=postmaster AT smtp-3.sys.kth.se
- Ironport-phdr: 9a23:WFbQ0RLQ+GWqWDY0admcpTZWNBhigK39O0sv0rFitYgeI//xwZ3uMQTl6Ol3ixeRBMOHsqMC0rSd6/qoGTRZp8rY7zZaKN0EfiRGoP1epxYnDs+BBB+zB9/RRAt+Iv5/UkR49WqwK0lfFZW2TVTTpnqv8WxaQU2nZkJ6KevvB4Hdkdm82fys9J3PeQVIgye2ba9vIBmsogjdq80bjZF/JqswxRfFvmVEcPlSyW90OF6fhRnx6tqy8ZJ57yhcp/ct/NNcXKvneKg1UaZWByk8PWAv483ruxjDTQ+R6XYZT24bjBlGDRXb4R/jRpv+vTf0ueR72CmBIM35Vqs0Vii476dqUxDnliEKPCMk/W7Ni8xwiKVboA+9pxF63oXZbp2ZOOZ4c6jAe94RWGhPUdtLVyFZAo2ycZYBD/YPM+hboYnypVoOogexCgS3Huzj1jpIi2Xq0aEm0eksFxzN0gw6H9IJtXTZtNr7NKMTUe+v16nD0CvOYOlN2Tfh9ofIfQohru+KXbltdsfe100vFwLfgVWLtYPqJSiY1ucRs2ib9eZgTvyghnchpgpsrTeh2t0ihZPVhoIJ1F/E7yN5zZ47K9C8R0N1YcKoHZROuiyEKYZ7XMAvT391tCs1yLALp5C2cDQKxZkn2hPSd/OJfYeJ7x/jSuqdPzN1iG97db6jgRu57Eauyur5Vsau0VZKqDJIncXLtnAX0Rzc9MyHSv9n8ki/xDmPygbe4fxHL0AsjafXNpAszqIqmpYNv0nOHDX6lUr1gaOMa0kp/vak5/z6brjiuJOQLZJ4hwD9P6g0lMGzH/40PhYOUmSH/+m3yaft8lfjQLpQi/07iqnZv47eJcQcvqO5GApV0po76xqmATqqys8YnHkcLF5fexKHk4jpN0vVIP/mFfu/glKsnyl3x/3eI7HsDInBImLdnLrvf7tx8UFRxQkpwdxC459YFKkNIPfpVU/wsNzYAAU5Mwuxw+v/Ftp90oIeVniUAqCFKqzfqlyI5v4vI+WWf48api7xK+I56P72kX85hVgdcLG10psQcXC0B+hpI0GEYXX3mdoBCmcLvg8mTOPwklGCUDhTZ2yzX60m/D07BpimXs//QdXni7uYmSy/A5d+Z2ZcC1nKH22iP9GPXO5JYyaPKOdglCYFXP6vUdly+wupsVrXz7tuNaL/8zYEuJ352d49s+DXlBgp/jVcDNidlXqAGTIn1lgUTiM7ifgs6Xd2zU2OhPAh365oUOdL7vYMaT8UcIbGxrwoCMzyHBnMLI/QGQSWB+6+CDR0deofhtoHYkJzAdKn3kLAwyrsGLJHzuXWVqxxybrV2j3KH+g4y3vC0/Bw3UIjXtMKbiu9l7U59BTTQZXEwRyU
Hi Abhishek!
I asked about something similar to this a while back.
After a few changes back and forth, I found that this
simple solution is what works best for me:
```
Require Import QArith QArith.Qcanon Psatz.
Lemma Q2Qc_eq_l :
forall q,
Q2Qc q == q.
Proof.
intros q.
cbv [this Q2Qc].
apply Qred_correct.
Qed.
Ltac drop_Q2Qc :=
match goal with
| [H : context[Q2Qc] |- _] => setoid_rewrite Q2Qc_eq_l in H
| [_ : _ |- context[Q2Qc]] => setoid_rewrite Q2Qc_eq_l
end.
Ltac Qify :=
unfold Qcminus, Qcplus, Qcopp in *;
unfold Qclt, Qcle in *;
repeat drop_Q2Qc.
```
Using `Qify` followed by `lra` solves most simple Qc goals.
Sometimes `drop_Q2Qc` is not able to get rid of all the
`Q2Qc`s in the context, and I haven’t been able to figure
out why. There might also be other unfolds you will want to
do in `Qify`.
Let me know if you come up with improvements!
Cheers
/Elias
8 jan. 2021 kl. 21:47 skrev Abhishek Anand <abhishek.anand.iitg AT gmail.com>:
I see that there is a field instance for Qc.Is there a psatz/lra like tactic for Qc?If not, is there a tactic to preprocess a Qc goal to Q, something like what zify does? (Thanks Frédéric for solving the problem in the other thread.)Thanks,
-- Abhishekhttp://www.cs.cornell.edu/~aa755/
- [Coq-Club] solving Qc inequalities, Abhishek Anand, 01/08/2021
- Re: [Coq-Club] solving Qc inequalities, Frédéric Besson, 01/08/2021
- Re: [Coq-Club] solving Qc inequalities, Elias Castegren, 01/22/2021
Archive powered by MHonArc 2.6.19+.