Program Semantics and mechanized proof