C C-addrpo { int u = 0; int v = 1; int *x = u; } P0(int **x, int *y) { int *r0; int r1; r0 = lockless_dereference(*x); r1 = READ_ONCE(*r0); WRITE_ONCE(*y, 1); } P1(int **x, int *y, int *v) { int r2; r2 = READ_ONCE(*y); if (r2 != 0) WRITE_ONCE(*x, v); } exists (0:r1=1)