Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Existential instantiation with addition information

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Existential instantiation with addition information


Chronological Thread 
  • From: Xavier Leroy <Xavier.Leroy AT inria.fr>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Existential instantiation with addition information
  • Date: Thu, 26 Nov 2015 18:01:58 +0100
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=xavier.leroy AT gmail.com; spf=Pass smtp.mailfrom=xavier.leroy AT gmail.com; spf=None smtp.helo=postmaster AT mail-wm0-f50.google.com
  • Ironport-phdr: 9a23:lxmnGRyhy07OdALXCy+O+j09IxM/srCxBDY+r6Qd0ekRIJqq85mqBkHD//Il1AaPBtWGraIcwLuM+4nbGkU+or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6anHS+4HYoFwnlMkItf6KuStOU35z8hrr60qaQSjsLrQL1Wal1IhSyoFeZnegtqqwmFJwMzADUqGBDYeVcyDAgD1uSmxHh+pX4p8Y7oGwD884mosVHSODxe7kyZb1eFjUvdW4vt+PxshyWfQKR53YGGkEbiB1ZS1z15Q/7U423libgsftV2S+APMSwQ6piCmfq1LtiVBK90HRPDDU+6myC0sE=

On 26/11/15 17:34, Pierre-Marie Pédrot wrote:
> On 26/11/2015 17:06, David Asher wrote:
>> But I need some additional information [ somethig like "~ (exists m,
>> m < n /\ P m)" ] in the context. Any ideas how to solve this?
>
> If P is decidable, you can prove by induction on n that
>
> P n -> exists m, P m /\ (forall p, p < m -> ~ P p)

Not sure structural induction will suffice here. Slightly more
complex proof sketch below.

Or, just dig into the standard library: in Arith.Wf_nat, there is the
scarily-named theorem "dec_inh_nat_subset_has_unique_least_element"
that can be used here (take R x x' := x <= x').

> I don't think that this is intuitionistically provable when P is not
> decidable though.

My thought too.

- Xavier Leroy


Section MINIMAL_EXISTS.

Variable P: nat -> Prop.
Hypothesis P_dec: forall n, P n \/ ~ P n.

Lemma P_upto_n_dec:
forall n, (exists m, m < n /\ P m) \/ (forall m, m < n -> ~ P m).
Proof.
(* left as an exercise *)
Qed.

Lemma minimal_exists:
forall n, P n -> exists m, P m /\ forall p, p < m -> ~ P p.
Proof.
induction n using lt_wf_ind; intros.
destruct (P_upto_n_dec n) as [[m [A B]] | C].
- eauto.
- exists n; auto.
Qed.

End MINIMAL_EXISTS.



Archive powered by MHonArc 2.6.18.

Top of Page