src/HOL/Int.thy
changeset 45180 3e2befc10748
parent 45122 49e305100097
child 45196 78478d938cb8
equal deleted inserted replaced
45179:6f705c69678f 45180:3e2befc10748
  2381   Int Arith
  2381   Int Arith
  2382 
  2382 
  2383 code_modulename Haskell
  2383 code_modulename Haskell
  2384   Int Arith
  2384   Int Arith
  2385 
  2385 
  2386 types_code
       
  2387   "int" ("int")
       
  2388 attach (term_of) {*
       
  2389 val term_of_int = HOLogic.mk_number HOLogic.intT;
       
  2390 *}
       
  2391 attach (test) {*
       
  2392 fun gen_int i =
       
  2393   let val j = one_of [~1, 1] * random_range 0 i
       
  2394   in (j, fn () => term_of_int j) end;
       
  2395 *}
       
  2396 
       
  2397 setup {*
       
  2398 let
       
  2399 
       
  2400 fun strip_number_of (@{term "Int.number_of :: int => int"} $ t) = t
       
  2401   | strip_number_of t = t;
       
  2402 
       
  2403 fun numeral_codegen thy mode defs dep module b t gr =
       
  2404   let val i = HOLogic.dest_numeral (strip_number_of t)
       
  2405   in
       
  2406     SOME (Codegen.str (string_of_int i),
       
  2407       snd (Codegen.invoke_tycodegen thy mode defs dep module false HOLogic.intT gr))
       
  2408   end handle TERM _ => NONE;
       
  2409 
       
  2410 in
       
  2411 
       
  2412 Codegen.add_codegen "numeral_codegen" numeral_codegen
       
  2413 
       
  2414 end
       
  2415 *}
       
  2416 
       
  2417 consts_code
       
  2418   "number_of :: int \<Rightarrow> int"    ("(_)")
       
  2419   "0 :: int"                   ("0")
       
  2420   "1 :: int"                   ("1")
       
  2421   "uminus :: int => int"       ("~")
       
  2422   "op + :: int => int => int"  ("(_ +/ _)")
       
  2423   "op * :: int => int => int"  ("(_ */ _)")
       
  2424   "op \<le> :: int => int => bool" ("(_ <=/ _)")
       
  2425   "op < :: int => int => bool" ("(_ </ _)")
       
  2426 
       
  2427 quickcheck_params [default_type = int]
  2386 quickcheck_params [default_type = int]
  2428 
  2387 
  2429 hide_const (open) Pls Min Bit0 Bit1 succ pred
  2388 hide_const (open) Pls Min Bit0 Bit1 succ pred
  2430 
  2389 
  2431 
  2390