Mathematical Foundations of Software Engineering