let as_int s z =
let def = Tapp (s,[Tconst(ConstInt z)]) in
let opt = Tconst (ConstInt z) in
let signed_in_bound b = signed_in_bound b z opt def in
let unsigned_in_bound b = unsigned_in_bound b z opt def in
match s with
| "as_uint8" ->
let b = Big_int.big_int_of_int 256 in unsigned_in_bound b
| "as_sint8" ->
let b = Big_int.big_int_of_int 128 in signed_in_bound b
| "as_uint16" ->
let b = Big_int.big_int_of_int 65536 in unsigned_in_bound b
| "as_sint16" ->
let b = Big_int.big_int_of_int 32768 in signed_in_bound b
| "as_uint32" ->
let b = Big_int.big_int_of_string ("4294967296") in
unsigned_in_bound b
| "as_sint32" ->
let b = Big_int.big_int_of_string ("2147483648") in
signed_in_bound b
| "as_uint64" ->
let b = Big_int.big_int_of_string ("18446744073709551616") in
unsigned_in_bound b
| "as_sint64" ->
let b = Big_int.big_int_of_string ("9223372036854775808") in
signed_in_bound b
|_ -> def