Theory Definitions_Main
section‹Main definitions of the development›
theory Definitions_Main
imports
Not_CH
Absolute_Versions
begin
text‹This theory gathers the main definitions of the Forcing session.
It might be considered as the bare minimum reading requisite to
trust that our development indeed formalizes the theory of
forcing. This should be mathematically clear since this is the
only known method for obtaining proper extensions of ctms while
preserving the ordinals.
The main theorem of this session and all of its relevant definitions
appear in Section~\ref{sec:def-main-forcing}. The reader trusting
all the libraries in which our development is based, might jump
directly there. But in case one wants to dive deeper, the following
sections treat some basic concepts in the ZF logic
(Section~\ref{sec:def-main-ZF}) and in the
ZF-Constructible library (Section~\ref{sec:def-main-relative})
on which our definitions are built.
›
declare [[show_question_marks=false]]
no_notation add (infixl ‹#+› 65)
notation add (infixl ‹+⇩ω› 65)
hide_const (open) Order.pred
subsection‹ZF\label{sec:def-main-ZF}›
text‹For the basic logic ZF we restrict ourselves to just a few
concepts.›
thm bij_def[unfolded inj_def surj_def]
text‹@{thm [display] bij_def[unfolded inj_def surj_def]}›
thm eqpoll_def
text‹@{thm [display] eqpoll_def}›
thm Transset_def
text‹@{thm [display] Transset_def}›
thm Ord_def
text‹@{thm [display] Ord_def}›
thm lt_def
text‹@{thm [display] lt_def}›
text‹With the concepts of empty set and successor in place,›
lemma empty_def' : "∀x. x ∉ 0" by simp
lemma succ_def' : "succ(i) = i ∪ {i}" by blast
text‹we can define the set of natural numbers \<^term>‹ω›. In the
sources, it is defined as a fixpoint, but here we just write
its characterization as the first limit ordinal.›
thm Limit_nat[unfolded Limit_def] nat_le_Limit[unfolded Limit_def]
text‹@{thm [display] Limit_nat[unfolded Limit_def]
nat_le_Limit[unfolded Limit_def]}›
text‹Then, addition and predecessor are inductively characterized
as follows:›
thm add_0_right add_succ_right pred_0 pred_succ_eq
text‹@{thm [display] add_succ_right add_0_right pred_0 pred_succ_eq}›
text‹Lists on a set \<^term>‹A› can be characterized by being
recursively generated from the empty list \<^term>‹[]› and the
operation \<^term>‹Cons› that adds a new element to the left end;
the induction theorem for them show that the characterization is
“complete”.›
thm Nil Cons list.induct
text‹@{thm [display] Nil Cons list.induct }›
text‹Length, concatenation, and \<^term>‹n›th element of lists are
recursively characterized as follows.›
thm length.simps app.simps nth_0 nth_Cons
text‹@{thm [display] length.simps app.simps nth_0 nth_Cons}›
txt‹We have the usual Haskell-like notation for iterated applications
of \<^term>‹Cons›:›
lemma Cons_app : "[a,b,c] = Cons(a,Cons(b,Cons(c,[])))" ..
txt‹Relative quantifiers restrict the range of the bound variable to a
class \<^term>‹M› of type \<^typ>‹i⇒o›; that is, a truth-valued function with
set arguments.›
lemma "∀x[M]. P(x) ≡ ∀x. M(x) ⟶ P(x)"
"∃x[M]. P(x) ≡ ∃x. M(x) ∧ P(x)"
unfolding rall_def rex_def .
txt‹Finally, a set can be viewed (“cast”) as a class using the
following function of type \<^typ>‹i⇒(i⇒o)›.›
thm setclass_iff
text‹@{thm [display] setclass_iff}›
subsection‹Relative concepts\label{sec:def-main-relative}›
txt‹A list of relative concepts (mostly from the ZF-Constructible
library) follows next.›
thm big_union_def
text‹@{thm [display] big_union_def}›
thm upair_def
text‹@{thm [display] upair_def}›
thm pair_def
text‹@{thm [display] pair_def}›
thm successor_def[unfolded is_cons_def union_def]
text‹@{thm [display] successor_def[unfolded is_cons_def union_def]}›
thm empty_def
text‹@{thm [display] empty_def}›
thm transitive_set_def[unfolded subset_def]
text‹@{thm [display] transitive_set_def[unfolded subset_def]}›
thm ordinal_def
text‹@{thm [display] ordinal_def}›
thm image_def
text‹@{thm [display] image_def}›
thm fun_apply_def
text‹@{thm [display] fun_apply_def}›
thm is_function_def
text‹@{thm [display] is_function_def}›
thm is_relation_def
text‹@{thm [display] is_relation_def}›
thm is_domain_def
text‹@{thm [display] is_domain_def}›
thm typed_function_def
text‹@{thm [display] typed_function_def}›
thm is_function_space_def[unfolded is_funspace_def]
function_space_rel_def surjection_def
text‹@{thm [display] is_function_space_def[unfolded is_funspace_def]
function_space_rel_def surjection_def}›
txt‹Relative version of the $\ZFC$ axioms›
thm extensionality_def
text‹@{thm [display] extensionality_def}›
thm foundation_ax_def
text‹@{thm [display] foundation_ax_def}›
thm upair_ax_def
text‹@{thm [display] upair_ax_def}›
thm Union_ax_def
text‹@{thm [display] Union_ax_def}›
thm power_ax_def[unfolded powerset_def subset_def]
text‹@{thm [display] power_ax_def[unfolded powerset_def subset_def]}›
thm infinity_ax_def
text‹@{thm [display] infinity_ax_def}›
thm choice_ax_def
text‹@{thm [display] choice_ax_def}›
thm separation_def
text‹@{thm [display] separation_def}›
thm univalent_def
text‹@{thm [display] univalent_def}›
thm strong_replacement_def
text‹@{thm [display] strong_replacement_def}›
text‹Internalized formulas›
thm Member Equal Nand Forall formula.induct
text‹@{thm [display] Member Equal Nand Forall formula.induct}›
thm arity.simps
text‹@{thm [display] arity.simps}›
txt‹We have the satisfaction relation between $\in$-models and
first order formulas (given a “environment” list representing
the assignment of free variables),›
thm mem_iff_sats equal_iff_sats sats_Nand_iff sats_Forall_iff
text‹@{thm [display] mem_iff_sats equal_iff_sats sats_Nand_iff sats_Forall_iff}›
txt‹as well as the satisfaction of an arbitrary set of sentences.›
thm satT_def
text‹@{thm [display] satT_def}›
txt‹The internalized (viz. as elements of the set \<^term>‹formula›)
version of the axioms follow next.›
thm ZF_union_iff_sats ZF_power_iff_sats ZF_pairing_iff_sats
ZF_foundation_iff_sats ZF_extensionality_iff_sats
ZF_infinity_iff_sats sats_ZF_separation_fm_iff
sats_ZF_replacement_fm_iff ZF_choice_iff_sats
text‹@{thm [display] ZF_union_iff_sats ZF_power_iff_sats
ZF_pairing_iff_sats
ZF_foundation_iff_sats ZF_extensionality_iff_sats
ZF_infinity_iff_sats sats_ZF_separation_fm_iff
sats_ZF_replacement_fm_iff ZF_choice_iff_sats}›
thm ZF_fin_def ZF_inf_def ZF_def ZFC_fin_def ZFC_def
text‹@{thm [display] ZF_fin_def ZF_inf_def ZF_def ZFC_fin_def
ZFC_def}›
subsection‹Forcing \label{sec:def-main-forcing}›
thm extensions_of_ctms
text‹@{thm [display] extensions_of_ctms}›
txt‹In order to state the defining property of the relative
equipotence relation, we work under the assumptions of the
locale \<^term>‹M_cardinals›. They comprise a finite set
of instances of Separation and Replacement to prove
closure properties of the transitive class \<^term>‹M›.›
lemma (in M_cardinals) eqpoll_def' :
assumes "M(A)" "M(B)" shows "A ≈⇗M⇖ B ⟷ (∃f[M]. f ∈ bij(A,B))"
using assms unfolding eqpoll_rel_def by auto
txt‹Below, $\mu$ denotes the minimum operator on the ordinals.›
lemma cardinalities_defs :
fixes M::"i⇒o"
shows
"|A|⇗M⇖ ≡ μ i. M(i) ∧ i ≈⇗M⇖ A"
"Card⇗M⇖(α) ≡ α = |α|⇗M⇖"
"κ⇗↑ν,M⇖ ≡ |ν →⇗M⇖ κ|⇗M⇖"
"(κ⇧+)⇗M⇖ ≡ μ x. M(x) ∧ Card⇗M⇖(x) ∧ κ < x"
"CH⇗M⇖ ≡ ℵ⇘1⇙⇗M⇖ = 2⇗↑ℵ⇘0⇙⇗M⇖,M⇖"
unfolding cardinal_rel_def cexp_rel_def
csucc_rel_def Card_rel_def ContHyp_rel_def .
context M_aleph
begin
txt‹As in the previous Lemma @{thm [source] eqpoll_def'}, we are now under
the assumptions of the locale \<^term>‹M_aleph›. The axiom instances
included are sufficient to state and prove the defining
properties of the relativized \<^term>‹Aleph› function
(in particular, the required ability to perform transfinite recursions).›
thm Aleph_rel_zero Aleph_rel_succ Aleph_rel_limit
text‹@{thm [display] Aleph_rel_zero Aleph_rel_succ Aleph_rel_limit}›
end
lemma ContHyp_rel_def' :
fixes N::"i⇒o"
shows
"CH⇗N⇖ ≡ ℵ⇘1⇙⇗N⇖ = 2⇗↑ℵ⇘0⇙⇗N⇖,N⇖"
unfolding ContHyp_rel_def .
txt‹Under appropriate hypothesis (this time, from the locale \<^term>‹M_master›),
\<^term>‹CH⇗M⇖› is equivalent to its fully relational version \<^term>‹is_ContHyp›.
As a sanity check, we see that if the transitive class is indeed \<^term>‹𝒱›,
we recover the original $\CH$.›
thm M_master.is_ContHyp_iff is_ContHyp_iff_CH[unfolded ContHyp_def]
text‹@{thm [display] M_master.is_ContHyp_iff
is_ContHyp_iff_CH[unfolded ContHyp_def]}›
txt‹In turn, the fully relational version evaluated on a nonempty
transitive \<^term>‹A› is equivalent to the satisfaction of the
first-order formula \<^term>‹⋅CH⋅›.›
thm is_ContHyp_iff_sats
text‹@{thm [display] is_ContHyp_iff_sats}›
thm ctm_of_not_CH
text‹@{thm [display] ctm_of_not_CH}›
end