Merge branch 'fix_another_sessions' into 'master'
[why3.git] / tests / test_range.mlw
blob47d58a5128fde4e06e698b8b5be0f0104846a99c
1 theory T
2   use int.Int
4   type q
6   type t is range t2int: 0 .. 42
8   (* meta "range:keep" type t *)
10   goal g : forall x:t. x = (12 : t)
11 end
13 theory U
14   use bv.BV8
16   type q
18   (* meta "range:keep" type t *)
20   goal g : forall x:t. x = (12 : t)
21 end
23 module M
24   use bv.BV16
25   use int.Int
27   let f (x : t) : t
28    ensures { ule result (12 : t) }
29   = bw_and x (12 : t)
31 end
33 module N
34   use bv.BV8
35   use int.Int
37   use int.NumOf
39   meta "encoding : kept" type t
41   let ghost step1 (n x1 : t) (i : int) : unit
42   =
43     assert { let i' = of_int i in
44              let twoi = mul (2 : t) i' in
45                  to_uint (bw_and (lsr_bv x1 twoi) (0x03 : t))
46                = numof (nth n) (to_uint twoi) (to_uint twoi + 2) }
48 end