src/HOL/Library/Cardinality.thy
changeset 53015 a1119cf551e8
parent 52147 9943f8067f11
child 53191 14ab2f821e1d
equal deleted inserted replaced
53009:bb18eed53ed6 53015:a1119cf551e8
   343 definition "card_UNIV = Phantom('a set)
   343 definition "card_UNIV = Phantom('a set)
   344   (let c = of_phantom (card_UNIV :: 'a card_UNIV) in if c = 0 then 0 else 2 ^ c)"
   344   (let c = of_phantom (card_UNIV :: 'a card_UNIV) in if c = 0 then 0 else 2 ^ c)"
   345 instance by intro_classes (simp add: card_UNIV_set_def card_UNIV_set card_UNIV)
   345 instance by intro_classes (simp add: card_UNIV_set_def card_UNIV_set card_UNIV)
   346 end
   346 end
   347 
   347 
   348 lemma UNIV_finite_1: "UNIV = set [finite_1.a\<^isub>1]"
   348 lemma UNIV_finite_1: "UNIV = set [finite_1.a\<^sub>1]"
   349 by(auto intro: finite_1.exhaust)
   349 by(auto intro: finite_1.exhaust)
   350 
   350 
   351 lemma UNIV_finite_2: "UNIV = set [finite_2.a\<^isub>1, finite_2.a\<^isub>2]"
   351 lemma UNIV_finite_2: "UNIV = set [finite_2.a\<^sub>1, finite_2.a\<^sub>2]"
   352 by(auto intro: finite_2.exhaust)
   352 by(auto intro: finite_2.exhaust)
   353 
   353 
   354 lemma UNIV_finite_3: "UNIV = set [finite_3.a\<^isub>1, finite_3.a\<^isub>2, finite_3.a\<^isub>3]"
   354 lemma UNIV_finite_3: "UNIV = set [finite_3.a\<^sub>1, finite_3.a\<^sub>2, finite_3.a\<^sub>3]"
   355 by(auto intro: finite_3.exhaust)
   355 by(auto intro: finite_3.exhaust)
   356 
   356 
   357 lemma UNIV_finite_4: "UNIV = set [finite_4.a\<^isub>1, finite_4.a\<^isub>2, finite_4.a\<^isub>3, finite_4.a\<^isub>4]"
   357 lemma UNIV_finite_4: "UNIV = set [finite_4.a\<^sub>1, finite_4.a\<^sub>2, finite_4.a\<^sub>3, finite_4.a\<^sub>4]"
   358 by(auto intro: finite_4.exhaust)
   358 by(auto intro: finite_4.exhaust)
   359 
   359 
   360 lemma UNIV_finite_5:
   360 lemma UNIV_finite_5:
   361   "UNIV = set [finite_5.a\<^isub>1, finite_5.a\<^isub>2, finite_5.a\<^isub>3, finite_5.a\<^isub>4, finite_5.a\<^isub>5]"
   361   "UNIV = set [finite_5.a\<^sub>1, finite_5.a\<^sub>2, finite_5.a\<^sub>3, finite_5.a\<^sub>4, finite_5.a\<^sub>5]"
   362 by(auto intro: finite_5.exhaust)
   362 by(auto intro: finite_5.exhaust)
   363 
   363 
   364 instantiation Enum.finite_1 :: card_UNIV begin
   364 instantiation Enum.finite_1 :: card_UNIV begin
   365 definition "finite_UNIV = Phantom(Enum.finite_1) True"
   365 definition "finite_UNIV = Phantom(Enum.finite_1) True"
   366 definition "card_UNIV = Phantom(Enum.finite_1) 1"
   366 definition "card_UNIV = Phantom(Enum.finite_1) 1"