Text this: Program correctness over abstract data types, with error-state semantics /