Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Proof without "auto with arith"

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Proof without "auto with arith"


chronological Thread 
  • From: "Lucian M. Patcas" <lucian.patcas AT gmail.com>
  • To: Bruno Woltzenlogel Paleo <bruno.wp AT gmail.com>, garrigue AT math.nagoya-u.ac.jp, daniel.de_rauglaudre AT inria.fr
  • Cc: coq-club <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] Proof without "auto with arith"
  • Date: Wed, 22 Jun 2011 09:41:35 -0400
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:reply-to:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type; b=pF0sOuDseyC+F93n9F8nL3GdyYdkLw4ZLXorQGgo0s0d2E66x5g199nTNUF8sZF2YN 0jmO4ebZpBzxMl1OP5i1n1/jrNcuGaCHwfpWabIzOrBMLU3C5mNorZYE6cGYtzp0wuHT SyFQ90ov8CZF6MaFou0Mkt84BWrSwBHD7GHb8=

Hi all,

Thank you for your answers. It was late in the night and I guess my questions weren't as clear as I wanted them to be. Even so, your answers were very helpful.

To clarify, these were my questions:

1. How to prove such theorems using minimum automation? I am all for automation, however, to understand how Coq works, it's better to use less sometimes.

2. How to find lemmas that could be useful? Jacques' hint on the info tactic is very useful indeed. Meanwhile, I have found that SearchPattern is a useful tool as well.

Now, I have another question. Say I wanted to prove a theorem like this

forall t : nat, t >=2 -> t <= 1000 -> f t

assuming f is a function defined in the context and that the theorem has a proof indeed. How can I make Coq evaluate this function on that restricted domain?

Thanks,
Lucian

On Wed, Jun 22, 2011 at 01:58, Bruno Woltzenlogel Paleo <bruno.wp AT gmail.com> wrote:
Hi Lucian,

Although I probably cannot help you, since my knowledge of Coq is quite basic, I found your question interesting. Do you mind if I ask you a question for my own clarification?

> How can I prove this theorem without using "auto with arith"?
>
> Lemma silly : forall t : nat, t >=2 -> t <= 2 -> t = 2.
>
> When proved using "auto with arith", the proof term is
>
> silly =
> fun (t : nat) (H1 : t >= 2) (H2 : t <= 2) => le_antisym t 2 H2 H1
>      : forall t : nat, t >= 2 -> t <= 2 -> t = 2
>
> I didn't even know le_antisym existed, not to mention how ugly this term looks:

Are you interested in proving this lemma without "auto with arith", but still using "le_antisym"? Or are you (also) interested in proving it without using the pre-existing "le_antisym"?

Best regards,

Bruno

--
Bruno Woltzenlogel Paleo
http://www.logic.at/people/bruno/




Archive powered by MhonArc 2.6.16.

Top of Page