program semantics and verification