formalisms for program semantics