MODULE queue. queue(Is) :- (front(B), back(B)) -o q(Is). q(enq(X)::Is) :- back(X::B), (back(B) -o q(Is)). q(deq(X)::Is) :- front(X::Xs), (front(Xs) -o q(Is)). q(nil) :- front(nil), back(nil).