Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] solving Qc inequalities

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] solving Qc inequalities


Chronological Thread 
  • 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,




Archive powered by MHonArc 2.6.19+.

Top of Page