| ctrok(gs.fctr, gs.fwriters) ∧ writersOk(gs.bq, gs.pq, gs.fwriters) ∧ pendingOk(gs.bq, gs.pq) ∧ SFTrailing(gs.bq) ∧ readFOsOk(gs.rfo, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters) ∧ writersOk(gs0.bq, gs0.pq, gs0.fwriters) ∧ pendingOk(gs0.bq, gs0.pq) ∧ SFTrailing(gs0.bq) ∧ readFOsOk(gs0.rfo, gs0.fwriters), ctrok(ags.ctr, ags.writers) ∧ writersOk(ags.p, ags.writers) ∧ pendingOk(ags.p), 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) = ready, pcf0(t) = W1, apcf(t) = apc, notMember(t, gs.fwriters) ∧ notMember(t, gs.freaders) ∧ noPendingW(t, gs.bq, gs.pq) ∧ ¬ SF ∈ gs.bq(t) ∧ gs.rfo(t) = gs.bq(t), notMember(t, gs0.freaders) ∧ notMember(t, gs0.fwriters) ∧ noPendingW(t, gs0.bq, gs0.pq) ∧ ¬ SF ∈ gs0.bq(t) ∧ gs0.rfo(t) = gs0.bq(t), FLITPSCLInv(ags, als, apc), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), pre(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) → ags0 = gstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ als0 = lstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ apc0 = pcstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)), ctrok(ags0.ctr, ags0.writers) ∧ writersOk(ags0.p, ags0.writers) ∧ pendingOk(ags0.p), pre(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)) ∧ gs0 = gstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)) ∧ ls0 = lstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)) ∧ W1 = pcstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), ags.mem = gs.pmem ∧ ags.ctr = gs.fctr ∧ reorder(ags.p, gs.pq, gs.rfo) ∧ ags.writers = gs.fwriters, ls.t = als.t ∧ apc = ready ⊦ pre(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ (ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters) ∧ ls0.t = als0.t ∧ apc0 = W1 ∧ ls0.loc = als0.l ∧ ls0.val = als0.v |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs0.rfo(t) = gs0.bq(t), gs.rfo(t) = gs.bq(t), ls.t = als.t, lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, W1 = pcstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), alsf(t) = als, apc = ready, apcf(t) = apc, gs0 = gstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), ls0 = lstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), lsf(t) = ls, lsf0(t) = ls0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, als, apc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(ags.ctr, ags.writers), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs0.bq, gs0.pq), noPendingW(t, gs.bq, gs.pq), notMember(t, gs0.freaders), notMember(t, gs0.fwriters), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), pre(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, ags.writers), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ¬ SF ∈ gs0.bq(t), pre(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) → ags0 = gstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ als0 = lstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ apc0 = pcstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. t0 ≠ t → alsf(t0).t = t0, ∀ t0. t0 ≠ t → lsf(t0).t = t0 ⊦ pre(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ (ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters) ∧ ls0.t = als0.t ∧ apc0 = W1 ∧ ls0.loc = als0.l ∧ ls0.val = als0.v
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs0.rfo(t) = gs0.bq(t), gs.rfo(t) = gs.bq(t), ls.t = als.t, lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, W1 = pcstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), alsf(t) = als, apc = ready, apcf(t) = apc, gs0 = gstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), ls0 = lstepf(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), lsf(t) = ls, lsf0(t) = ls0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, als, apc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(ags.ctr, ags.writers), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs0.bq, gs0.pq), noPendingW(t, gs.bq, gs.pq), notMember(t, gs0.freaders), notMember(t, gs0.fwriters), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), pre(gs, ls, ready, invFLITWRITE(ls.t, loc0, val0)), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, ags.writers), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ¬ SF ∈ gs0.bq(t), pre(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) → ags0 = gstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ als0 = lstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ apc0 = pcstepf(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. t0 ≠ t → alsf(t0).t = t0, ∀ t0. t0 ≠ t → lsf(t0).t = t0 ⊦ pre(ags, als, apc, invFLITPSCWRITE(ls.t, loc0, val0)) ∧ (ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters) ∧ ls0.t = als0.t ∧ apc0 = W1 ∧ ls0.loc = als0.l ∧ ls0.val = als0.v |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, gs.pq, gs.rfo) ∧ ags0.writers = gs.fwriters ∧ lsf0(t).t = als0.t ∧ apc0 = W1 ∧ lsf0(t).loc = als0.l ∧ lsf0(t).val = als0.v
Used simplifier rules: ⊦ callPSCCOMPLETE(t) ≠ invFLITPSCWRITE(t0, l, v); (s) ⊦ invFLITPSCREAD(t, l) ≠ invFLITPSCWRITE(t0, l0, v); (s) ⊦ pre(gs, ls, ready, a) ↔ (∃ l0, v0. a = invFLITPSCWRITE(ls.t, l0, v0)) ∨ (∃ l0. a = invFLITPSCREAD(ls.t, l0)) ∨ a = callPSCCOMPLETE(ls.t) ∧ (∀ l. ¬ FO(ls.t) ∈ gs.p(l)); (s) ⊦ ls.t = t → pcstepf(gs, ls, ready, invFLITPSCWRITE(t, l0, v0)) = W1; (s) ⊦ ls.t = t → lstepf(gs, ls, ready, invFLITPSCWRITE(t, l0, v0)) = (ls.l:= l0).v:= v0; (s) ⊦ gstepf(gs, ls, ready, a) = gs; (s) ⊦ gstepf(gs, ls, ready, a) = gs; (s) ⊦ invFLITWRITE(t, loc, v) = invFLITWRITE(t0, loc0, v0) ↔ t = t0 ∧ loc = loc0 ∧ v = v0; (ws) ⊦ callFLITCOMPLETE(t) ≠ invFLITWRITE(t0, loc, v); (s) ⊦ invFLITREAD(t, loc) ≠ invFLITWRITE(t0, loc0, v); (s) ⊦ pre(gs, ls, ready, a) ↔ (∃ loc0, val0. a = invFLITWRITE(ls.t, loc0, val0)) ∨ (∃ loc0. a = invFLITREAD(ls.t, loc0)) ∨ a = callFLITCOMPLETE(ls.t) ∧ gs.bq(ls.t) = [] ∧ (∀ l. ¬ FO(ls.t) ∈ gs.pq(l)); (s) ⊦ ls.t = t → pcstepf(gs, ls, ready, invFLITWRITE(t, loc0, val0)) = W1; (s) ⊦ ls.t = t → lstepf(gs, ls, ready, invFLITWRITE(t, loc0, val0)) = (ls.loc:= loc0).val:= val0; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, gs.pq, gs.rfo) ∧ ags0.writers = gs.fwriters ∧ lsf0(t).t = als0.t ∧ apc0 = W1 ∧ lsf0(t).loc = als0.l ∧ lsf0(t).val = als0.v |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.mem ≠ gs.pmem, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.ctr ≠ gs.fctr, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ reorder(ags0.p, gs.pq, gs.rfo), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.writers ≠ gs.fwriters, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ als0.t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, apc0 ≠ W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ als0.l, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ als0.v, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.mem ≠ gs.pmem, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.mem ≠ gs.pmem, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.mem ≠ gs.pmem, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.ctr ≠ gs.fctr, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.ctr ≠ gs.fctr, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.ctr ≠ gs.fctr, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ reorder(ags0.p, gs.pq, gs.rfo), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ reorder(ags0.p, gs.pq, gs.rfo), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ reorder(ags0.p, gs.pq, gs.rfo), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.writers ≠ gs.fwriters, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.writers ≠ gs.fwriters, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, ags0.writers ≠ gs.fwriters, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ als0.t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ als0.t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, ags0 = ags, als0 = (alsf(t).l:= loc0).v:= val0, apc0 = W1, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ als0.t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ als0.t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, ags0 = ags, als0 = (alsf(t).l:= loc0).v:= val0, apc0 = W1, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ als0.t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
Used simplifier rules: ⊦ (ls.l:= l).t = ls.t; (s) ⊦ (ls.v:= v).t = ls.t; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).t ≠ t, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
Used simplifier rules: ⊦ (ls.val:= val).t = ls.t; (s) ⊦ (ls.loc:= loc).t = ls.t; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, apc0 ≠ W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, apc0 ≠ W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, apc0 ≠ W1, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ als0.l, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ als0.l, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, ags0 = ags, als0 = (alsf(t).l:= loc0).v:= val0, apc0 = W1, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ als0.l, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ als0.l, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, ags0 = ags, als0 = (alsf(t).l:= loc0).v:= val0, apc0 = W1, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ als0.l, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ loc0, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
Used simplifier rules: ⊦ (ls.l:= l).l = l; (s) ⊦ (ls.v:= v).l = ls.l; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).loc ≠ loc0, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
Used simplifier rules: ⊦ (ls.val:= val).loc = ls.loc; (s) ⊦ (ls.loc:= loc).loc = loc; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ als0.v, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), ctrok(ags0.ctr, ags0.writers), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), pendingOk(ags0.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), writersOk(ags0.p, ags0.writers), ¬ SF ∈ gs.bq(t), (∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)) → ags0 = ags ∧ als0 = (alsf(t).l:= loc0).v:= val0 ∧ apc0 = W1, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ als0.v, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0)
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, ags0 = ags, als0 = (alsf(t).l:= loc0).v:= val0, apc0 = W1, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ als0.v, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ als0.v, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ ∃ l0, v0. invFLITPSCWRITE(t, loc0, val0) = invFLITPSCWRITE(t, l0, v0) |
Used terms: loc0, val0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), lsf(t).t = t, alsf(t).t = t, ags.writers = gs.fwriters, ags0 = ags, als0 = (alsf(t).l:= loc0).v:= val0, apc0 = W1, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ als0.v, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(ags0.ctr, ags0.writers), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.fwriters), notMember(t, gs.freaders), pendingOk(ags0.p), pendingOk(ags.p), pendingOk(gs.bq, gs.pq), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(ags0.p, ags0.writers), writersOk(ags.p, gs.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. alsf(t0).t = t0, ∀ t0. lsf(t0).t = t0, ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ val0, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦
Used simplifier rules: ⊦ (ls.v:= v).v = v; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, gs.rfo(t) = gs.bq(t), alsf(t).t = t, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = ready, lsf0(t) = (lsf(t).loc:= loc0).val:= val0, pcf(t) = ready, pcf0(t) = W1, lsf0(t).val ≠ val0, FLITPSCLInv(ags, alsf(t), ready), SFTrailing(gs.bq), ctrok(gs.fctr, gs.fwriters), noPendingW(t, gs.bq, gs.pq), notMember(t, gs.freaders), notMember(t, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(ags.p), readFOsOk(gs.rfo, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(ags.p, gs.fwriters), ¬ SF ∈ gs.bq(t), ∀ t0. t0 ≠ t → FLITLInv(gs, lsf(t0), pcf(t0)) ∧ FLITPSCLInv(ags, alsf(t0), apcf(t0)) ∧ labs(gs, lsf(t0), pcf(t0), ags, alsf(t0), apcf(t0)), ∀ t0. lsf(t0).t = t0, ∀ t0. alsf(t0).t = t0 ⊦ |
Used simplifier rules: ⊦ (ls.val:= val).val = val; (s)
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.