original.name="While_Valid_22" ====== >>> main.whiley function max(int a, int b) -> (int r) ensures a <= r && b <= r ensures a == r || b == r: if a >= b: return a else: return b function max(int[] xs) -> (int result) // Input list cannot be empty requires |xs| > 0 // Return must be element of input list ensures some { i in 0..|xs| | xs[i] == result} // No element of input list is larger than return ensures all { i in 0..|xs| | xs[i] <= result }: // int r = xs[0] int i = 0 while i < |xs| where i >= 0 where some { j in 0..|xs| | xs[j] == r } where all { j in 0 .. i | xs[j] <= r }: r = max(r, xs[i]) i = i + 1 return r public export method test() : assume max([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) == 10 assume max([-8, 7, 9, 1, -1, 2, 5, 6, -200, 4]) == 9 assume max([1]) == 1 ---