lemma sats_Union_name_fm : "[ a ∈ M; b ∈ M ; P' ∈ M ; p ∈ M ; θ ∈ M ; τ ∈ M ; leq' ∈ M ]==> sats(M,Union_name_fm,[⟨θ,p⟩,τ,leq',P']@[a,b]) ⟷ Union_name_body(P',leq',τ,⟨θ,p⟩)" unfolding Union_name_fm_def Union_name_body_def tuples_in_M by (subgoal_tac "⟨θ,p⟩∈ M", auto simp add : tuples_in_M)
lemma domD : assumes"τ ∈ M""σ ∈ domain(τ)" shows"σ ∈ M" using assms Transset_M trans_M by (simp flip: setclass_iff)
definition Union_name :: "i ==> i"where "Union_name(τ) ≡ {u ∈ domain(∪(domain(τ))) × P . Union_name_body(P,leq,τ,u)}"
lemma Union_name_M : assumes"τ ∈ M" shows"{u ∈ domain(∪(domain(τ))) × P . Union_name_body(P,leq,τ,u)} ∈ M" unfolding Union_name_def proof - let ?P="λ x . sats(M,Union_name_fm,[x,τ,leq]@[P,τ,leq])" let ?Q="λ x . Union_name_body(P,leq,τ,x)" from‹τ∈M› have"domain(∪(domain(τ)))∈M" (is"?d ∈ _") using domain_closed Union_closed by simp then have"?d × P ∈ M"using cartprod_closed P_in_M by simp have"arity(Union_name_fm)≤6"using arity_Union_name_fm by simp from assms P_in_M leq_in_M arity_Union_name_fm have"[τ,leq] ∈ list(M)""[P,τ,leq] ∈ list(M)"by auto with assms assms P_in_M leq_in_M ‹arity(Union_name_fm)≤6› have"separation(##M,?P)" using separation_ax by simp with‹?d × P ∈ M› have A:"{ u ∈ ?d × P . ?P(u) } ∈ M" using separation_iff by force have"?P(x)⟷ ?Q(x)"if"x∈ ?d×P"for x proof - from‹x∈ ?d×P› have"x = ⟨fst(x),snd(x)⟩"using Pair_fst_snd_eq by simp with‹x∈?d×P›‹?d∈M› have"fst(x) ∈ M""snd(x) ∈ M" using mtrans fst_type snd_type P_in_M unfolding M_trans_def by auto then have"?P(⟨fst(x),snd(x)⟩) ⟷ ?Q(⟨fst(x),snd(x)⟩)" using P_in_M sats_Union_name_fm P_in_M ‹τ∈M› leq_in_M by simp with‹x = ⟨fst(x),snd(x)⟩› show"?P(x) ⟷ ?Q(x)"using that by simp qed thenshow ?thesis using Collect_cong A by simp qed
lemma Union_MG_Eq : assumes"a ∈ M[G]"and"a = val(G,τ)"and"filter(G)"and"τ ∈ M" shows"∪ a = val(G,Union_name(τ))" proof -
{ fix x assume"x ∈∪ (val(G,τ))" thenobtain i where"i ∈ val(G,τ)""x ∈ i"by blast with‹τ ∈ M›obtain σ q where "q ∈ G""⟨σ,q⟩∈ τ""val(G,σ) = i""σ ∈ M" using elem_of_val_pair domD by blast with‹x ∈ i›obtain θ r where "r ∈ G""⟨θ,r⟩∈ σ""val(G,θ) = x""θ ∈ M" using elem_of_val_pair domD by blast with‹⟨σ,q⟩∈τ›have"θ ∈ domain(∪(domain(τ)))"by auto with‹filter(G)›‹q∈G›‹r∈G›obtain p where
A: "p ∈ G""⟨p,r⟩∈ leq""⟨p,q⟩∈ leq""p ∈ P""r ∈ P""q ∈ P" using low_bound_filter filterD by blast thenhave"p ∈ M""q∈M""r∈M" using mtrans P_in_M unfolding M_trans_def by auto with A ‹⟨θ,r⟩∈ σ›‹⟨σ,q⟩∈ τ›‹θ ∈ M›‹θ ∈ domain(∪(domain(τ)))›‹σ∈M›have "⟨θ,p⟩∈ Union_name(τ)"unfolding Union_name_def Union_name_body_def by auto with‹p∈P›‹p∈G›have"val(G,θ) ∈ val(G,Union_name(τ))" using val_of_elem by simp with‹val(G,θ)=x›have"x ∈ val(G,Union_name(τ))"by simp
} with‹a=val(G,τ)›have1: "x ∈∪ a ==> x ∈ val(G,Union_name(τ))"for x by simp
{ fix x assume"x ∈ (val(G,Union_name(τ)))" thenobtain θ p where "p ∈ G""⟨θ,p⟩∈ Union_name(τ)""val(G,θ) = x" using elem_of_val_pair by blast with‹filter(G)›have"p∈P"using filterD by simp from‹⟨θ,p⟩∈ Union_name(τ)›obtain σ q r where "σ ∈ domain(τ)""⟨σ,q⟩∈ τ ""⟨θ,r⟩∈ σ""r∈P""q∈P""⟨p,r⟩∈ leq""⟨p,q⟩∈ leq" unfolding Union_name_def Union_name_body_def by force with‹p∈G›‹filter(G)›have"r ∈ G""q ∈ G" using filter_leqD by auto with‹⟨θ,r⟩∈ σ›‹⟨σ,q⟩∈τ›‹q∈P›‹r∈P›have "val(G,σ) ∈ val(G,τ)""val(G,θ) ∈ val(G,σ)" using val_of_elem by simp+ thenhave"val(G,θ) ∈∪ val(G,τ)"by blast with‹val(G,θ)=x›‹a=val(G,τ)›have "x ∈∪ a"by simp
} with‹a=val(G,τ)› have"x ∈ val(G,Union_name(τ)) ==> x ∈∪ a"for x by blast then show ?thesis using1by blast qed
lemma union_in_MG : assumes"filter(G)" shows"Union_ax(##M[G])" proof -
{ fix a assume"a ∈ M[G]" then interpret mgtrans : M_trans "##M[G]" using transitivity_MG by (unfold_locales; auto) from‹a∈_›obtain τ where"τ ∈ M""a=val(G,τ)"using GenExtD by blast then have"Union_name(τ) ∈ M" (is"?π ∈ _") using Union_name_M unfolding Union_name_def by simp then have"val(G,?π) ∈ M[G]" (is"?U ∈ _") using GenExtI by simp with‹a∈_› have"(##M[G])(a)""(##M[G])(?U)"by auto with‹τ ∈ M›‹filter(G)›‹?U ∈ M[G]›‹a=val(G,τ)› have"big_union(##M[G],a,?U)" using Union_MG_Eq Union_abs by simp with‹?U ∈ M[G]› have"∃z[##M[G]]. big_union(##M[G],a,z)"by force
} then have"Union_ax(##M[G])"unfolding Union_ax_def by force then show ?thesis by simp qed
theorem Union_MG : "M_generic(G) ==> Union_ax(##M[G])" by (simp add:M_generic_def union_in_MG)
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.