summaryrefslogtreecommitdiff
path: root/Test/inline/expansion4.bpl
blob: 593fa9fbd97dafd904d12e8149cf3bc2b6705665 (plain)
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
function f(x:int) returns(bool);
axiom {:ignore "bvInt"} {:inline true} (forall x:int :: f(x) <==> true);
axiom {:ignore "bvDefSem"} {:inline true} (forall x:int :: f(x) <==> false);

procedure {:forceBvZ3Native true} foo()
{
  assert f(3);
}

procedure {:forceBvInt true} foo2()
{
  assert !f(3);
}

axiom  (forall x: bv64, y: bv64 :: { $sub.unchk.u8(x, y) } $check.sub.u8(x, y) ==> $sub.u8(x, y) == $sub.unchk.u8(x, y));
axiom {:inline true} {:ignore "bvDefSem"} (forall x: bv64, y: bv64 :: { $check.sub.u8(x, y) } 
$check.sub.u8(x, y) <==> $_inrange.u8($sub.i8(x, y)));

function $check.sub.u8(x: bv64, y: bv64) returns (bool);
function $_inrange.u8(bv64) returns (bool);
function {:bvbuiltin "bvsub"} $sub.unchk.u8(x: bv64, y: bv64) returns (bv64);
function {:bvbuiltin "bvsub"} {:bvint "-"} $sub.i8(x: bv64, y: bv64) returns (bv64);
function {:bvbuiltin "bvsub"} {:bvint "-"} $sub.u8(x: bv64, y: bv64) returns (bv64);


procedure {:forceBvZ3Native true} baz()
{
    return;
}