Formal Development of Programs and Proofs