src/HOL/Library/Cardinality.thy
changeset 61585 a9599d3d7610
parent 61166 5976fe402824
child 62390 842917225d56
equal deleted inserted replaced
61584:f06e5a5a4b46 61585:a9599d3d7610
   209 
   209 
   210 class card_UNIV = finite_UNIV +
   210 class card_UNIV = finite_UNIV +
   211   fixes card_UNIV :: "'a card_UNIV"
   211   fixes card_UNIV :: "'a card_UNIV"
   212   assumes card_UNIV: "card_UNIV = Phantom('a) CARD('a)"
   212   assumes card_UNIV: "card_UNIV = Phantom('a) CARD('a)"
   213 
   213 
   214 subsection \<open>Instantiations for @{text "card_UNIV"}\<close>
   214 subsection \<open>Instantiations for \<open>card_UNIV\<close>\<close>
   215 
   215 
   216 instantiation nat :: card_UNIV begin
   216 instantiation nat :: card_UNIV begin
   217 definition "finite_UNIV = Phantom(nat) False"
   217 definition "finite_UNIV = Phantom(nat) False"
   218 definition "card_UNIV = Phantom(nat) 0"
   218 definition "card_UNIV = Phantom(nat) 0"
   219 instance by intro_classes (simp_all add: finite_UNIV_nat_def card_UNIV_nat_def)
   219 instance by intro_classes (simp_all add: finite_UNIV_nat_def card_UNIV_nat_def)
   532    else Code.abort
   532    else Code.abort
   533      (STR ''subset_eq (List.coset _) (List.set _) requires type class instance card_UNIV'')
   533      (STR ''subset_eq (List.coset _) (List.set _) requires type class instance card_UNIV'')
   534      (\<lambda>_. List.coset xs \<subseteq> set ys))"
   534      (\<lambda>_. List.coset xs \<subseteq> set ys))"
   535 by simp
   535 by simp
   536 
   536 
   537 notepad begin -- "test code setup"
   537 notepad begin \<comment> "test code setup"
   538 have "List.coset [True] = set [False] \<and> 
   538 have "List.coset [True] = set [False] \<and> 
   539       List.coset [] \<subseteq> List.set [True, False] \<and> 
   539       List.coset [] \<subseteq> List.set [True, False] \<and> 
   540       finite (List.coset [True])"
   540       finite (List.coset [True])"
   541   by eval
   541   by eval
   542 end
   542 end