Stronger completeness axiom for real numbers in Coq

我们两清 提交于 2019-12-10 18:49:46

问题


Here is the completeness axiom defined in the Coq standard library.

Definition is_upper_bound (E:R -> Prop) (m:R) := forall x:R, E x -> x <= m.

Definition bound (E:R -> Prop) := exists m : R, is_upper_bound E m.

Definition is_lub (E:R -> Prop) (m:R) :=
is_upper_bound E m /\ (forall b:R, is_upper_bound E b -> m <= b).



Axiom completeness :
forall E:R -> Prop,
  bound E -> (exists x : R, E x) -> { m:R | is_lub E m }.

Suppose I add in

Axiom supremum :forall E:R -> Prop,
  (exists l : R,is_upper_bound E l) -> 
  (exists x : R, E x) -> 
  { m:R | is_lub E m /\ (forall x:R, x<m -> exists y:R,(E y /\ y >x))}.

Is this required? (i.e does it follow from the others) Would there be any issues with consistency? Also, why is this not the definition in the standard library (I guess this part is subjective).


回答1:


Your supremum axiom is equivalent to the law of excluded middle, in other words by introducing this axiom you are bringing classical logic to the table.

The completeness axiom already implies a weak form of the law of excluded middle, as shown by the means of the sig_not_dec lemma (Rlogic module), which states the decidability of negated formulas:

Lemma sig_not_dec : forall P : Prop, {~~ P} + {~ P}.

supremum axiom implies LEM

Let's use the standard proof of the sig_not_dec lemma to show that with the stronger completeness axiom (supremum) we can derive the strong form of the law of excluded middle.

Lemma supremum_implies_lem : forall P : Prop, P \/ ~ P.
Proof.
intros P.
set (E := fun x => x = 0 \/ (x = 1 /\ P)).
destruct (supremum E) as (x & H & Hclas).
  exists 1. intros x [->|[-> _]].
  apply Rle_0_1. apply Rle_refl. exists 0; now left.
destruct (Rle_lt_dec 1 x) as [H'|H'].
- left.
  pose proof (Rlt_le_trans 0 1 x Rlt_0_1 H') as Hx0.
  destruct (Hclas 0 Hx0) as (y & [contra | (_ & Hp)] & Hy0).
  + now apply Rgt_not_eq in Hy0.
  + exact Hp.
- right. intros HP.
  apply (Rlt_not_le _ _ H'), H; now right.
Qed.

LEM implies supremum axiom

Now, let us show that the strong version of LEM implies the supremum axiom. We do this by showing that in constructive setting we can derive a negated form of supremum where the exists y:R, E y /\ y > x part gets replaced with ~ (forall y, y > x -> ~ E y), and then using the usual classical facts we show that the original statement holds as well.

Require Import Classical.

Lemma helper (z : R) (E : R -> Prop) :
    (forall y, y > z -> ~ E y) -> is_upper_bound E z.
Proof.
  intros H x Ex.
  destruct (Rle_dec x z).
  - assumption.
  - specialize (H x (Rnot_le_gt x z n)); contradiction.
Qed.

Lemma supremum :forall E:R -> Prop,
  (exists l : R,is_upper_bound E l) ->
  (exists x : R, E x) ->
  {m:R | is_lub E m /\ (forall x:R, x<m -> exists y:R, E y /\ y > x)}.
Proof.
  intros E Hbound Hnonempty.
  pose proof (completeness E Hbound Hnonempty) as [m Hlub].
  clear Hbound Hnonempty.
  exists m. split; auto.
  intros x Hlt.
  assert (~ (forall y, y > x -> ~ E y)) as Hclass.
    intro Hcontra; apply helper in Hcontra.
    destruct Hlub as [Hup Hle].
    specialize (Hle x Hcontra).
    apply Rle_not_lt in Hle; contradiction.
  (* classical part starts here *)
  apply not_all_ex_not in Hclass as [y Hclass]; exists y.
  apply imply_to_and in Hclass as [Hyx HnotnotEy].
  now apply NNPP in HnotnotEy.
Qed.


来源:https://stackoverflow.com/questions/41326216/stronger-completeness-axiom-for-real-numbers-in-coq

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!