Reasoning About Programs | part of Dynamic Logic | MIT Press books | IEEE Xplore