微分トポロジー15 〜過去・現在・未来〜 2015/3/27 (久我)

位相空間論を形式化し(はじめ)よう!

最初の練習:ヒルベルトの公理S

Require Import ssreflect ssrbool.
Set Implicit Arguments.
Section HilbertS.

Variables A B C : Prop.

Lemma HilbertS : (ABC) → (AB) → AC.
Proof.
moveH_AiBiC H_AiB H_A.
apply H_AiBiC.
assumption.
apply H_AiB.
assumption.
Qed.

End HilbertS.

集合 (Ensembles)


Section Ensembles.

Variable U : Type.

Definition Ensemble := UProp.

Definition In (A : Ensemble) (x : U) := A x.

空集合、全体集合

Inductive Empty_set : Ensemble :=.

Lemma Empty_set_is_empty :
   x : U, ¬ (In Empty_set x).
Proof.
  movex H.
  red in H.
SearchAbout Empty_set.
pose P := fun (x : U) ⇒ False.
have HF: (P x) = False.
  by [].
  rewrite<-HF.
    by apply Empty_set_ind.
Qed.

Inductive Full_set : Ensemble :=
  Full_intro : x : U, In Full_set x.

和集合、共通部分

Inductive Union (A B : Ensemble) : Ensemble :=
| Union_introl : x : U, In A xIn (Union A B) x
| Union_intror : x : U, In B xIn (Union A B) x.

Inductive Intersection (A B : Ensemble) : Ensemble :=
Intersection_intro : x : U,
  In A xIn B xIn (Intersection A B) x.

包含関係、等号

Definition Included (A B : Ensemble) : Prop:=
   x : U, In A xIn B x.

Definition Same_set (A B : Ensemble) : Prop :=
  Included A B Included B A.

外延性公理

Axiom Extensionality_Ensembles :
   A B : Ensemble, Same_set A BA = B.

End Ensembles.

Section Families.

集合族 (Family)

Variable U : Type.
Definition Family := Ensemble (Ensemble U).

Variable F : Family.

Inductive FamilyUnion : Ensemble U :=
  family_union_intro : (x : U) (S : Ensemble U),
                        In S xIn F SIn FamilyUnion x.

End Families.

位相空間の公理

Set Implicit Arguments.

Section TopologyAxioms.

 Record TopologicalSpace : Type := {
  point_set : Type;
  open : Ensemble point_setProp;
  open_family_union : F : Family point_set,
    ( S : Ensemble point_set, In F Sopen S) →
    open (FamilyUnion F);
  open_intersection2: U V:Ensemble point_set,
    open Uopen Vopen (Intersection U V);
  open_full : open (@Full_set _)
}.

定理 空集合は開集合

Lemma empty_family_union: U : Type,
  FamilyUnion (@Empty_set (Ensemble U)) = @Empty_set _.
Proof.
moveU.
apply Extensionality_Ensembles.
rewrite/Same_set.
rewrite/Included.
apply conj.
movex H.
destruct H.
contradiction.
movex H.
by destruct H.
Qed.

Theorem open_empty: X:TopologicalSpace,
  open _ (@Empty_set (point_set X)).
Proof.
intros.
rewrite <- empty_family_union.
apply open_family_union.
intros.
destruct H.
Qed.

End TopologyAxioms.