Derived Semantics for Some Programming Language Constructs
The constructs of a simple programming language
are introduced and described informally in 
terms of values and side-effects.  A translator is defined
which translates the language into flowcharts 
for a simple machine.  The action of the machine in executing
a flowchart is defined.  A proof is constructed 
that the effect of translating and executing any program
can be expressed solely in terms of the value 
and side-effect of the program.  During the course of
constructing the proof, formal definitions of the 
concepts of value and side-effect are derived in order
to make the proof rigorous.  Correctness of the 
implementation involves checking that the definitions derived
in the step above are an acceptable formalization 
of the informal description given in the first step.
CACM November, 1972
Henderson, P.
