program semantics