coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Jonathan Leivent <jonikelee AT gmail.com>
- To: Hugo Herbelin <Hugo.Herbelin AT inria.fr>, Coq Club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] what is firstorder supposed to do?
- Date: Mon, 9 Nov 2015 21:01:51 -0500
- 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-f48.google.com
- Ironport-phdr: 9a23:pjAv2B8auymz//9uRHKM819IXTAuvvDOBiVQ1KB80ugcTK2v8tzYMVDF4r011RmSDdidt64P0LqempujcFJDyK7JiGoFfp1IWk1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXsq3G/pQQfBg/4fVIsYL+lR8iO04/sh6ibwN76XUZhvHKFe7R8LRG7/036l/I9ps9cEJs30QbDuXBSeu5blitCLFOXmAvgtI/rpMYwuwwZgf8q9tZBXKPmZOx4COUAVHV1e1wyse32uh6LbQaV7HYYU2NexjpVDA+DzBzgVJr1sy3St+xn2SDcM9egCfgfXi3qxKN2Qle8gyAecjU97Wv/i8pqjasdrgj39DJlxIuBQoaTPeZ+d6WVWd4bW2dHQo4FVStHA4Cxa4YCJ+UENOdc6YL6og1d/lOFGQCwCba3mXdzjXjs0Ph/irx5HA==
On 11/09/2015 03:56 PM, Jonathan Leivent wrote:
For example, I can come up with goals requiring forward chaining that firstorder solves quite readily, and others that it doesn't. Here's one it doesn't solve:
Goal forall (P : nat -> nat -> Prop),
(forall i j, P i j -> i + j < 2) ->
forall x y z, P x y -> P z y -> y > 0 -> x + z < 1.
Proof.
intros P R x y z Pxy Pyz ygt0.
Fail firstorder omega.
However, an extra level of firstorder does solve it:
firstorder (firstorder omega).
I think I see why, based on debugging the goals that are handed to the tactic arg (omega in this case), but I'm not sure. It looks like each level of firstorder will parameterize the R formula just once - and since omega requires both R x y : x + y < 1 and R x z : x + z < 1, two invocation levels of firstorder are needed. But, I don't know if this is generally the case. Could something like:
Ltac fo n tac := firstorder (tac || lazymatch n with S ?N => fo N tac end).
be used to solve any first-order goal, given sufficiently high n? If not, what are the properties that first-order goals have to have to be solvable this way?
I eventually noticed that "Set Firstorder Depth 4" enables it to solve this goal by just "firstorder omega".
-- Jonathan
- [Coq-Club] what is firstorder supposed to do?, Jonathan Leivent, 11/07/2015
- Re: [Coq-Club] what is firstorder supposed to do?, Daniel Schepler, 11/08/2015
- Re: [Coq-Club] what is firstorder supposed to do?, Hugo Herbelin, 11/08/2015
- Re: [Coq-Club] what is firstorder supposed to do?, Jonathan Leivent, 11/09/2015
- Re: [Coq-Club] what is firstorder supposed to do?, Jonathan Leivent, 11/10/2015
- Re: [Coq-Club] what is firstorder supposed to do?, Jonathan Leivent, 11/09/2015
Archive powered by MHonArc 2.6.18.