| ctrok(gs.ctr, gs.writers) ∧ writersOk(gs.p, gs.writers) ∧ pendingOk(gs.p), ctrok(gs0.ctr, gs0.writers) ∧ writersOk(gs0.p, gs0.writers) ∧ pendingOk(gs0.p), allReadsOK(ags.h) ∧ allWritesOK(ags.h) ∧ ags.vm = ∅ ⊕ ags.h ∧ ags.pm = ∅ ⊕ (ags.h | true), lsf(t) = ls, lsf0(t) = ls0, alsf(t) = als, alsf(t).t = t, lsf(t).t = t, ∀ t0. t0 ≠ t → lsf(t0).t = t0, ∀ t0. t0 ≠ t → alsf(t0).t = t0, pcf(t) = W2, pcf0(t) = W3, apcf(t) = apc, notMember(t, gs.readers) ∧ notMember(t, gs.writers) ∧ noPendingW(t, gs.p) ∧ noPending(t, gs.p), notMember(t, gs0.readers) ∧ oneMember(t, ls0.l, gs0.writers) ∧ noPending(t, gs0.p), PLIBLInv(ags, als, apc), t ≠ t0, lsf(t0).t = t0, FLITPSCLInv(gs, lsf(t0), pcf(t0)), FLITPSCLInv(gs0, lsf(t0), pcf(t0)), PLIBLInv(ags, alsf(t0), apcf(t0)), ∀ t1. t1 ≠ t ∧ t1 ≠ t0 → FLITPSCLInv(gs, lsf(t1), pcf(t1)) ∧ PLIBLInv(ags, alsf(t1), apcf(t1)) ∧ labs(gs, lsf(t1), pcf(t1), ags, alsf(t1), apcf(t1)), pre(gs, ls, W2, ctrIncPSC(t, l)) ∧ gs0 = gstepf(gs, ls, W2, ctrIncPSC(t, l)) ∧ ls0 = lstepf(gs, ls, W2, ctrIncPSC(t, l)) ∧ W3 = pcstepf(gs, ls, W2, ctrIncPSC(t, l)), ags.pm = gs.mem ∧ ags.vm = gs.mem ⊕ gs.p ∧ abs(ags.h, gs.readers, gs.p), ls.t = als.t ∧ apc = invWrite ∧ (ls.l = als.il ∧ ls.v = als.iv) ∧ (∀ l. ((ags.h | l) | ls.t) | false = []), lsf(t0).t = alsf(t0).t ∧ (pcf(t0) = idle → apcf(t0) = idle) ∧ (pcf(t0) = ready → apcf(t0) = ready) ∧ (pcf(t0) = crashed → apcf(t0) = crashed) ∧ (pcf(t0) = R1 → apcf(t0) = invRead) ∧ (pcf(t0) = R2 ∨ pcf(t0) = R3 ∨ pcf(t0) = R4 → apcf(t0) = resRead) ∧ (pcf(t0) = W1 ∨ pcf(t0) = W2 ∨ pcf(t0) = W3 → apcf(t0) = invWrite) ∧ (pcf(t0) = W4 ∨ pcf(t0) = W5 ∨ pcf(t0) = W6 ∨ pcf(t0) = W7 → apcf(t0) = resWrite) ∧ (pcf(t0) = R1 → lsf(t0).l = alsf(t0).il) ∧ (pcf(t0) = R2 ∨ pcf(t0) = R3 ∨ pcf(t0) = R4 → lsf(t0).v = alsf(t0).ov) ∧ ( pcf(t0) = W1 ∨ pcf(t0) = W2 ∨ pcf(t0) = W3 ∨ pcf(t0) = W4 ∨ pcf(t0) = W5 ∨ pcf(t0) = W6 ∨ pcf(t0) = W7 → lsf(t0).l = alsf(t0).il ∧ lsf(t0).v = alsf(t0).iv) ∧ ( pcf(t0) = idle ∨ pcf(t0) = ready ∨ pcf(t0) = R1 ∨ pcf(t0) = R4 ∨ pcf(t0) = W1 ∨ pcf(t0) = W5 → (∀ l. ¬ FO(lsf(t0).t) ∈ gs.p(l) → ((ags.h | l) | lsf(t0).t) | false = [])) ∧ (pcf(t0) = W2 ∨ pcf(t0) = W3 ∨ pcf(t0) = W6 ∨ pcf(t0) = W7 → (∀ l. ((ags.h | l) | lsf(t0).t) | false = [])) ∧ (pcf(t0) = R2 ∨ pcf(t0) = R3 → (∀ l0. l0 ≠ lsf(t0).l ∧ ¬ FO(lsf(t0).t) ∈ gs.p(l0) → ((ags.h | l0) | lsf(t0).t) | false = [])) ∧ (pcf(t0) = R2 → gs.ctr(lsf(t0).l) = 0 → ((ags.h | lsf(t0).l) | lsf(t0).t) | false = []) ∧ ( pcf(t0) = W4 → ((ags.h | lsf(t0).l) | lsf(t0).t) | false = (W(lsf(t0).t, lsf(t0).l, lsf(t0).v), false) ' ∨ ((ags.h | lsf(t0).l) | lsf(t0).t) | false = []) ⊦ lsf(t0).t = alsf(t0).t ∧ (pcf(t0) = idle → apcf(t0) = idle) ∧ (pcf(t0) = ready → apcf(t0) = ready) ∧ (pcf(t0) = crashed → apcf(t0) = crashed) ∧ (pcf(t0) = R1 → apcf(t0) = invRead) ∧ (pcf(t0) = R2 ∨ pcf(t0) = R3 ∨ pcf(t0) = R4 → apcf(t0) = resRead) ∧ (pcf(t0) = W1 ∨ pcf(t0) = W2 ∨ pcf(t0) = W3 → apcf(t0) = invWrite) ∧ (pcf(t0) = W4 ∨ pcf(t0) = W5 ∨ pcf(t0) = W6 ∨ pcf(t0) = W7 → apcf(t0) = resWrite) ∧ (pcf(t0) = R1 → lsf(t0).l = alsf(t0).il) ∧ (pcf(t0) = R2 ∨ pcf(t0) = R3 ∨ pcf(t0) = R4 → lsf(t0).v = alsf(t0).ov) ∧ ( pcf(t0) = W1 ∨ pcf(t0) = W2 ∨ pcf(t0) = W3 ∨ pcf(t0) = W4 ∨ pcf(t0) = W5 ∨ pcf(t0) = W6 ∨ pcf(t0) = W7 → lsf(t0).l = alsf(t0).il ∧ lsf(t0).v = alsf(t0).iv) ∧ ( pcf(t0) = idle ∨ pcf(t0) = ready ∨ pcf(t0) = R1 ∨ pcf(t0) = R4 ∨ pcf(t0) = W1 ∨ pcf(t0) = W5 → (∀ l. ¬ FO(lsf(t0).t) ∈ gs0.p(l) → ((ags.h | l) | lsf(t0).t) | false = [])) ∧ (pcf(t0) = W2 ∨ pcf(t0) = W3 ∨ pcf(t0) = W6 ∨ pcf(t0) = W7 → (∀ l. ((ags.h | l) | lsf(t0).t) | false = [])) ∧ (pcf(t0) = R2 ∨ pcf(t0) = R3 → (∀ l0. l0 ≠ lsf(t0).l ∧ ¬ FO(lsf(t0).t) ∈ gs0.p(l0) → ((ags.h | l0) | lsf(t0).t) | false = [])) ∧ (pcf(t0) = R2 → gs0.ctr(lsf(t0).l) = 0 → ((ags.h | lsf(t0).l) | lsf(t0).t) | false = []) ∧ ( pcf(t0) = W4 → ((ags.h | lsf(t0).l) | lsf(t0).t) | false = (W(lsf(t0).t, lsf(t0).l, lsf(t0).v), false) ' ∨ ((ags.h | lsf(t0).l) | lsf(t0).t) | false = []) |