original.name="Complex_Valid_4"
boogie.timeout=120
======
>>> main.whiley
type BTree is null | {int item, BTree left, BTree right}
function BTree() -> BTree:
return null
function add(BTree tree, int item) -> BTree:
if tree is null:
tree = {item: item, left: null, right: null}
else:
if item < tree.item:
tree.left = add(tree.left, item)
else:
tree.right = add(tree.right, item)
return tree
function contains(BTree tree, int item) -> bool:
if tree is null:
return false
else:
if tree.item == item:
return true
else:
if item < tree.item:
return contains(tree.left, item)
else:
return contains(tree.right, item)
int[] items = [5, 4, 6, 3, 7, 2, 8, 1, 9]
public export method test() :
BTree tree = BTree()
tree = add(tree, 1)
tree = add(tree, 2)
tree = add(tree, 3)
tree = add(tree, 4)
tree = add(tree, 5)
tree = add(tree, 6)
//
assume contains(tree,5) == true
assume contains(tree,4) == true
assume contains(tree,6) == true
assume contains(tree,3) == true
assume contains(tree,7) == false
assume contains(tree,2) == true
assume contains(tree,8) == false
assume contains(tree,1) == true
assume contains(tree,9) == false
---