print_translation\<open> let fun card_univ_tr' ctxt [Const (\<^const_syntax>\UNIV\, Type (_, [T]))] = Syntax.const \<^syntax_const>\<open>_type_card\<close> $ Syntax_Phases.term_of_typ ctxt T in [(\<^const_syntax>\<open>card\<close>, card_univ_tr')] end \<close>
instantiation prod :: (card_UNIV, card_UNIV) card_UNIV begin definition"card_UNIV = Phantom('a \ 'b)
(of_phantom (card_UNIV :: 'a card_UNIV) * of_phantom (card_UNIV :: 'b card_UNIV))" instanceby intro_classes (simp add: card_UNIV_prod_def card_UNIV) end
instantiation sum :: (finite_UNIV, finite_UNIV) finite_UNIV begin definition"finite_UNIV = Phantom('a + 'b)
(of_phantom (finite_UNIV :: 'a finite_UNIV) \ of_phantom (finite_UNIV :: 'b finite_UNIV))" instance by intro_classes (simp add: finite_UNIV_sum_def finite_UNIV) end
instantiation sum :: (card_UNIV, card_UNIV) card_UNIV begin definition"card_UNIV = Phantom('a + 'b)
(let ca = of_phantom (card_UNIV :: 'a card_UNIV);
cb = of_phantom (card_UNIV :: 'b card_UNIV) inif ca \<noteq> 0 \<and> cb \<noteq> 0 then ca + cb else 0)" instanceby intro_classes (auto simp add: card_UNIV_sum_def card_UNIV card_UNIV_sum) end
instantiation"fun" :: (finite_UNIV, card_UNIV) finite_UNIV begin definition"finite_UNIV = Phantom('a \ 'b)
(let cb = of_phantom (card_UNIV :: 'b card_UNIV) in cb = 1 \<or> of_phantom (finite_UNIV :: 'a finite_UNIV) \<and> cb \<noteq> 0)" instance by intro_classes (auto simp add: finite_UNIV_fun_def Let_def card_UNIV finite_UNIV finite_UNIV_fun card_gt_0_iff) end
instantiation"fun" :: (card_UNIV, card_UNIV) card_UNIV begin definition"card_UNIV = Phantom('a \ 'b)
(let ca = of_phantom (card_UNIV :: 'a card_UNIV);
cb = of_phantom (card_UNIV :: 'b card_UNIV) inif ca \<noteq> 0 \<and> cb \<noteq> 0 \<or> cb = 1 then cb ^ ca else 0)" instanceby intro_classes (simp add: card_UNIV_fun_def card_UNIV Let_def card_fun) end
instantiation option :: (finite_UNIV) finite_UNIV begin definition"finite_UNIV = Phantom('a option) (of_phantom (finite_UNIV :: 'a finite_UNIV))" instanceby intro_classes (simp add: finite_UNIV_option_def finite_UNIV) end
instantiation option :: (card_UNIV) card_UNIV begin definition"card_UNIV = Phantom('a option)
(let c = of_phantom (card_UNIV :: 'a card_UNIV) in if c \ 0 then Suc c else 0)" instanceby intro_classes (simp add: card_UNIV_option_def card_UNIV card_UNIV_option) end
instantiation String.literal :: card_UNIV begin definition"finite_UNIV = Phantom(String.literal) False" definition"card_UNIV = Phantom(String.literal) 0" instance by intro_classes (simp_all add: card_UNIV_literal_def finite_UNIV_literal_def infinite_literal card_literal) end
instantiation set :: (finite_UNIV) finite_UNIV begin definition"finite_UNIV = Phantom('a set) (of_phantom (finite_UNIV :: 'a finite_UNIV))" instanceby intro_classes (simp add: finite_UNIV_set_def finite_UNIV Finite_Set.finite_set) end
instantiation set :: (card_UNIV) card_UNIV begin definition"card_UNIV = Phantom('a set)
(let c = of_phantom (card_UNIV :: 'a card_UNIV) in if c = 0 then 0 else 2 ^ c)" instanceby intro_classes (simp add: card_UNIV_set_def card_UNIV_set card_UNIV) end
lemma UNIV_finite_1: "UNIV = set [finite_1.a\<^sub>1]" by(auto intro: finite_1.exhaust)
lemma UNIV_finite_2: "UNIV = set [finite_2.a\<^sub>1, finite_2.a\<^sub>2]" by(auto intro: finite_2.exhaust)
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 ist noch experimentell.