Note that:
!/0 cuts through ;/2.
Success: 1 == 2; 2 == 2. [eclipse]: (write(a), fail) ; (write(b); write(c)). ab yes. [eclipse]: (write(a); write(b)), write(c). ac yes. Fail: 1 == 2; 3 == 2.