Algebra of Programming summary