集合の相等

------------------------------------------------------------------------

Require Export Intui.
Require Export Nota.

Theorem Subc_refl : forall (T:Type)(A:T), A /c= A.
Proof.
 intros T A x H.
 assumption.
Qed.

Theorem Subc_trans : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /c= b) -> (b /c= c) -> (a /c= c).
Proof.
 intros A B C a b c Hab Hbc x Ha.
 apply Hbc.
 apply Hab.
 assumption.
Qed.

Theorem Eqcl_refl : forall (T:Type)(A:T), A /= A.
Proof.
 intros T A.
 split.
 apply Subc_refl.
 apply Subc_refl.
Qed.

Theorem Eqcl_sym : forall (A B:Type)(a:A)(b:B),
 (a /= b) -> (b /= a).
Proof.
 intros A B a b (Hab,Hba).
 split; assumption.
Qed.

Theorem Eqcl_trans : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /= b) -> (b /= c) -> (a /= c).
Proof.
 intros A B C a b c Hab Hbc.
 elim Hab; intros Hcab Hcba.
 elim Hbc; intros Hcbc Hccb.
 split.
 apply Subc_trans with (b := b).
 assumption.
 assumption.
 apply Subc_trans with (b := b).
 assumption.
 assumption.
Qed.

(*真部分クラス*)
Theorem Cl_psub_not : forall (A B:Type)(a:A)(b:B),
 (a /cc b) -> ((a /c= b) /\ ~ (a /= b)).
Proof.
 intros A B a b Hcc.
 split.
 elim Hcc; intros H1 H2.
 assumption.
 (*unfold Eqcl.*)
 intros (H3,H4).
 elim Hcc; intros H1 H2.
 elim H2.
 assumption.
Qed.

Theorem Cl_not_psub : forall (A B:Type)(a:A)(b:B),
 (a /c= b) -> (~ (a /= b)) -> (a /cc b).
Proof.
 intros A B a b Hce Hne.
 split.
 exact Hce.
 intro Hba.
 elim Hne.
 split; assumption.
Qed.

Theorem Psub_irrefl : forall (T:Type)(A:T), ~ (A /cc A).
Proof.
 intros T A (H1,H2).
 elim H2.
 assumption.
Qed.

Theorem Psub_sub_n : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /cc b) -> (b /c= c) -> ~ (c /c= a).
Proof.
 intros A B C a b c (Hcab,Hcba) Hbc Hca.
 elim Hcba.
 apply Subc_trans with (b := c).
 assumption.
 assumption.
Qed.

Theorem Sub_psub_n : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /c= b) -> (b /cc c) -> ~ (c /c= a).
Proof.
 intros A B C a b c Hab (Hcbc,Hccb) Hca.
 elim Hccb.
 apply Subc_trans with (b := a).
 assumption.
 assumption.
Qed.

Theorem Psub_psub_n : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /cc b) -> (b /cc c) -> ~ (c /c= a).
Proof.
 intros A B C a b c (Hcab,Hcba) (Hcbc,Hccb) Hca.
 elim Hcba.
 apply Subc_trans with (b := c).
 assumption.
 assumption.
Qed.

Theorem Psub_sub_p : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /cc b) -> (b /c= c) -> (a /cc c).
Proof.
 intros A B C a b c (Hcab,Hcba) Hbc.
 split.
 apply Subc_trans with (b := b).
 assumption.
 assumption.
 apply Psub_sub_n with (b := b).
 split.
 assumption.
 assumption.
 assumption.
Qed.

Theorem Sub_psub_p : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /c= b) -> (b /cc c) -> (a /cc c).
Proof.
 intros A B C a b c Hab (Hcbc,Hccb).
 split.
 apply Subc_trans with (b := b).
 assumption.
 assumption.
 apply Sub_psub_n with (b := b).
 assumption.
 split.
 assumption.
 assumption.
Qed.

Theorem Psub_psub_p : forall (A B C:Type)(a:A)(b:B)(c:C),
 (a /cc b) -> (b /cc c) -> (a /cc c).
Proof.
 intros A B C a b c (Hcab,Hcba) (Hcbc,Hccb).
 split.
 apply Subc_trans with (b := b).
 assumption.
 assumption.
 apply Psub_sub_n with (b := b).
 split.
 assumption.
 assumption.
 assumption.
Qed.

------------------------------------------------------------------------

もどる