On Validity of Program Transformations in the Java Memory Model
the java memory model : operationally , denotationally , axiomatically .