interface Simple { var a: int method Inc(p: int) a := old(a) + p method Init(n: int) a := n method Max(x: int, y: int) ensures x < y ==> a = y ensures x >= y ==> a = x method Max2(x: int, y: int) ensures a = x || a = y ensures forall t :: t in {x y} ==> a >= t method Max3__mod__(x: int, y: int) ensures a in {x y} ensures forall t :: t in {x y} ==> a >= t method MaxAll__mod__(x: seq[int]) ensures a in x ensures forall t :: t in x ==> a >= t } datamodel Simple { var c: int invariant a = c }