1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
use export ref.Ref
use export bool.Bool
use export int.Int
val rand () : bool
val m : ref bool
val x0 : ref bool
val x1 : ref bool
val x2 : ref bool
val x3 : ref bool
val x4 : ref bool
val y : ref bool
let main [@bddinfer] ()
requires { ((!x3) = True) }
requires { ((!m) = False) }
requires { ((!y) = False) }
requires { ((!x2) = False) }
requires { ((!x1) = False) }
requires { ((!x4) = True) }
requires { ((!x0) = False) }
diverges
=
while andb
((not ((!x0))))
(andb
((not ((!x1))))
(andb ((not ((!x2)))) (andb ((!x3)) ((!x4)))))
do
let _tmp = andb
(orb ((!x0)) ((!y)))
(andb
((not ((!m))))
( not !m)) in
x0 := rand ()
done
|