A Uniform Approach to Applicative and Imperative Features in Programming Languages

We call “applicative” such features of programming languages as functional procedures or recursion inside arithmetical expressions. We call “imperative” such features as local variables, states, assignments, loops or parameters called by reference. We give a uniform input/output semantics and proof rules for a toy programming language that includes both. The semantics is nice in that it does not introduce explicitly anything that programmer chooses to leave implicit (e.g. stacks for recursion). The proof rules do not involve complicated variable- and parameter- replacements as is customary for procedures with parameters.