There are two conclusions from JLS:
http://rsim.cs.illinois.edu/Pubs/popl05.pdf
The proof seems to go this way:
Suppose an execution of a correctly synchronized program contains data race, we can find a sequential execution that contains data race, violating the definition of "correctly synchronized program" [C1]
Therefore the execution must not contain data race. [C3] From there, the execution can be proven to be sequentially consistent. [C2]
So C3 is true, and it is used to prove C2.