module OK

use int.Int

val f (x:int) : int
  ensures { result > x }

let main (y:int)
  ensures { result <> 44 }
=
  let z = f y in
  z+1

end

module KO1

use int.Int

function f(x:int) : int

axiom f_def : forall x. f x = x+1

val f (x:int) : int
  ensures { result = f x }

let main (y:int)
  ensures { result <> 44 }
=
  let z = f y in
  z+1

end

module KO2

use int.Int

val function f(x:int) : int

axiom f_def : forall x. f x = x+1

let main (y:int)
  ensures { result <> 44 }
=
  let z = f y in
  z+1

end
