|  | C IRIW+poonceonces+OnceOnce | 
|  |  | 
|  | (* | 
|  | * Result: Sometimes | 
|  | * | 
|  | * Test of independent reads from independent writes with nothing | 
|  | * between each pairs of reads.  In other words, is anything at all | 
|  | * needed to cause two different reading processes to agree on the order | 
|  | * of a pair of writes, where each write is to a different variable by a | 
|  | * different process? | 
|  | *) | 
|  |  | 
|  | {} | 
|  |  | 
|  | P0(int *x) | 
|  | { | 
|  | WRITE_ONCE(*x, 1); | 
|  | } | 
|  |  | 
|  | P1(int *x, int *y) | 
|  | { | 
|  | int r0; | 
|  | int r1; | 
|  |  | 
|  | r0 = READ_ONCE(*x); | 
|  | r1 = READ_ONCE(*y); | 
|  | } | 
|  |  | 
|  | P2(int *y) | 
|  | { | 
|  | WRITE_ONCE(*y, 1); | 
|  | } | 
|  |  | 
|  | P3(int *x, int *y) | 
|  | { | 
|  | int r0; | 
|  | int r1; | 
|  |  | 
|  | r0 = READ_ONCE(*y); | 
|  | r1 = READ_ONCE(*x); | 
|  | } | 
|  |  | 
|  | exists (1:r0=1 /\ 1:r1=0 /\ 3:r0=1 /\ 3:r1=0) |