Need help defining a machine integer

142 views Asked by At

I'm using the mach.int library in a specification (see also this question), and I'm trying to define a constant that is of type int32:

let constant_out1: int32 = 1 in
…

However, when analyzing this, why3 returns the message:

This term has type int, but is expected to have type int32

I noticed that Bounded_int (which Int32 instantiates with type int32) has the following in it:

  val of_int (n:int) : t
    requires { "expl:integer overflow" in_bounds n }
    ensures  { to_int result = n }

However, I do not seem to be able to use this to cast 1 to int32. For example, if I use:

let constant_out1: int32 = Int32.of_int(1) in
…

I get the message unbound symbol 'Int32.of_int'. I've tried many permutations of this, all without any success. Can anyone provided guidance for how to tell why3 that I want 1 to be of type int32?

0

There are 0 answers