File: exec_of_andb.mlw

package info (click to toggle)
why3 1.8.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 45,028 kB
  • sloc: xml: 185,443; ml: 111,224; ansic: 3,998; sh: 2,578; makefile: 2,568; java: 865; python: 720; javascript: 290; lisp: 205; pascal: 173
file content (46 lines) | stat: -rw-r--r-- 823 bytes parent folder | download | duplicates (2)
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