你的supremum
公理相当于排中律,换句话说,通过引入这个公理,你将经典逻辑带到桌面上。
该completeness
公理已经暗示了排中律的一种弱形式sig_not_dec
,如引理(Rlogic
模块)的方式所示,它说明了否定公式的可判定性:
Lemma sig_not_dec : forall P : Prop, {~~ P} + {~ P}.
supremum
公理蕴含 LEM
让我们使用sig_not_dec
引理的标准证明来证明,通过更强的完备性公理 ( supremum
),我们可以推导出排中律的强形式。
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 蕴含supremum
公理
现在,让我们证明 LEM 的强版本隐含了supremum
公理。我们通过证明在建设性设置中我们可以推导出部分被替换为的否定形式来做到这一点,然后使用通常的经典事实我们证明原始陈述也成立。supremum
exists y:R, E y /\ y > x
~ (forall y, y > x -> ~ E y)
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.