Component-based description of programming languages
the java memory model : operationally , denotationally , axiomatically .