class Stack {
  public:
    Stack();
    void push(int elem);
    void pop();
    int top();

  equations:
    pop(Stack()) = null;
    pop(s.push(e)) = s;

    top(Stack()) = null;
    top(s.push(e)) = e;
};

/* NO implementations of Push, Pop, and Peek */

main() {
    Stack s;
    int i;

    s = s.Push(1);
    i = s.Pop();
}