The number of interleavings that a concurrent program can have is typically given as the key difficulty in automatic analysis of concurrent software. Weak memory, as implemented by modern multiprocessors such as Intel x86, IBM Power and ARM, is generally believed to make this problem even harder. On the contrary, we believe that by embracing rather than fleeing from weak memory, we can obtain e...