original.name="Complex_Valid_6"
======
>>> main.whiley
type nat is (int x) where x >= 0
function max(int a, int b) -> (int r)
ensures (r == a) || (r == b)
ensures (a <= r) && (b <= r):
//
if a < b:
return b
else:
return a
function diff(int a, int b) -> (nat r)
ensures (r == a - b) || (r == b - a)
ensures ((a - b) <= r) && ((b - a) <= r):
nat diff
//
if a > b:
diff = a - b
else:
diff = b - a
//
return diff
public export method test() :
int i = 0
while i < 20:
int j = 0
while j < 20:
assume i < j || diff(i-10,j-10) == (i - j)
assume i > j || diff(i-10,j-10) == (j - i)
j = j + 1
//
i = i + 1
//
---