Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] How to organize this tricky proof?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] How to organize this tricky proof?


Chronological Thread 
  • From: Xavier Leroy <xavier.leroy AT college-de-france.fr>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] How to organize this tricky proof?
  • Date: Fri, 22 Mar 2019 09:41:06 +0100
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=xavier.leroy AT college-de-france.fr; spf=Pass smtp.mailfrom=xavier.leroy AT college-de-france.fr; spf=None smtp.helo=postmaster AT smtpout10.partage.renater.fr

On Thu, Mar 21, 2019 at 9:51 PM Jason -Zhong Sheng- Hu <fdhzs2010 AT hotmail.com> wrote:
Hi,

consider a type `T` and an inductively defined proposition `P : T -> Prop`. theorem `foo : forall (t : T), P t -> Q t` is proved by doing an induction on `t` and then `P t`.

however, inside of `foo`, in each case of `t`, I will need another theorem `bar : forall (t : T), P t -> R t`, which is proved by induction on `P t` and some cases require `foo`.

What about proving

Lemma foobar: forall (t: T), P t -> Q t /\ R t.

with a single induction on "P t" ?  Then, "foo" and "bar" are trivial corollaries.

- Xavier Leroy


since `bar` always operate on smaller `P t` instances, so these two theorems are true, but just mutually dependent.

my problem is, I am not sure how to organize this proof to make it shorter. clearly, I can prove `bar` for each particular `t` but it pointlessly adds so much more identical proofs. On the other hand, `foo` and `bar` are not structurally mutually recursive either, because `foo` decreases on `T` while `bar` decreases on `P t`, which stops me from using Fixpoint.

Is there any way to organize the proof, so that I only need to prove `foo` and `bar` once?

Sincerely Yours,

Jason Hu





Archive powered by MHonArc 2.6.18.

Top of Page