// Queue.dfyi abstract module Queue { type Item type Queue = seq method Init() returns (q: Queue) ensures |q| == 0; method Push(item: Item, q: Queue) returns (q': Queue) ensures |q'| == |q| + 1; method Pop(q: Queue) returns (item: Item, q': Queue) requires |q| > 0; ensures item in q; ensures |q'| == |q| - 1; } abstract module MainSpec { import Q : Queue }