src/HOL/Enum.thy
changeset 41085 a549ff1d4070
parent 41078 051251fde456
child 41115 2c362ff5daf4
equal deleted inserted replaced
41084:a434f89a9962 41085:a549ff1d4070
   543 apply (metis finite_1.exhaust)
   543 apply (metis finite_1.exhaust)
   544 done
   544 done
   545 
   545 
   546 end
   546 end
   547 
   547 
   548 hide_const a\<^isub>1
   548 hide_const (open) a\<^isub>1
   549 
   549 
   550 datatype finite_2 = a\<^isub>1 | a\<^isub>2
   550 datatype finite_2 = a\<^isub>1 | a\<^isub>2
   551 
   551 
   552 notation (output) a\<^isub>1  ("a\<^isub>1")
   552 notation (output) a\<^isub>1  ("a\<^isub>1")
   553 notation (output) a\<^isub>2  ("a\<^isub>2")
   553 notation (output) a\<^isub>2  ("a\<^isub>2")
   596 apply (metis finite_2.distinct finite_2.nchotomy)+
   596 apply (metis finite_2.distinct finite_2.nchotomy)+
   597 done
   597 done
   598 
   598 
   599 end
   599 end
   600 
   600 
   601 hide_const a\<^isub>1 a\<^isub>2
   601 hide_const (open) a\<^isub>1 a\<^isub>2
   602 
   602 
   603 
   603 
   604 datatype finite_3 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3
   604 datatype finite_3 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3
   605 
   605 
   606 notation (output) a\<^isub>1  ("a\<^isub>1")
   606 notation (output) a\<^isub>1  ("a\<^isub>1")
   649 instance proof (intro_classes)
   649 instance proof (intro_classes)
   650 qed (auto simp add: less_finite_3_def less_eq_finite_3_def split: finite_3.split_asm)
   650 qed (auto simp add: less_finite_3_def less_eq_finite_3_def split: finite_3.split_asm)
   651 
   651 
   652 end
   652 end
   653 
   653 
   654 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3
   654 hide_const (open) a\<^isub>1 a\<^isub>2 a\<^isub>3
   655 
   655 
   656 
   656 
   657 datatype finite_4 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4
   657 datatype finite_4 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4
   658 
   658 
   659 notation (output) a\<^isub>1  ("a\<^isub>1")
   659 notation (output) a\<^isub>1  ("a\<^isub>1")
   685     by (auto, case_tac x) auto
   685     by (auto, case_tac x) auto
   686 qed (auto simp add: enum_finite_4_def intro: finite_4.exhaust)
   686 qed (auto simp add: enum_finite_4_def intro: finite_4.exhaust)
   687 
   687 
   688 end
   688 end
   689 
   689 
   690 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4
   690 hide_const (open) a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4
   691 
   691 
   692 
   692 
   693 datatype finite_5 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4 | a\<^isub>5
   693 datatype finite_5 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4 | a\<^isub>5
   694 
   694 
   695 notation (output) a\<^isub>1  ("a\<^isub>1")
   695 notation (output) a\<^isub>1  ("a\<^isub>1")
   722     by (auto, case_tac x) auto
   722     by (auto, case_tac x) auto
   723 qed (auto simp add: enum_finite_5_def intro: finite_5.exhaust)
   723 qed (auto simp add: enum_finite_5_def intro: finite_5.exhaust)
   724 
   724 
   725 end
   725 end
   726 
   726 
   727 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4 a\<^isub>5
   727 hide_const (open) a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4 a\<^isub>5
   728 
   728 
   729 
   729 
   730 hide_type finite_1 finite_2 finite_3 finite_4 finite_5
   730 hide_type (open) finite_1 finite_2 finite_3 finite_4 finite_5
   731 hide_const (open) enum enum_all enum_ex n_lists all_n_lists ex_n_lists product
   731 hide_const (open) enum enum_all enum_ex n_lists all_n_lists ex_n_lists product
   732 
   732 
   733 end
   733 end