https://dabavepecinoxu.nightcapcabaret.com/proving-total-correctness-of-concurrent-programs-without-using-auxiliary-variables-book-19647iu.php