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