using System; namespace SSharpAsst { public class Math { bool contains(int[]! a, int value) requires true; ensures result == (exists {i in (0:a.Length); a[i] == value}); { for(int i = 0; i < a.Length; i++) invariant 0 <= i && i <= a.Length && (forall {x in (0:i); a[x] != value}); { if(a[i] == value) return true; foo(a); } return false; } void foo(int[]! a) { a[0] = 3; } } }