declare class Queue attr queue prop locking meth init queue:=q(0 X X) end meth insert(X) lock N S E1 in q(N S X|E1)=@queue queue:=q(N+1 S E1) end end meth delete(X) lock N S1 E in q(N X|S1 E)=@queue queue:=q(N-1 S1 E) end end end