src/HOL/Cardinals/Cardinal_Arithmetic.thy
changeset 62390 842917225d56
parent 61943 7fba644ed827
child 63040 eb4ddd18d635
equal deleted inserted replaced
62380:29800666e526 62390:842917225d56
   224 shows "|Func A {x}| =o |{x}|"
   224 shows "|Func A {x}| =o |{x}|"
   225 proof (rule ordIso_symmetric)
   225 proof (rule ordIso_symmetric)
   226   def f \<equiv> "\<lambda>y a. if y = x \<and> a \<in> A then x else undefined"
   226   def f \<equiv> "\<lambda>y a. if y = x \<and> a \<in> A then x else undefined"
   227   have "Func A {x} \<subseteq> f ` {x}" unfolding f_def Func_def by (force simp: fun_eq_iff)
   227   have "Func A {x} \<subseteq> f ` {x}" unfolding f_def Func_def by (force simp: fun_eq_iff)
   228   hence "bij_betw f {x} (Func A {x})" unfolding bij_betw_def inj_on_def f_def Func_def
   228   hence "bij_betw f {x} (Func A {x})" unfolding bij_betw_def inj_on_def f_def Func_def
   229     by (auto split: split_if_asm)
   229     by (auto split: if_split_asm)
   230   thus "|{x}| =o |Func A {x}|" using card_of_ordIso by blast
   230   thus "|{x}| =o |Func A {x}|" using card_of_ordIso by blast
   231 qed
   231 qed
   232 
   232 
   233 lemma cone_cexp: "cone ^c r =o cone"
   233 lemma cone_cexp: "cone ^c r =o cone"
   234   unfolding cexp_def cone_def Field_card_of by (rule Func_singleton)
   234   unfolding cexp_def cone_def Field_card_of by (rule Func_singleton)
   237   fixes A :: "'a set"
   237   fixes A :: "'a set"
   238   shows "|Func (UNIV :: bool set) A| =o |A \<times> A|"
   238   shows "|Func (UNIV :: bool set) A| =o |A \<times> A|"
   239 proof (rule ordIso_symmetric)
   239 proof (rule ordIso_symmetric)
   240   def f \<equiv> "\<lambda>(x::'a,y) b. if A = {} then undefined else if b then x else y"
   240   def f \<equiv> "\<lambda>(x::'a,y) b. if A = {} then undefined else if b then x else y"
   241   have "Func (UNIV :: bool set) A \<subseteq> f ` (A \<times> A)" unfolding f_def Func_def
   241   have "Func (UNIV :: bool set) A \<subseteq> f ` (A \<times> A)" unfolding f_def Func_def
   242     by (auto simp: image_iff fun_eq_iff split: option.splits split_if_asm) blast
   242     by (auto simp: image_iff fun_eq_iff split: option.splits if_split_asm) blast
   243   hence "bij_betw f (A \<times> A) (Func (UNIV :: bool set) A)"
   243   hence "bij_betw f (A \<times> A) (Func (UNIV :: bool set) A)"
   244     unfolding bij_betw_def inj_on_def f_def Func_def by (auto simp: fun_eq_iff)
   244     unfolding bij_betw_def inj_on_def f_def Func_def by (auto simp: fun_eq_iff)
   245   thus "|A \<times> A| =o |Func (UNIV :: bool set) A|" using card_of_ordIso by blast
   245   thus "|A \<times> A| =o |Func (UNIV :: bool set) A|" using card_of_ordIso by blast
   246 qed
   246 qed
   247 
   247