src/HOL/Enum.thy
changeset 40900 1d5f76d79856
parent 40898 882e860a1e83
child 41078 051251fde456
equal deleted inserted replaced
40899:ef6fde932f4c 40900:1d5f76d79856
   316 
   316 
   317 text {* We define small finite types for the use in Quickcheck *}
   317 text {* We define small finite types for the use in Quickcheck *}
   318 
   318 
   319 datatype finite_1 = a\<^isub>1
   319 datatype finite_1 = a\<^isub>1
   320 
   320 
       
   321 notation (output) a\<^isub>1  ("a\<^isub>1")
       
   322 
   321 instantiation finite_1 :: enum
   323 instantiation finite_1 :: enum
   322 begin
   324 begin
   323 
   325 
   324 definition
   326 definition
   325   "enum = [a\<^isub>1]"
   327   "enum = [a\<^isub>1]"
   350 
   352 
   351 hide_const a\<^isub>1
   353 hide_const a\<^isub>1
   352 
   354 
   353 datatype finite_2 = a\<^isub>1 | a\<^isub>2
   355 datatype finite_2 = a\<^isub>1 | a\<^isub>2
   354 
   356 
       
   357 notation (output) a\<^isub>1  ("a\<^isub>1")
       
   358 notation (output) a\<^isub>2  ("a\<^isub>2")
       
   359 
   355 instantiation finite_2 :: enum
   360 instantiation finite_2 :: enum
   356 begin
   361 begin
   357 
   362 
   358 definition
   363 definition
   359   "enum = [a\<^isub>1, a\<^isub>2]"
   364   "enum = [a\<^isub>1, a\<^isub>2]"
   386 hide_const a\<^isub>1 a\<^isub>2
   391 hide_const a\<^isub>1 a\<^isub>2
   387 
   392 
   388 
   393 
   389 datatype finite_3 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3
   394 datatype finite_3 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3
   390 
   395 
       
   396 notation (output) a\<^isub>1  ("a\<^isub>1")
       
   397 notation (output) a\<^isub>2  ("a\<^isub>2")
       
   398 notation (output) a\<^isub>3  ("a\<^isub>3")
       
   399 
   391 instantiation finite_3 :: enum
   400 instantiation finite_3 :: enum
   392 begin
   401 begin
   393 
   402 
   394 definition
   403 definition
   395   "enum = [a\<^isub>1, a\<^isub>2, a\<^isub>3]"
   404   "enum = [a\<^isub>1, a\<^isub>2, a\<^isub>3]"
   420 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3
   429 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3
   421 
   430 
   422 
   431 
   423 datatype finite_4 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4
   432 datatype finite_4 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4
   424 
   433 
       
   434 notation (output) a\<^isub>1  ("a\<^isub>1")
       
   435 notation (output) a\<^isub>2  ("a\<^isub>2")
       
   436 notation (output) a\<^isub>3  ("a\<^isub>3")
       
   437 notation (output) a\<^isub>4  ("a\<^isub>4")
       
   438 
   425 instantiation finite_4 :: enum
   439 instantiation finite_4 :: enum
   426 begin
   440 begin
   427 
   441 
   428 definition
   442 definition
   429   "enum = [a\<^isub>1, a\<^isub>2, a\<^isub>3, a\<^isub>4]"
   443   "enum = [a\<^isub>1, a\<^isub>2, a\<^isub>3, a\<^isub>4]"
   435 
   449 
   436 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4
   450 hide_const a\<^isub>1 a\<^isub>2 a\<^isub>3 a\<^isub>4
   437 
   451 
   438 
   452 
   439 datatype finite_5 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4 | a\<^isub>5
   453 datatype finite_5 = a\<^isub>1 | a\<^isub>2 | a\<^isub>3 | a\<^isub>4 | a\<^isub>5
       
   454 
       
   455 notation (output) a\<^isub>1  ("a\<^isub>1")
       
   456 notation (output) a\<^isub>2  ("a\<^isub>2")
       
   457 notation (output) a\<^isub>3  ("a\<^isub>3")
       
   458 notation (output) a\<^isub>4  ("a\<^isub>4")
       
   459 notation (output) a\<^isub>5  ("a\<^isub>5")
   440 
   460 
   441 instantiation finite_5 :: enum
   461 instantiation finite_5 :: enum
   442 begin
   462 begin
   443 
   463 
   444 definition
   464 definition