Formal methods; algebra of programming