### New (ZF!) entry Delta_System_Lemma

parent a80f4e41ac2b
This diff is collapsed.
This diff is collapsed.
 subsection\Application to Cohen posets\label{sec:cohen}\ theory Cohen_Posets imports Delta_System begin text\We end this session by applying DSL to the combinatorics of finite function posets. We first define some basic concepts; we take a different approach from \cite{2020arXiv200109715G}, in that the order relation is presented as a predicate (of type @{typ \[i,i] \ o\}). Two elements of a poset are \<^emph>\compatible\ if they have a common lower bound.\ definition compat_in :: "[i,[i,i]\o,i,i]\o" where "compat_in(A,r,p,q) \ \d\A . r(d,p) \ r(d,q)" text\An \<^emph>\antichain\ is a subset of pairwise incompatible members.\ definition antichain :: "[i,[i,i]\o,i]\o" where "antichain(P,leq,A) \ A\P \ (\p\A. \q\A. p\q \ \compat_in(P,leq,p,q))" text\A poset has the \<^emph>\countable chain condition\ (ccc) if all of its antichains are countable.\ definition ccc :: "[i,[i,i]\o]\o" where "ccc(P,leq) \ \A. antichain(P,leq,A) \ countable(A)" text\Finally, the \<^emph>\Cohen poset\ is the set of finite partial functions between two sets with the order of reverse inclusion.\ definition Fn :: "[i,i] \ i" where "Fn(I,J) \ \{(d\J) . d \ {x \ Pow(I). Finite(x)}}" abbreviation Supset :: "i \ i \ o" (infixl \\\ 50) where "f \ g \ g \ f" lemma FnI[intro]: assumes "p : d \ J" "d \ I" "Finite(d)" shows "p \ Fn(I,J)" using assms unfolding Fn_def by auto lemma FnD[dest]: assumes "p \ Fn(I,J)" shows "\d. p : d \ J \ d \ I \ Finite(d)" using assms unfolding Fn_def by auto lemma Fn_is_function: "p \ Fn(I,J) \ function(p)" unfolding Fn_def using fun_is_function by auto lemma restrict_eq_imp_compat: assumes "f \ Fn(I, J)" "g \ Fn(I, J)" "restrict(f, domain(f) \ domain(g)) = restrict(g, domain(f) \ domain(g))" shows "f \ g \ Fn(I, J)" proof - from assms obtain d1 d2 where "f : d1 \ J" "d1 \ Pow(I)" "Finite(d1)" "g : d2 \ J" "d2 \ Pow(I)" "Finite(d2)" by blast with assms show ?thesis using domain_of_fun restrict_eq_imp_Un_into_Pi[of f d1 "\_. J" g d2 "\_. J"] by auto qed text\We finally arrive to our application of DSL.\ lemma ccc_Fn_nat: "ccc(Fn(I,2), (\))" proof - { fix A assume "\ countable(A)" assume "A \ Fn(I, 2)" moreover from this have "countable({p\A. domain(p) = d})" for d proof (cases "Finite(d) \ d \ I") case True with \A \ Fn(I, 2)\ have "{p \ A . domain(p) = d} \ d \ 2" using domain_of_fun by fastforce moreover from True have "Finite(d \ 2)" using Finite_Pi lesspoll_nat_is_Finite by auto ultimately show ?thesis using subset_Finite[of _ "d\2" ] Finite_imp_countable by auto next case False with \A \ Fn(I, 2)\ have "{p \ A . domain(p) = d} = 0" by (intro equalityI) (auto dest!: domain_of_fun) then show ?thesis using empty_lepollI by auto qed moreover have "uncountable({domain(p) . p \ A})" proof from \A \ Fn(I, 2)\ have "A = (\d\{domain(p) . p \ A}. {p\A. domain(p) = d})" by auto moreover assume "countable({domain(p) . p \ A})" moreover note \\d. countable({p\A. domain(p) = d})\ \\countable(A)\ ultimately show "False" using countable_imp_countable_UN[of "{domain(p). p\A}" "\d. {p \ A. domain(p) = d }"] by auto qed moreover from \A \ Fn(I, 2)\ have "p \ A \ Finite(domain(p))" for p using lesspoll_nat_is_Finite[of "domain(p)"] domain_of_fun[of p _ "\_. 2"] by auto ultimately obtain D where "delta_system(D)" "D \ {domain(p) . p \ A}" "D \ \\<^bsub>1\<^esub>" using delta_system_uncountable[of "{domain(p) . p \ A}"] by auto then have delta:"\d1\D. \d2\D. d1 \ d2 \ d1 \ d2 = \D" using delta_system_root_eq_Inter by simp moreover from \D \ \\<^bsub>1\<^esub>\ have "uncountable(D)" using uncountable_iff_subset_eqpoll_Aleph1 by auto moreover from this and \D \ {domain(p) . p \ A}\ obtain p1 where "p1 \ A" "domain(p1) \ D" using uncountable_not_empty[of D] by blast moreover from this and \p1 \ A \ Finite(domain(p1))\ have "Finite(domain(p1))" using Finite_domain by simp moreover define r where "r \ \D" ultimately have "Finite(r)" using subset_Finite[of "r" "domain(p1)"] by auto have "countable({restrict(p,r) . p\A})" proof - have "f \ Fn(I, 2) \ restrict(f,r) \ Pow(r \ 2)" for f using restrict_subset_Sigma[of f _ "\_. 2" r] by (auto dest!:FnD simp: Pi_def) auto with \A \ Fn(I, 2)\ have "{restrict(f,r) . f \ A } \ Pow(r \ 2)" by fast with \Finite(r)\ show ?thesis using Finite_Sigma[THEN Finite_Pow, of r "\_. 2"] by (intro Finite_imp_countable) (auto intro:subset_Finite) qed moreover have "uncountable({p\A. domain(p) \ D})" (is "uncountable(?X)") proof from \D \ {domain(p) . p \ A}\ have "(\p\?X. domain(p)) \ surj(?X, D)" using lam_type unfolding surj_def by auto moreover assume "countable(?X)" moreover note \uncountable(D)\ ultimately show False using surj_countable by auto qed moreover have "D = (\f\Pow(r\2) . {domain(p) . p\{ x\A. restrict(x,r) = f \ domain(x) \ D}})" proof - { fix z assume "z \ D" with \D \ _\ obtain p where "domain(p) = z" "p \ A" by auto moreover from \A \ Fn(I, 2)\ and this have "p : z \ 2" using domain_of_fun by (auto dest!:FnD) moreover from this have "restrict(p,r) \ r \ 2" using function_restrictI[of p r] fun_is_function[of p z "\_. 2"] restrict_subset_Sigma[of p z "\_. 2" r] by (auto simp:Pi_def) ultimately have "\p\A. restrict(p,r) \ Pow(r\2) \ domain(p) = z" by auto } then show ?thesis by (intro equalityI) (force)+ qed obtain f where "uncountable({domain(p) . p\{x\A. restrict(x,r) = f \ domain(x) \ D}})" (is "uncountable(?Y(f))") proof - { from \Finite(r)\ have "countable(Pow(r\2))" using Finite_Sigma[THEN Finite_Pow, THEN Finite_imp_countable] by simp moreover assume "countable(?Y(f))" for f moreover note \D = (\f\Pow(r\2) .?Y(f))\ moreover note \uncountable(D)\ ultimately have "False" using countable_imp_countable_UN[of "Pow(r\2)" ?Y] by auto } with that show ?thesis by auto qed then obtain j where "j \ inj(nat, ?Y(f))" using uncountable_iff_nat_lt_cardinal[THEN iffD1, THEN leI, THEN cardinal_le_imp_lepoll, THEN lepollD] by auto then have "j0 \ j1" "j0 \ ?Y(f)" "j1 \ ?Y(f)" using inj_is_fun[THEN apply_type, of j nat "?Y(f)"] unfolding inj_def by auto then obtain p q where "domain(p) \ domain(q)" "p \ A" "q \ A" "domain(p) \ D" "domain(q) \ D" "restrict(p,r) = restrict(q,r)" by auto moreover from this and delta have "domain(p) \ domain(q) = r" unfolding r_def by simp moreover note \A \ Fn(I, 2)\ moreover from calculation have "p \ q \ Fn(I, 2)" by (rule_tac restrict_eq_imp_compat) auto ultimately have "\p\A. \q\A. p \ q \ compat_in(Fn(I, 2), (\), p, q)" unfolding compat_in_def by (rule_tac bexI[of _ p], rule_tac bexI[of _ q]) blast } then show ?thesis unfolding ccc_def antichain_def by auto qed text\The fact that a poset $P$ has the ccc has useful consequences for the theory of forcing, since it implies that cardinals from the original model are exactly the cardinals in any generic extension by $P$ \cite[Chap.~IV]{kunen2011set}.\ end \ No newline at end of file
 section\The Delta System Lemma\label{sec:dsl}\ theory Delta_System imports Cardinal_Library begin text\A \<^emph>\delta system\ is family of sets with a common pairwise intersection.\ definition delta_system :: "i \ o" where "delta_system(D) \ \r. \A\D. \B\D. A \ B \ A \ B = r" lemma delta_systemI[intro]: assumes "\A\D. \B\D. A \ B \ A \ B = r" shows "delta_system(D)" using assms unfolding delta_system_def by simp lemma delta_systemD[dest]: "delta_system(D) \ \r. \A\D. \B\D. A \ B \ A \ B = r" unfolding delta_system_def by simp text\Hence, pairwise intersections equal the intersection of the whole family.\ lemma delta_system_root_eq_Inter: assumes "delta_system(D)" shows "\A\D. \B\D. A \ B \ A \ B = \D" proof (clarify, intro equalityI, auto) fix A' B' x C assume hyp:"A'\D" "B'\ D" "A'\B'" "x\A'" "x\B'" "C\D" with assms obtain r where delta:"\A\D. \B\D. A \ B \ A \ B = r" by auto show "x \ C" proof (cases "C=A'") case True with hyp and assms show ?thesis by simp next case False moreover note hyp moreover from calculation and delta have "r = C \ A'" "A' \ B' = r" "x\r" by auto ultimately show ?thesis by simp qed qed text\The \<^emph>\Delta System Lemma\ (DSL) states that any uncountable family of finite sets includes an uncountable delta system. This is the simplest non trivial version; others, for cardinals greater than \<^term>\\\<^bsub>1\<^esub>\ assume some weak versions of the generalized continuum hypothesis for the cardinals involved. The proof is essentially the one in \cite[III.2.6]{kunen2011set} for the case \<^term>\\\<^bsub>1\<^esub>\; another similar presentation can be found in \cite[Chap.~16]{JW}.\ lemma delta_system_Aleph1: assumes "\A\F. Finite(A)" "F \ \\<^bsub>1\<^esub>" shows "\D. D \ F \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" proof - text\Since all members are finite,\ from \\A\F. Finite(A)\ have "(\A\F. |A|) : F \ \" (is "?cards : _") by (rule_tac lam_type) simp moreover from this have a:"?cards - {n} = { A\F . |A| = n }" for n using vimage_lam by auto moreover note \F \ \\<^bsub>1\<^esub>\ moreover from calculation text\there are uncountably many have the same cardinal:\ obtain n where "n\\" "|?cards - {n}| = \\<^bsub>1\<^esub>" using eqpoll_Aleph1_cardinal_vimage[of F ?cards] by auto moreover define G where "G \ ?cards - {n}" moreover from calculation have "G \ F" by auto ultimately text\Therefore, without loss of generality, we can assume that all elements of the family have cardinality \<^term>\n\\\.\ have "A\G \ |A| = n" and "G \ \\<^bsub>1\<^esub>" for A using cardinal_Card_eqpoll_iff by auto with \n\\\ text\So we prove the result by induction on this \<^term>\n\ and generalizing \<^term>\G\, since the argument requires changing the family in order to apply the inductive hypothesis.\ have "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" proof (induct arbitrary:G) case 0 \ \This case is impossible\ then have "G \ {0}" using cardinal_0_iff_0 by auto with \G \ \\<^bsub>1\<^esub>\ show ?case using nat_lt_Aleph1 subset_imp_le_cardinal[of G "{0}"] lt_trans2 cardinal_Card_eqpoll_iff by auto next case (succ n) then have "\a\G. Finite(a)" using Finite_cardinal_iff' nat_into_Finite[of "succ(n)"] by fastforce show "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" proof (cases "\p. {A\G . p \ A} \ \\<^bsub>1\<^esub>") case True \ \the positive case, uncountably many sets with a common element\ then obtain p where "{A\G . p \ A} \ \\<^bsub>1\<^esub>" by blast moreover from this have "{A-{p} . A\{X\G. p\X}} \ \\<^bsub>1\<^esub>" (is "?F \ _") using Diff_bij[of "{A\G . p \ A}" "{p}"] comp_bij[OF bij_converse_bij, where C="\\<^bsub>1\<^esub>"] by fast text\Now using the hypothesis of the successor case,\ moreover from \\A. A\G \ |A|=succ(n)\ \\a\G. Finite(a)\ and this have "p\A \ A\G \ |A - {p}| = n" for A using Finite_imp_succ_cardinal_Diff[of _ p] by force moreover from this and \n\\\ have "\a\?F. Finite(a)" using Finite_cardinal_iff' nat_into_Finite by auto moreover text\we may apply the inductive hypothesis to the new family \<^term>\?F\:\ note $$\A. A \ ?F \ |A| = n) \ ?F \ \\<^bsub>1\<^esub> \ \D. D \ ?F \ delta_system(D) \ D \ \\<^bsub>1\<^esub>\ ultimately obtain D where "D\{A-{p} . A\{X\G. p\X}}" "delta_system(D)" "D \ \\<^bsub>1\<^esub>" by auto moreover from this obtain r where "\A\D. \B\D. A \ B \ A \ B = r" by fastforce then have "\A\D.\B\D. A\{p} \ B\{p}\(A \ {p}) \ (B \ {p}) = r\{p}" by blast ultimately have "delta_system({B \ {p} . B\D})" (is "delta_system(?D)") by fastforce moreover from \D \ \\<^bsub>1\<^esub>\ have "|D| = \\<^bsub>1\<^esub>" "Infinite(D)" using cardinal_eqpoll_iff by (auto intro!: uncountable_iff_subset_eqpoll_Aleph1[THEN iffD2] uncountable_imp_Infinite) force moreover from this have "?D \ \\<^bsub>1\<^esub>" using cardinal_map_Un[of D "{p}"] naturals_lt_nat cardinal_eqpoll_iff[THEN iffD1] by simp moreover note \D \ {A-{p} . A\{X\G. p\X}}\ have "?D \ G" proof - { fix A assume "A\G" "p\A" moreover from this have "A = A - {p} \ {p}" by blast ultimately have "A -{p} \ {p} \ G" by auto } with \D \ {A-{p} . A\{X\G. p\X}}\ show ?thesis by blast qed ultimately show "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" by auto next case False note \\ (\p. {A \ G . p \ A} \ \\<^bsub>1\<^esub>)\ \ \the other case\ moreover from \G \ \\<^bsub>1\<^esub>\ have "{A \ G . p \ A} \ \\<^bsub>1\<^esub>" (is "?G(p) \ _") for p by (blast intro:lepoll_eq_trans[OF subset_imp_lepoll]) ultimately have "?G(p) \ \\<^bsub>1\<^esub>" for p unfolding lesspoll_def by simp then (* may omit the previous step if unfolding here: *) have "?G(p) \ \" for p using lesspoll_aleph_plus_one[of 0] Aleph_zero_eq_nat by auto moreover have "{A \ G . S \ A \ 0} = (\p\S. ?G(p))" for S by auto ultimately have "countable(S) \ countable({A \ G . S \ A \ 0})" for S using InfCard_nat Card_nat le_Card_iff[THEN iffD2, THEN  leqpoll_imp_cardinal_UN_le, THEN  le_Card_iff[THEN iffD1], of \ S] unfolding countable_def by simp text\For every countable subfamily of \<^term>\G\ there is another some element disjoint from all of them:\ have "\A\G. \S\X. S \ A = 0" if "|X| < \\<^bsub>1\<^esub>" "X \ G" for X proof - from \n\\\ \\A. A\G \ |A| = succ(n)\ have "A\G \ Finite(A)" for A using cardinal_Card_eqpoll_iff unfolding Finite_def by fastforce with \X\G\ have "A\X \ countable(A)" for A using Finite_imp_countable by auto with \|X| < \\<^bsub>1\<^esub>\ have "countable(\X)" using Card_nat[THEN cardinal_lt_csucc_iff, of X] countable_union_countable countable_iff_cardinal_le_nat unfolding Aleph_def by simp with \countable(_) \ countable({A \ G . _ \ A \ 0})\ have "countable({A \ G . (\X) \ A \ 0})" . with \G \ \\<^bsub>1\<^esub>\ obtain B where "B\G" "B \ {A \ G . (\X) \ A \ 0}" using nat_lt_Aleph1 cardinal_Card_eqpoll_iff[of "\\<^bsub>1\<^esub>" G] uncountable_not_subset_countable[of "{A \ G . (\X) \ A \ 0}" G] uncountable_iff_nat_lt_cardinal by auto then show "\A\G. \S\X. S \ A = 0" by auto qed moreover from \G \ \\<^bsub>1\<^esub>\ obtain b where "b\G" using uncountable_iff_subset_eqpoll_Aleph1 uncountable_not_empty by blast ultimately text\Hence, the hypotheses to perform a bounded-cardinal selection are satisfied,\ obtain S where "S:\\<^bsub>1\<^esub>\G" "\\\\<^bsub>1\<^esub> \ \\\\<^bsub>1\<^esub> \ \<\ \ S\ \ S\ = 0" for \ \ using bounded_cardinal_selection[of "\\<^bsub>1\<^esub>" G "\s a. s \ a = 0" b] by force then have "\ \ \\<^bsub>1\<^esub> \ \ \ \\<^bsub>1\<^esub> \ \\\ \ S\ \ S\ = 0" for \ \ using lt_neq_symmetry[of "\\<^bsub>1\<^esub>" "\\ \. S\ \ S\ = 0"] Card_is_Ord by auto blast text\and a symmetry argument shows that obtained \<^term>\S\ is an injective \<^term>\\\<^bsub>1\<^esub>\-sequence of disjoint elements of \<^term>\G\.\ moreover from this and \\A. A\G \ |A| = succ(n)\ \S : \\<^bsub>1\<^esub> \ G\ have "S \ inj(\\<^bsub>1\<^esub>, G)" using cardinal_succ_not_0 Int_eq_zero_imp_not_eq[of "\\<^bsub>1\<^esub>" "\x. Sx"] unfolding inj_def by fastforce moreover from calculation have "range(S) \ \\<^bsub>1\<^esub>" using inj_bij_range eqpoll_sym unfolding eqpoll_def by fast moreover from calculation have "range(S) \ G" using inj_is_fun range_fun_subset_codomain by fast ultimately show "\D. D \ G \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" using inj_is_fun range_eq_image[of S "\\<^bsub>1\<^esub>" G] image_function[OF fun_is_function, OF inj_is_fun, of S "\\<^bsub>1\<^esub>" G] domain_of_fun[OF inj_is_fun, of S "\\<^bsub>1\<^esub>" G] by (rule_tac x="S\\<^bsub>1\<^esub>" in exI) auto text\This finishes the successor case and hence the proof.\ qed qed with \G \ F\ show ?thesis by blast qed lemma delta_system_uncountable: assumes "\A\F. Finite(A)" "uncountable(F)" shows "\D. D \ F \ delta_system(D) \ D \ \\<^bsub>1\<^esub>" proof - from assms obtain S where "S \ F" "S \ \\<^bsub>1\<^esub>" using uncountable_iff_subset_eqpoll_Aleph1[of F] by auto moreover from \\A\F. Finite(A)\ and this have "\A\S. Finite(A)" by auto ultimately show ?thesis using delta_system_Aleph1[of S] by auto qed end \ No newline at end of file  theory Konig imports Cofinality Cardinal_Library begin text\Now, using the Axiom of choice, we can show that all successor cardinals are regular.\ lemma cf_csucc: assumes "InfCard(z)" shows "cf(z\<^sup>+) = z\<^sup>+" proof (rule ccontr) assume "cf(z\<^sup>+) \ z\<^sup>+" moreover from \InfCard(z)\ have "Ord(z\<^sup>+)" "Ord(z)" "Limit(z)" "Limit(z\<^sup>+)" "Card(z\<^sup>+)" "Card(z)" using InfCard_csucc Card_is_Ord InfCard_is_Card InfCard_is_Limit by fastforce+ moreover from calculation have "cf(z\<^sup>+) < z\<^sup>+" using cf_le_cardinal[of "z\<^sup>+", THEN le_iff[THEN iffD1]] Card_cardinal_eq by simp ultimately obtain G where "G:cf(z\<^sup>+)\ z\<^sup>+" "\\\z\<^sup>+. \y\cf(z\<^sup>+). \ < Gy" using Limit_cofinal_fun_lt[of "z\<^sup>+" _ "cf(z\<^sup>+)"] Ord_cf cf_le_cf_fun[of "z\<^sup>+" "cf(z\<^sup>+)"] le_refl[of "cf(z\<^sup>+)"] by auto with \Card(z)\ \Card(z\<^sup>+)\ \Ord(z\<^sup>+)\ have "\\\cf(z\<^sup>+). |G\| \ z" using apply_type[of G "cf(z\<^sup>+)" "\_. z\<^sup>+", THEN ltI] Card_lt_iff[THEN iffD2] Ord_in_Ord[OF Card_is_Ord, of "z\<^sup>+"] cardinal_lt_csucc_iff[THEN iffD1] by auto from \cf(z\<^sup>+) < z\<^sup>+\ \InfCard(z)\ \Ord(z)\ have "cf(z\<^sup>+) \ z" using cardinal_lt_csucc_iff[of "z" "cf(z\<^sup>+)"] Card_csucc[of "z"] le_Card_iff[of "z" "cf(z\<^sup>+)"] InfCard_is_Card Card_lt_iff[of "cf(z\<^sup>+)" "z\<^sup>+"] lt_Ord[of "cf(z\<^sup>+)" "z\<^sup>+"] by simp with \cf(z\<^sup>+) < z\<^sup>+\ \\\\cf(z\<^sup>+). |G\| \ _\ \InfCard(z)\ have "|\\\cf(z\<^sup>+). G\| \ z" using InfCard_csucc[of z] subset_imp_lepoll[THEN lepoll_imp_Card_le, of "\\\cf(z\<^sup>+). G\" "z"] by (rule_tac leqpoll_imp_cardinal_UN_le) auto moreover note \Ord(z)\ moreover from \\\\z\<^sup>+. \y\cf(z\<^sup>+). \ < Gy\ and this have "z\<^sup>+ \ (\\\cf(z\<^sup>+). G$$" by (blast dest:ltD) ultimately have "z\<^sup>+ \ z" using subset_imp_le_cardinal[of "z\<^sup>+" "\\\cf(z\<^sup>+). G`\"] le_trans InfCard_is_Card Card_csucc[of z] Card_cardinal_eq by auto with \Ord(z)\ show "False" using lt_csucc[of z] not_lt_iff_le[THEN iffD2, of z "z\<^sup>+"] Card_csucc[THEN Card_is_Ord] by auto qed text\And this finishes the calculation of cofinality of Alephs.\ lemma cf_Aleph_succ: "Ord(z) \ cf(\\<^bsub>succ(z)\<^esub>) = \\<^bsub>succ(z)\<^esub>" using Aleph_succ cf_csucc InfCard_Aleph by simp subsection\König's Theorem\label{sec:konig}\ text\We end this section by proving König's Theorem on the cofinality of cardinal exponentiation. This is a strengthening of Cantor's theorem and it is essentially the only basic way to prove strict cardinal inequalities. It is proved rather straightforwardly with the tools already developed.\ lemma konigs_theorem: notes [dest] = InfCard_is_Card Card_is_Ord and [trans] = lt_trans1 lt_trans2 assumes "InfCard(\)" "InfCard(\)" "cf(\) \ \" shows "\ < \\<^bsup>\\\<^esup>"