class counter { 
\fbox{counter}
public: counter(int n = 0) : _n(n) { require( n >= 0 ); promise( invariant() );
\c{// check initial state}
} virtual void operator++() { require( true );
\c{// empty pre-condition}
hold();
\c{// save the previous state}
_n += 1; promise( _n == old_n + 1 && invariant() ); } int value() const { return _n; }
\c{// no side effects}
virtual bool invariant() { return value() >= 0; } protected: int _n; int old_n; virtual void hold() { old_n = n; } };

slide: The counter contract