public class PMax implements Proc<Integer,Integer> {
protected /*@ spec_public @*/ Integer maxSeen = Integer.MIN_VALUE;
//@ in objectState;
/*@ assignable maxSeen;
@ ensures maxSeen == Math.max(\old(maxSeen),x); @*/
public Integer run(Integer x) {
if (x > maxSeen) {
maxSeen = x;
}
return x;
}
//@ ensures \result == maxSeen;
public /*@ pure @*/ Integer getMax() { return maxSeen; }
}