section‹Forcing extension satisfying the Continuum Hypothesis›
theory CH imports
Kappa_Closed_Notions
Cohen_Posets_Relative begin
context M_ctm2_AC begin
declare Fn_rel_closed[simp del, rule del, simplified setclass_iff, simp, intro] declare Fnle_rel_closed[simp del, rule del, simplified setclass_iff, simp, intro]
lemma Colleq_refl : "refl(Coll,Colleq)" unfolding Fnle_rel_def Fnlerel_def refl_def using RrelI by simp
subsection‹Collapse forcing is sufficiently closed›
― ‹Kunen IV.7.14, only for term‹ℵ›› lemma succ_omega_closed_Coll: "succ(ψ)-closed(Coll,Colleq)" proof -
― ‹Case for finite sequences› have"n∈ψ ==>∀f ∈ n <→ (Coll,converse(Colleq)). ∃q∈M. q ∈ Coll ∧ (∀α∈M. α ∈ n ⟶⟨q, f ` α⟩∈ Colleq)"for n proof (induct rule:nat_induct) case0 then show ?case using zero_lt_Aleph_rel1 zero_in_Fn_rel by (auto simp del:setclass_iff) (rule bexI[OF _ zero_in_M], auto) next case (succ x) then have"∀f∈succ(x) <→ (Coll,converse(Colleq)). ∀α ∈ succ(x). ⟨f`x, f ` α⟩∈ Colleq" proof(intro ballI) fix f α assume"f∈succ(x) <→ (Coll,converse(Colleq))""α∈succ(x)" moreoverfrom‹x∈ψ› this have"f∈succ(x) <→ (Coll,converse(Colleq))" using mono_seqspace_rel_char nat_into_M by simp moreoverfrom calculation succ
consider "α∈x" | "α=x" by auto then show"⟨f`x, f ` α⟩∈ Colleq" proof(cases) case1 then have"⟨α, x⟩∈ Memrel(succ(x))""x∈succ(x)""α∈succ(x)" by auto with‹f∈succ(x) <→ (Coll,converse(Colleq))› show ?thesis using mono_mapD(2)[OF _ ‹α∈succ(x)› _ ‹⟨α, x⟩∈ Memrel(succ(x))›] unfolding mono_seqspace_def by auto next case2 with‹f∈succ(x) <→ (Coll,converse(Colleq))› show ?thesis using Colleq_refl mono_seqspace_is_fun[THEN apply_type] unfolding refl_def by simp qed qed moreover note‹x∈ψ› moreoverfrom this have"f`x ∈ Coll"if"f: succ(x) <→ (Coll,converse(Colleq))"for f using that mono_seqspace_rel_char[simplified, of "succ(x)" Coll "converse(Colleq)"]
nat_into_M[simplified] mono_seqspace_is_fun[of "converse(Colleq)"] by (intro apply_type[of _ "succ(x)"]) (auto simp del:setclass_iff) ultimately show ?case using transM[of _ Coll] by (auto dest:transM simp del:setclass_iff, rule_tac x="f`x"in bexI)
(auto simp del:setclass_iff, simp) qed moreover
― ‹Interesting case: Countably infinite sequences.› have"∀f∈M. f ∈ ψ <→ (Coll,converse(Colleq)) ⟶ (∃q∈M. q ∈ Coll ∧ (∀α∈M. α ∈ ψ ⟶⟨q, f ` α⟩∈ Colleq))" proof(intro ballI impI) fix f let ?rnf="f``ψ" assume"f∈M""f ∈ ψ <→ (Coll,converse(Colleq))" moreoverfrom this have"f∈ψ <→ (Coll,converse(Colleq))""f∈ψ → Coll" using mono_seqspace_rel_char mono_mapD(2) nat_in_M by auto moreoverfrom this have"countable(f`x)"if"x∈ψ"for x using that Fn_rel_is_function countable_iff_lesspoll_rel_Aleph_rel_one by auto moreoverfrom calculation have"?rnf ∈ M""f⊆ψ×Coll" using nat_in_M image_closed Pi_iff by simp_all moreoverfrom calculation have1:"∃d∈?rnf. d 🪙 h ∧ d 🪙 g"if"h ∈ ?rnf""g ∈ ?rnf"for h g proof - from calculation have"?rnf={f`x . x∈ψ}" using image_function[of f ψ] Pi_iff domain_of_fun by auto from‹?rnf=_› that obtain m n where eq:"h=f`m""g=f`n""n∈ψ""m∈ψ" by auto then have"m∪n∈ψ""m≤m∪n""n≤m∪n" using Un_upper1_le Un_upper2_le nat_into_Ord by simp_all with calculation eq ‹?rnf=_› have"f`(m∪n)∈?rnf""f`(m∪n) 🪙 h""f`(m∪n) 🪙 g" using Fnle_relD mono_map_lt_le_is_mono converse_refl[OF Colleq_refl] by auto then show ?thesis by auto qed moreoverfrom calculation have"?rnf ⊆ (ℵ⇀#M (nat → 2))" using subset_trans[OF image_subset[OF ‹f⊆_›,of ψ] Fn_rel_subset_PFun_rel] by simp moreover have"∪ ?rnf ∈ (ℵ⇀#M (nat → 2))" using pfun_Un_filter_closed'[OF ‹?rnf⊆_›1] ‹?rnf∈M› by simp moreoverfrom calculation have"∪?rnf ≺ℵ" using countable_fun_imp_countable_image[of f]
mem_function_space_rel_abs[simplified,OF nat_in_M Coll_in_M ‹f∈M›]
countableI[OF lepoll_rel_refl]
countable_iff_lesspoll_rel_Aleph_rel_one[of "∪?rnf"] by auto moreoverfrom calculation have"∪?rnf∈Coll" unfolding Fn_rel_def by simp moreoverfrom calculation have"∪?rnf 🪙 f ` α "if"α∈ψ"for α using that image_function[OF fun_is_function] domain_of_fun by auto ultimately show"∃q∈M. q ∈ Coll ∧ (∀α∈M. α ∈ ψ ⟶⟨q, f ` α⟩∈ Colleq)" using Fn_rel_is_function Fnle_relI by auto qed ultimately show ?thesis unfolding kappa_closed_rel_def by (auto elim!:leE dest:ltD) qed
lemma dom_dense_closed[intro,simp]: "x∈M ==> dom_dense(x) ∈ M" using separation_in_domain[of x] by simp
lemma domain_f_G: assumes"x ∈ℵ" shows"x ∈ domain(f)" proof - have"(λn∈ψ. 0) ∈ ψ → 2" using function_space_rel_nonempty[of 02 ψ] by auto with assms have"dense(dom_dense(x))""x∈M" using dense_dom_dense InfCard_rel_Aleph_rel[of 1] transitivity[OF _
Aleph_rel_closed[of 1,THEN setclass_iff[THEN iffD1]]] unfolding dense_def by auto with assms obtain p where"p∈dom_dense(x)""p∈G" using M_generic_denseD[of "dom_dense(x)"] by auto then show"x ∈ domain(f)"by blast qed
lemma Un_filter_is_function: assumes"filter(G)" shows"function(∪G)" proof - have"Coll ⊆ℵ⇀#M (ψ → 2)" using Fn_rel_subset_PFun_rel by simp moreover have"∃ d ∈ Coll. d 🪙 f ∧ d 🪙 g"if"f∈G""g∈G"for f g using filter_imp_compat[OF assms ‹f∈G›‹g∈G›] filterD[OF assms] unfolding compat_def compat_in_def by auto ultimately have"∃d ∈ℵ⇀#M (ψ → 2). d 🪙 f ∧ d 🪙 g"if"f∈G""g∈G"for f g using rex_mono[of Coll] that by simp moreover have"G⊆Coll" using assms unfolding filter_def by simp moreoverfrom this have"G ⊆ℵ⇀#M (ψ → 2)" using assms unfolding Fn_rel_def by auto ultimately show ?thesis using pfun_Un_filter_closed[of G] by simp qed
lemma f_G_funtype: shows"f : ℵ→ ψ →[G] 2" proof - have"x ∈ B ==> B ∈ G ==> x ∈ℵ× (ψ →[G] 2)"for B x proof - assume"x∈B""B∈G" moreoverfrom this have"x ∈ M[G]" by (auto dest!: ext.transM simp add:G_in_MG) moreoverfrom calculation have"x ∈ℵ× (ψ → 2)" using Fn_rel_subset_Pow[of "ℵ""ℵ""ψ → 2",
OF _ _ function_space_rel_closed] function_space_rel_char by (auto dest!: M_genericD) moreoverfrom this obtain z w where"x=⟨z,w⟩""z∈ℵ""w:ψ → 2"by auto moreoverfrom calculation have"w ∈ M[G]"by (auto dest:ext.transM) ultimately show ?thesis using ext.function_space_rel_char by auto qed moreover have"function(f)" using Un_filter_is_function generic by fast ultimately show ?thesis using generic domain_f_G Pi_iff by auto qed
lemma surj_dense_closed[intro,simp]: "x ∈ ψ → 2 ==> surj_dense(x) ∈ M" using separation_in_range transM[of x] by simp
lemma reals_sub_image_f_G: assumes"x ∈ ψ → 2" shows"∃α∈ℵ. f ` α = x" proof - from assms have"dense(surj_dense(x))" using dense_surj_dense lepoll_rel_refl InfCard_rel_Aleph_rel unfolding dense_def by auto with‹x ∈ ψ → 2› obtain p where"p∈surj_dense(x)""p∈G" using M_generic_denseD[of "surj_dense(x)"] by blast then show ?thesis using succ_omega_closed_Coll f_G_funtype function_apply_equality[of _ x f_G]
succ_omega_closed_imp_no_new_reals[symmetric] by (auto, rule_tac bexI) (auto simp:Pi_def) qed
lemma f_G_surj_Aleph_rel1_reals: "f∈ surj[G](ℵ, ψ →[G] 2)" using Aleph_rel_sub_closed proof (intro ext.mem_surj_abs[THEN iffD2],simp_all) show"f∈ surj(ℵ, ψ →[G] 2)" using f_G_funtype G_in_MG ext.nat_into_M f_G_in_MG
reals_sub_image_f_G succ_omega_closed_Coll
succ_omega_closed_imp_no_new_reals unfolding surj_def by auto qed
lemma continuum_rel_le_Aleph1_extension: includes G_generic1_lemmas shows"2<up>ℵ[G],M[G]≤ℵ[G]" proof - have"ℵ∈ M[G]""Ord(ℵ)" using Card_rel_is_Ord by auto moreoverfrom this have"ψ →[G] 2 <[G]ℵ" using ext.surj_rel_implies_inj_rel[OF f_G_surj_Aleph_rel1_reals]
f_G_in_MG unfolding lepoll_rel_def by auto with‹Ord(ℵ)› have"|ψ →[G] 2|[G]≤ |ℵ|[G]" using M_subset_MG[OF one_in_G] Aleph_rel_closed[of 1] by (rule_tac ext.lepoll_rel_imp_cardinal_rel_le) simp_all ultimately have"2<up>ℵ[G],M[G]≤ |ℵ[G]|[G]" using ext.lepoll_rel_imp_cardinal_rel_le[of "ℵ""ψ →[G] 2"]
ext.Aleph_rel_zero succ_omega_closed_Coll
succ_omega_closed_imp_Aleph_1_preserved unfolding cexp_rel_def by simp then show"2<up>ℵ[G],M[G]≤ℵ[G]"by simp qed
theorem CH: "ℵ[G] = 2<up>ℵ[G],M[G]" using continuum_rel_le_Aleph1_extension ext.Aleph_rel_succ[of 0]
ext.Aleph_rel_zero ext.csucc_rel_le[of "2<up>ℵ[G],M[G]" ψ]
ext.Card_rel_cexp_rel ext.cantor_cexp_rel[of ψ] ext.Card_rel_nat
le_anti_sym by auto
end ― ‹🍋‹collapse_CH››
subsection‹Models of fragments of $\ZFC + \CH$›
theorem ctm_of_CH: assumes "M ≈ ψ""Transset(M)" "M ⊨ ZC ∪ {⋅Replacement(p)⋅ . p ∈ overhead_CH}" "Φ ⊆ formula""M ⊨ { ⋅Replacement(ground_repl_fm(φ))⋅ . φ ∈ Φ}" shows "∃N. M ⊆ N ∧ N ≈ ψ ∧ Transset(N) ∧ N ⊨ ZC ∪ {⋅CH⋅} ∪ { ⋅Replacement(φ)⋅ . φ ∈ Φ} ∧ (∀α. Ord(α) ⟶ (α ∈ M ⟷ α ∈ N))" proof - from‹M ⊨ ZC ∪ {⋅Replacement(p)⋅ . p ∈ overhead_CH}› interpret M_ZFC3 M using M_satT_overhead_imp_M_ZF3 unfolding overhead_CH_def overhead_notCH_def by auto from‹M ⊨ ZC ∪ {⋅Replacement(p)⋅ . p ∈ overhead_CH}›‹Transset(M)› interpret M_ZF_ground_CH_trans M using M_satT_imp_M_ZF_ground_CH_trans unfolding ZC_def by auto from‹M ≈ ψ› obtain enum where"enum ∈ bij(ψ,M)" using eqpoll_sym unfolding eqpoll_def by blast then interpret M_ctm2_AC_CH M enum by unfold_locales interpret forcing_data1 "Coll""Colleq"0 M enum using zero_in_Fn_rel[of "ℵ""ℵ""ψ → 2"]
zero_top_Fn_rel[of _ "ℵ""ℵ""ψ → 2"]
preorder_on_Fnle_rel[of "ℵ""ℵ""ψ → 2"]
zero_lt_Aleph_rel1 by unfold_locales simp_all obtain G where"M_generic(G)" using generic_filter_existence[OF one_in_P] by auto moreoverfrom this interpret collapse_CH M enum G by unfold_locales have"ℵ[G] = 2<up>ℵ[G],M[G]" using CH . then have"M[G], [] ⊨⋅CH⋅" using ext.is_ContHyp_iff by (simp add:ContHyp_rel_def) then have"M[G] ⊨ ZC ∪ {⋅CH⋅}" using ext.M_satT_ZC by auto moreover have"Transset(M[G])"using Transset_MG . moreover have"M ⊆ M[G]"using M_subset_MG[OF one_in_G] generic by simp moreover note‹M ⊨ { ⋅Replacement(ground_repl_fm(φ))⋅ . φ ∈ Φ}›‹Φ ⊆ formula› ultimately show ?thesis using Ord_MG_iff MG_eqpoll_nat satT_ground_repl_fm_imp_satT_ZF_replacement_fm[of Φ] by (rule_tac x="M[G]"in exI,blast) qed
corollary ctm_ZFC_imp_ctm_CH: assumes "M ≈ ψ""Transset(M)""M ⊨ ZFC" shows "∃N. M ⊆ N ∧ N ≈ ψ ∧ Transset(N) ∧ N ⊨ ZFC ∪ {⋅CH⋅} ∧ (∀α. Ord(α) ⟶ (α ∈ M ⟷ α ∈ N))" proof - from assms have"∃N. M ⊆ N ∧ N ≈ ψ ∧ Transset(N) ∧ N ⊨ ZC ∧ N ⊨ {⋅CH⋅} ∧ N ⊨ {⋅Replacement(x)⋅ . x ∈ formula} ∧ (∀α. Ord(α) ⟶ α ∈ M ⟷ α∈ N)" using ctm_of_CH[of M formula] satT_ZFC_imp_satT_ZC[of M]
satT_mono[OF _ ground_repl_fm_sub_ZFC, of M]
satT_mono[OF _ ZF_replacement_overhead_CH_sub_ZFC, of M]
satT_mono[OF _ ZF_replacement_fms_sub_ZFC, of M] by (simp add: satT_Un_iff) then obtain N where"N ⊨ ZC""N ⊨ {⋅CH⋅}""N ⊨ {⋅Replacement(x)⋅ . x ∈ formula}" "M ⊆ N""N ≈ ψ""Transset(N)""(∀α. Ord(α) ⟶ α ∈ M ⟷ α ∈ N)" by auto moreoverfrom this have"N ⊨ ZFC" using satT_ZC_ZF_replacement_imp_satT_ZFC by auto moreoverfrom this and‹N ⊨ {⋅CH⋅}› have"N ⊨ ZFC ∪ {⋅CH⋅}" using satT_ZC_ZF_replacement_imp_satT_ZFC by auto ultimately show ?thesis by auto qed
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-10)
¤
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.