Verifiable abstractions for contract-oriented systems