(* Title: ZF/AC/AC7_AC9.thy Author: Krzysztof Grabczewski The proofs needed to state that AC7, AC8 and AC9 are equivalent to the previous instances of AC. *)
theory AC7_AC9 imports AC_Equiv begin
(* ********************************************************************** *) (* Lemmas used in the proofs AC7 \<Longrightarrow> AC6 and AC9 \<Longrightarrow> AC1 *) (* - Sigma_fun_space_not0 *) (* - Sigma_fun_space_eqpoll *) (* ********************************************************************** *)
lemma Sigma_fun_space_not0: "[0∉A; B ∈ A]==> (nat->∪(A)) * B ≠ 0" by (blast dest!: Sigma_empty_iff [THEN iffD1] Union_empty_iff [THEN iffD1])
lemma AC6_AC7: "AC6 ==> AC7" by (unfold AC6_def AC7_def, blast)
(* ********************************************************************** *) (* AC7 \<Longrightarrow> AC6, Rubin & Rubin p. 12, Theorem 2.8 *) (* The case of the empty family of sets added in order to complete *) (* the proof. *) (* ********************************************************************** *)
lemma lemma1_1: "y ∈ (∏B ∈ A. Y*B) ==> (λB ∈ A. snd(y`B)) ∈ (∏B ∈ A. B)" by (fast intro!: lam_type snd_type apply_type)
lemma lemma1_2: "y ∈ (∏B ∈ {Y*C. C ∈ A}. B) ==> (λB ∈ A. y`(Y*B)) ∈ (∏B ∈ A. Y*B)" apply (fast intro!: lam_type apply_type) done
lemma AC7_AC6_lemma1: "(∏B ∈ {(nat->∪(A))*C. C ∈ A}. B) ≠ 0 ==> (∏B ∈ A. B) ≠ 0" by (fast intro!: equals0I lemma1_1 lemma1_2)
lemma AC7_AC6_lemma2: "0 ∉ A ==> 0 ∉ {(nat -> ∪(A)) * C. C ∈ A}" by (blast dest: Sigma_fun_space_not0)
(* ********************************************************************** *) (* AC9 \<Longrightarrow> AC1 *) (* The idea of this proof comes from "Equivalents of the Axiom of Choice" *) (* by Rubin & Rubin. But (x * y) is not necessarily equipollent to *) (* (x * y) \<union> {0} when y is a set of total functions acting from nat to *) (* \<Union>(A) -- therefore we have used the set (y * nat) instead of y. *) (* ********************************************************************** *)
lemma snd_lepoll_SigmaI: "b ∈ B ==> X < B × X" by (blast intro: lepoll_trans prod_lepoll_self eqpoll_imp_lepoll
prod_commute_eqpoll)
lemma nat_lepoll_lemma: "[0 ∉ A; B ∈ A]==> nat < ((nat →∪(A)) × B) × nat" by (blast dest: Sigma_fun_space_not0 intro: snd_lepoll_SigmaI)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.