A Discipline of Programming