public class APMax implements AProc<Integer> { protected /*@ spec_public @*/ Integer maxSeen = Integer.MIN_VALUE; //@ in objectState; /*@ also @ requires 0 <= i && i < a.length; @ assignable maxSeen; @ ensures maxSeen == Math.max(\old(maxSeen),a[i]); @*/ public void run(Integer[] a, int i) { if (a[i] > maxSeen) { maxSeen = a[i]; } } //@ ensures \result == maxSeen; public /*@ pure @*/ Integer getMax() { return maxSeen; } }