src/HOL/Enum.thy
changeset 40657 58a6ba7ccfc5
parent 40652 7bdfc1d6b143
child 40659 b26afaa55a75
equal deleted inserted replaced
40656:36ca3fad1f31 40657:58a6ba7ccfc5
   346 apply (metis finite_1.exhaust)
   346 apply (metis finite_1.exhaust)
   347 done
   347 done
   348 
   348 
   349 end
   349 end
   350 
   350 
       
   351 hide_const a\<^isub>1
       
   352 
   351 datatype finite_2 = a\<^isub>1 | a\<^isub>2
   353 datatype finite_2 = a\<^isub>1 | a\<^isub>2
   352 
   354 
   353 instantiation finite_2 :: enum
   355 instantiation finite_2 :: enum
   354 begin
   356 begin
   355 
   357 
   379 apply (metis finite_2.distinct finite_2.nchotomy)+
   381 apply (metis finite_2.distinct finite_2.nchotomy)+
   380 done
   382 done
   381 
   383 
   382 end
   384 end
   383 
   385 
       
   386 hide_const a\<^isub>1 a\<^isub>2
       
   387 
   384 
   388 
   385 datatype finite_3 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3
   389 datatype finite_3 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3
   386 
   390 
   387 instantiation finite_3 :: enum
   391 instantiation finite_3 :: enum
   388 begin
   392 begin
   411 instance proof (intro_classes)
   415 instance proof (intro_classes)
   412 qed (auto simp add: less_finite_3_def less_eq_finite_3_def split: finite_3.split_asm)
   416 qed (auto simp add: less_finite_3_def less_eq_finite_3_def split: finite_3.split_asm)
   413 
   417 
   414 end
   418 end
   415 
   419 
       
   420 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3
       
   421 
   416 
   422 
   417 datatype finite_4 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4
   423 datatype finite_4 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4
   418 
   424 
   419 instantiation finite_4 :: enum
   425 instantiation finite_4 :: enum
   420 begin
   426 begin
   425 instance proof
   431 instance proof
   426 qed (auto simp add: enum_finite_4_def intro: finite_4.exhaust)
   432 qed (auto simp add: enum_finite_4_def intro: finite_4.exhaust)
   427 
   433 
   428 end
   434 end
   429 
   435 
       
   436 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4
   430 
   437 
   431 
   438 
   432 datatype finite_5 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4 | a\<^isub>5
   439 datatype finite_5 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4 | a\<^isub>5
   433 
   440 
   434 instantiation finite_5 :: enum
   441 instantiation finite_5 :: enum
   439 
   446 
   440 instance proof
   447 instance proof
   441 qed (auto simp add: enum_finite_5_def intro: finite_5.exhaust)
   448 qed (auto simp add: enum_finite_5_def intro: finite_5.exhaust)
   442 
   449 
   443 end
   450 end
       
   451 
       
   452 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4 a\<^isub>5
       
   453 
   444 
   454 
   445 hide_type finite_1 finite_2 finite_3 finite_4 finite_5
   455 hide_type finite_1 finite_2 finite_3 finite_4 finite_5
   446 hide_const (open) n_lists product
   456 hide_const (open) n_lists product
   447 
   457 
   448 end
   458 end