Sophie
stack[t : TYPE] : DATATYPE BEGIN empty: emptystack? push(top: t, pop: stack): nonemptystack? END stack