//@ model import org.jmlspecs.models.JMLObjectBag; public interface PriorityQueue { //@ public instance model JMLObjectBag queue; /*@ public normal_behavior @ ensures queue.equals(\old(queue).insert(o)); @ modifies queue; @*/ public void enqueue(/*@non_null@*/ Comparable o); /*@ public normal_behavior @ requires !isEmpty(); @ ensures \old(queue).has(\result) && @ queue.equals(\old(queue).remove(\result)) && @ (\forall Comparable o; queue.has(o); \result.compareTo(o) <= 0); @ modifies queue; @*/ public /*@non_null@*/ Comparable removeFirst(); /*@ public normal_behavior @ ensures \result == (queue.isEmpty()); @*/ public /*@pure@*/ boolean isEmpty(); }