Procedure semantics and language definition

Semantics for procedures and their calls is proposed which describes two cases often considered to be outside contemporary programming languages: distributed computing and procedure calls that contain aliases. It is argued that this semantics should be used as the basis of programming language definition because it is simple, intuitive and unifies these seemingly different cases. To support this argument, a verification rule for procedure calls with aliases is given which is no more complicated than those found in the literature. This verification rule is possible only because it is based on the proposed semantics.