| oneMember(tid, als.l, gs.fwriters), FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), flitStep(mkstate(gs, lsf, pcf), doWriteFO(tid, l), mkstate(gs0, lsf0, pcf0)), abs(mkstate(gs, lsf, pcf), mkstate(ags, alsf, apcf)) ⊦ ∃ ags0, alsf0, apcf0. flitpscStep(mkstate(ags, alsf, apcf), pwbPSC(tid, l), mkstate(ags0, alsf0, apcf0)) ∧ abs(mkstate(gs0, lsf0, pcf0), mkstate(ags0, alsf0, apcf0)) |
FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), abs(mkstate(gs, lsf, pcf), mkstate(ags, alsf, apcf)), flitStep(mkstate(gs, lsf, pcf), doWriteFO(tid, l), mkstate(gs0, lsf0, pcf0)), oneMember(tid, als.l, gs.fwriters) ⊦ ∃ ags0, alsf0, apcf0. flitpscStep(mkstate(ags, alsf, apcf), pwbPSC(tid, l), mkstate(ags0, alsf0, apcf0)) ∧ abs(mkstate(gs0, lsf0, pcf0), mkstate(ags0, alsf0, apcf0))
| FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), abs(mkstate(gs, lsf, pcf), mkstate(ags, alsf, apcf)), flitStep(mkstate(gs, lsf, pcf), doWriteFO(tid, l), mkstate(gs0, lsf0, pcf0)), oneMember(tid, als.l, gs.fwriters) ⊦ ∃ ags0, alsf0, apcf0. flitpscStep(mkstate(ags, alsf, apcf), pwbPSC(tid, l), mkstate(ags0, alsf0, apcf0)) ∧ abs(mkstate(gs0, lsf0, pcf0), mkstate(ags0, alsf0, apcf0)) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), flitStep(mkstate(gs, lsf, pcf), doWriteFO(tid, l), mkstate(gs0, lsf0, pcf0)), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: abs-def: ⊦ abs(mkstate(gs, lsf, pcf), mkstate(ags, alsf, apcf)) ↔ gabs(gs, lsf, pcf, ags, alsf, apcf) ∧ (∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t))); gabs-def: ⊦ gabs(gs, lsf, pcf, ags, alsf, apcf) ↔ ags.mem = gs.pmem ∧ ags.ctr = gs.fctr ∧ reorder(ags.p, gs.pq, gs.rfo) ∧ ags.writers = gs.fwriters; ⊦ globalPSCCRASH ≠ pwbPSC(t, l); (s) ⊦ globalPSCPERSIST_FO(l) ≠ pwbPSC(t, l0); (s) ⊦ globalPSCPERSIST_W(l) ≠ pwbPSC(t, l0); (s) ⊦ lstep(gs, ls, pc, a, gs0, ls0, pc0) ↔ pre(gs, ls, pc, a) ∧ ls0 = lstepf(gs, ls, pc, a) ∧ gs0 = gstepf(gs, ls, pc, a) ∧ pc0 = pcstepf(gs, ls, pc, a); (s) ⊦ flitpscStep(mkstate(gs, lsf, pcf), a, mkstate(gs0, lsf0, pcf0)) ↔ (∃ t, ls, pc. lstep(gs, lsf(t), pcf(t), a, gs0, ls, pc) ∧ lsf0 = lsf(t := ls) ∧ pcf0 = pcf(t := pc)) ∨ (∃ l. a = globalPSCPERSIST_W(l) ∧ firstPersistW(gs.p(l)) < # gs.p(l) ∧ gs0 = (gs.mem:= gs.mem(l := gs.p(l)[firstPersistW(gs.p(l))].val)) .p:= gs.p(l := gs.p(l) -p firstPersistW(gs.p(l))) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ l. a = globalPSCPERSIST_FO(l) ∧ (∃ n. isPersistFO(n, gs.p(l)) ∧ gs0 = gs.p:= gs.p(l := gs.p(l) -p n)) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ a = globalPSCCRASH ∧ gs0 = mkFLITPSCgs(gs.mem, λ l. [], λ l. 0, λ l. ∅, λ l. ∅) ∧ lsf0 = lsf ∧ pcf0 = (λ t. (pcf(t) = idle ⊃ idle;crashed)); (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), flitStep(mkstate(gs, lsf, pcf), doWriteFO(tid, l), mkstate(gs0, lsf0, pcf0)), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⊦ flitStep(mkstate(gs, lsf, pcf), a, mkstate(gs0, lsf0, pcf0)) ↔ (∃ t, ls, pc. lstep(gs, lsf(t), pcf(t), a, gs0, ls, pc) ∧ lsf0 = lsf(t := ls) ∧ pcf0 = pcf(t := pc)) ∨ (∃ tid. a = doWrite(tid, gs.bq(tid).head.l, gs.bq(tid).head.v) ∧ (gs.bq(tid) ≠ [] ∧ gs.bq(tid).head.W?) ∧ gs0 = (gs.pq:= gs.pq(gs.bq(tid).head.l := gs.pq(gs.bq(tid).head.l) + W(gs.bq(tid).head.v, tid))).bq:= gs.bq(tid := gs.bq(tid).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ tid, l. a = (oneMember(tid, l, gs.fwriters) ⊃ doWriteFO(tid, l);propFO(tid, l)) ∧ (∃ n. n < # gs.bq(tid) ∧ isPropFO(n, l, gs.bq(tid))) ∧ ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid, l, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf)) ∨ (∃ tid. a = propSF(tid) ∧ (gs.bq(tid) ≠ [] ∧ gs.bq(tid).head = SF ∧ (∀ l. ¬ FO(tid) ∈ gs.pq(l))) ∧ gs0 = gs.bq:= gs.bq(tid := gs.bq(tid).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. a = globalPERSIST_W(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.W?) ∧ gs0 = (gs.pmem:= gs.pmem(loc := gs.pq(loc).head.val)).pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. a = globalPERSIST_FO(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.FO?) ∧ gs0 = gs.pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ a = globalCRASH ∧ ⟨pq := gs.pq, fctr := gs.fctr, bq := gs.bq, fwriters := gs.fwriters, freaders := gs.freaders, rfo := gs.rfo; CRASH(; pq, fctr, bq, fwriters, freaders, rfo, pcf); gs := (((((gs.pq:= pq).fctr:= fctr).bq:= bq).fwriters:= fwriters).freaders:= freaders).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf)
(∃ t, ls, pc. lstep(gs, lsf(t), pcf(t), doWriteFO(tid, l), gs0, ls, pc) ∧ lsf0 = lsf(t := ls) ∧ pcf0 = pcf(t := pc)) ∨ (∃ tid0. doWriteFO(tid, l) = doWrite(tid0, gs.bq(tid0).head.l, gs.bq(tid0).head.v) ∧ (gs.bq(tid0) ≠ [] ∧ gs.bq(tid0).head.W?) ∧ gs0 = (gs.pq:= gs.pq(gs.bq(tid0).head.l := gs.pq(gs.bq(tid0).head.l) + W(gs.bq(tid0).head.v, tid0))).bq:= gs.bq(tid0 := gs.bq(tid0).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ tid0, l0. doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)) ∧ (∃ n. n < # gs.bq(tid0) ∧ isPropFO(n, l0, gs.bq(tid0))) ∧ ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf)) ∨ (∃ tid0. doWriteFO(tid, l) = propSF(tid0) ∧ (gs.bq(tid0) ≠ [] ∧ gs.bq(tid0).head = SF ∧ (∀ l. ¬ FO(tid0) ∈ gs.pq(l))) ∧ gs0 = gs.bq:= gs.bq(tid0 := gs.bq(tid0).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. doWriteFO(tid, l) = globalPERSIST_W(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.W?) ∧ gs0 = (gs.pmem:= gs.pmem(loc := gs.pq(loc).head.val)).pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. doWriteFO(tid, l) = globalPERSIST_FO(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.FO?) ∧ gs0 = gs.pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ doWriteFO(tid, l) = globalCRASH ∧ ⟨pq := gs.pq, fctr := gs.fctr, bq := gs.bq, fwriters := gs.fwriters, freaders := gs.freaders, rfo := gs.rfo; CRASH(; pq, fctr, bq, fwriters, freaders, rfo, pcf); gs := (((((gs.pq:= pq).fctr:= fctr).bq:= bq).fwriters:= fwriters).freaders:= freaders).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
Used terms: pcf0, doWriteFO(tid, l), lsf, gs0, pcf, lsf0, gs
| ⊦ flitStep(mkstate(gs, lsf, pcf), a, mkstate(gs0, lsf0, pcf0)) ↔ (∃ t, ls, pc. lstep(gs, lsf(t), pcf(t), a, gs0, ls, pc) ∧ lsf0 = lsf(t := ls) ∧ pcf0 = pcf(t := pc)) ∨ (∃ tid. a = doWrite(tid, gs.bq(tid).head.l, gs.bq(tid).head.v) ∧ (gs.bq(tid) ≠ [] ∧ gs.bq(tid).head.W?) ∧ gs0 = (gs.pq:= gs.pq(gs.bq(tid).head.l := gs.pq(gs.bq(tid).head.l) + W(gs.bq(tid).head.v, tid))).bq:= gs.bq(tid := gs.bq(tid).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ tid, l. a = (oneMember(tid, l, gs.fwriters) ⊃ doWriteFO(tid, l);propFO(tid, l)) ∧ (∃ n. n < # gs.bq(tid) ∧ isPropFO(n, l, gs.bq(tid))) ∧ ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid, l, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf)) ∨ (∃ tid. a = propSF(tid) ∧ (gs.bq(tid) ≠ [] ∧ gs.bq(tid).head = SF ∧ (∀ l. ¬ FO(tid) ∈ gs.pq(l))) ∧ gs0 = gs.bq:= gs.bq(tid := gs.bq(tid).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. a = globalPERSIST_W(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.W?) ∧ gs0 = (gs.pmem:= gs.pmem(loc := gs.pq(loc).head.val)).pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. a = globalPERSIST_FO(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.FO?) ∧ gs0 = gs.pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ a = globalCRASH ∧ ⟨pq := gs.pq, fctr := gs.fctr, bq := gs.bq, fwriters := gs.fwriters, freaders := gs.freaders, rfo := gs.rfo; CRASH(; pq, fctr, bq, fwriters, freaders, rfo, pcf); gs := (((((gs.pq:= pq).fctr:= fctr).bq:= bq).fwriters:= fwriters).freaders:= freaders).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf) |
| (∃ t, ls, pc. lstep(gs, lsf(t), pcf(t), doWriteFO(tid, l), gs0, ls, pc) ∧ lsf0 = lsf(t := ls) ∧ pcf0 = pcf(t := pc)) ∨ (∃ tid0. doWriteFO(tid, l) = doWrite(tid0, gs.bq(tid0).head.l, gs.bq(tid0).head.v) ∧ (gs.bq(tid0) ≠ [] ∧ gs.bq(tid0).head.W?) ∧ gs0 = (gs.pq:= gs.pq(gs.bq(tid0).head.l := gs.pq(gs.bq(tid0).head.l) + W(gs.bq(tid0).head.v, tid0))).bq:= gs.bq(tid0 := gs.bq(tid0).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ tid0, l0. doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)) ∧ (∃ n. n < # gs.bq(tid0) ∧ isPropFO(n, l0, gs.bq(tid0))) ∧ ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf)) ∨ (∃ tid0. doWriteFO(tid, l) = propSF(tid0) ∧ (gs.bq(tid0) ≠ [] ∧ gs.bq(tid0).head = SF ∧ (∀ l. ¬ FO(tid0) ∈ gs.pq(l))) ∧ gs0 = gs.bq:= gs.bq(tid0 := gs.bq(tid0).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. doWriteFO(tid, l) = globalPERSIST_W(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.W?) ∧ gs0 = (gs.pmem:= gs.pmem(loc := gs.pq(loc).head.val)).pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ (∃ loc. doWriteFO(tid, l) = globalPERSIST_FO(loc) ∧ (gs.pq(loc) ≠ [] ∧ gs.pq(loc).head.FO?) ∧ gs0 = gs.pq:= gs.pq(loc := gs.pq(loc).tail) ∧ lsf0 = lsf ∧ pcf0 = pcf) ∨ doWriteFO(tid, l) = globalCRASH ∧ ⟨pq := gs.pq, fctr := gs.fctr, bq := gs.bq, fwriters := gs.fwriters, freaders := gs.freaders, rfo := gs.rfo; CRASH(; pq, fctr, bq, fwriters, freaders, rfo, pcf); gs := (((((gs.pq:= pq).fctr:= fctr).bq:= bq).fwriters:= fwriters).freaders:= freaders).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
pre(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ ls = lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ gs0 = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ pc = pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ lsf0 = lsf(t := lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))) ∧ pcf0 = pcf(t := pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))) ∨ doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)) ∧ n < # gs.bq(tid0) ∧ isPropFO(n, l0, gs.bq(tid0)) ∧ ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: ⊦ doWriteFO(t, loc) ≠ globalCRASH; (s) ⊦ doWriteFO(t, loc) ≠ globalPERSIST_FO(loc0); (s) ⊦ doWriteFO(t, loc) ≠ globalPERSIST_W(loc0); (s) ⊦ doWriteFO(t, loc) ≠ propSF(t0); (s) ⊦ doWrite(t, loc, v) ≠ doWriteFO(t0, loc0); (s) ⊦ lstep(gs, ls, pc, a, gs0, ls0, pc0) ↔ pre(gs, ls, pc, a) ∧ ls0 = lstepf(gs, ls, pc, a) ∧ gs0 = gstepf(gs, ls, pc, a) ∧ pc0 = pcstepf(gs, ls, pc, a); (s)
| pre(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ ls = lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ gs0 = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ pc = pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)) ∧ lsf0 = lsf(t := lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))) ∧ pcf0 = pcf(t := pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))) ∨ doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)) ∧ n < # gs.bq(tid0) ∧ isPropFO(n, l0, gs.bq(tid0)) ∧ ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs0 = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), ls = lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), lsf0 = lsf(t := lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))), pc = pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), pcf0 = pcf(t := pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), pre(gs, lsf(t), pcf(t), doWriteFO(tid, l)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)), n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs0 = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), ls = lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), lsf0 = lsf(t := lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))), pc = pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), pcf0 = pcf(t := pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), pre(gs, lsf(t), pcf(t), doWriteFO(tid, l)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs, lsf, pcf), FLITInv (gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), lsf(t := lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))), pcf(t := pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)))), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), pre(gs, lsf(t), pcf(t), doWriteFO(tid, l)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).pmem ∧ ags0.ctr = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).fctr ∧ reorder(ags0.p, gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).pq, gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).rfo) ∧ ags0.writers = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).fwriters ∧ (∀ t0. labs (gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), (t = t0 ⊃ lstepf(gs, lsf(t0), pcf(t0), doWriteFO(tid, l));lsf(t0)), (t = t0 ⊃ pcstepf(gs, lsf(t0), pcf(t0), doWriteFO(tid, l));pcf(t0)), ags0, alsf0(t0), apcf0(t0)))
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, FLITInv(gs, lsf, pcf), FLITInv (gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), lsf(t := lstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l))), pcf(t := pcstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)))), FLITPSCInv(ags, alsf, apcf), oneMember(tid, als.l, gs.fwriters), pre(gs, lsf(t), pcf(t), doWriteFO(tid, l)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).pmem ∧ ags0.ctr = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).fctr ∧ reorder(ags0.p, gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).pq, gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).rfo) ∧ ags0.writers = gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)).fwriters ∧ (∀ t0. labs (gstepf(gs, lsf(t), pcf(t), doWriteFO(tid, l)), (t = t0 ⊃ lstepf(gs, lsf(t0), pcf(t0), doWriteFO(tid, l));lsf(t0)), (t = t0 ⊃ pcstepf(gs, lsf(t0), pcf(t0), doWriteFO(tid, l));pcf(t0)), ags0, alsf0(t0), apcf0(t0))) |
Used simplifier rules: FLITPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;; ⊦ gstepf(gs, ls, ready, a) = gs; (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) ⊦ doWriteFO(t, loc) ≠ invFLITWRITE(t0, loc0, v); (s) ⊦ doWriteFO(t, loc) ≠ invFLITREAD(t0, loc0); (s) ⊦ callFLITCOMPLETE(t) ≠ doWriteFO(t0, loc); (s) ⊦ pre(gs, ls, idle, a) ↔ a = callRUN(ls.t); (s) ⊦ callRUN(t) ≠ doWriteFO(t0, loc); (s) ⊦ pre(gs, ls, crashed, a) ↔ false; (s) ⊦ pcstepf(gs, ls, W7, a) = ready; (s) ⊦ pre(gs, ls, W7, a) ↔ a = retFLITWRITE(ls.t); (s) ⊦ doWriteFO(t, loc) ≠ retFLITWRITE(t0); (s) ⊦ gstepf(gs, ls, W6, a) = (gs.fctr:= gs.fctr(ls.loc := gs.fctr(ls.loc) - 1)) .fwriters:= gs.fwriters(ls.loc := gs.fwriters(ls.loc) -- ls.t); (s) ⊦ lstepf(gs, ls, W6, a) = ls; (s) ⊦ pcstepf(gs, ls, W6, a) = W7; (s) ⊦ pre(gs, ls, W6, a) ↔ (gs.bq(ls.t) = [] ∧ (∀ l. ¬ FO(ls.t) ∈ gs.pq(l))) ∧ a = ctrDec(ls.t, ls.loc); (s) ⊦ ctrDec(t, loc) ≠ doWriteFO(t0, loc0); (s) ⊦ pcstepf(gs, ls, W5, a) = W6; (s) ⊦ pre(gs, ls, W5, a) ↔ a = τ; (s) ⊦ doWriteFO(t, loc) ≠ τ; (s) ⊦ pcstepf(gs, ls, W4, a) = W5; (s) ⊦ pre(gs, ls, W4, a) ↔ a = τ; (s) ⊦ pcstepf(gs, ls, W3, a) = W4; (s) ⊦ pre(gs, ls, W3, a) ↔ a = τ; (s) ⊦ gstepf(gs, ls, W2, a) = (gs.fctr:= gs.fctr(ls.loc := gs.fctr(ls.loc) + 1)) .fwriters:= gs.fwriters(ls.loc := gs.fwriters(ls.loc) ++ ls.t); (s) ⊦ lstepf(gs, ls, W2, a) = ls; (s) ⊦ pcstepf(gs, ls, W2, a) = W3; (s) ⊦ pre(gs, ls, W2, a) ↔ (gs.bq(ls.t) = [] ∧ (∀ l. ¬ FO(ls.t) ∈ gs.pq(l))) ∧ a = ctrInc(ls.t, ls.loc); (s) ⊦ ctrInc(t, loc) ≠ doWriteFO(t0, loc0); (s) ⊦ gstepf(gs, ls, W1, a) = gs.bq:= gs.bq(ls.t := gs.bq(ls.t) + SF); (s) ⊦ x + a = x + a '; (s) ⊦ lstepf(gs, ls, W1, a) = ls; (s) ⊦ pcstepf(gs, ls, W1, a) = W2; (s) ⊦ pre(gs, ls, W1, a) ↔ a = sfence(ls.t); (s) ⊦ doWriteFO(t, loc) ≠ sfence(t0); (s) ⊦ pcstepf(gs, ls, R4, a) = ready; (s) ⊦ pre(gs, ls, R4, a) ↔ a = retFLITREAD(ls.t, ls.val); (s) ⊦ doWriteFO(t, loc) ≠ retFLITREAD(t0, v); (s) ⊦ gstepf(gs, ls, R3, a) = ( (gs.bq:= gs.bq(ls.t := gs.bq(ls.t) + FO(ls.loc))) .rfo:= gs.rfo(ls.t := gs.rfo(ls.t) + FO(ls.loc))) .freaders:= gs.freaders(ls.loc := gs.freaders(ls.loc) -- ls.t); (s) ⊦ lstepf(gs, ls, R3, a) = ls; (s) ⊦ pcstepf(gs, ls, R3, a) = R4; (s) ⊦ pre(gs, ls, R3, a) ↔ a = pwb(ls.t, ls.loc); (s) ⊦ doWriteFO(t, loc) ≠ pwb(t0, loc0); (s) ⊦ gstepf(gs, ls, R2, a) = (gs.fctr(ls.loc) ≠ 0 ⊃ gs ;gs.freaders:= gs.freaders(ls.loc := gs.freaders(ls.loc) -- ls.t) ); (s) ⊦ lstepf(gs, ls, R2, a) = ls; (s) ⊦ pcstepf(gs, ls, R2, a) = (gs.fctr(ls.loc) ≠ 0 ⊃ R3;R4); (s) ⊦ pre(gs, ls, R2, a) ↔ a = ctrRead(ls.t, ls.loc, gs.fctr(ls.loc)); (s) ⊦ ctrRead(t, loc, n) ≠ doWriteFO(t0, loc0); (s) ⊦ gstepf(gs, ls, R1, a) = gs.freaders:= gs.freaders(ls.loc := gs.freaders(ls.loc) ++ ls.t); (s) ⊦ lstepf(gs, ls, R1, a) = ls.val:= (((gs.pmem ⊕ gs.pq) ⊕ gs.bq(ls.t)))(ls.loc); (s) ⊦ pcstepf(gs, ls, R1, a) = R2; (s) ⊦ pre(gs, ls, R1, a) ↔ a = doRead(ls.t, ls.loc, ((gs.pmem ⊕ gs.pq))(ls.loc)); (s) ⊦ ((mem ⊕ p))(l) = mem(l) ⊕ p(l); (s) ⊦ reorder(p, pq, rfo) → v ⊕ pq(l) = v ⊕ p(l); (s) ⊦ doRead(t, loc, v) ≠ doWriteFO(t0, loc0); (s)
| ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)), n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)), gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)), gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)), gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: ⊦ doWriteFO(t, loc) ≠ propFO(t0, loc0); (s) Used formulas: oneMember(tid0, l0, gs.fwriters)
| ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, doWriteFO(tid, l) = (oneMember(tid0, l0, gs.fwriters) ⊃ doWriteFO(tid0, l0);propFO(tid0, l0)), gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid, l)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: ⊦ doWriteFO(t, loc) = doWriteFO(t0, loc0) ↔ t = t0 ∧ loc = loc0; (ws)
| ⟨fwriters := gs.fwriters, pq := gs.pq, bq := gs.bq, rfo := gs.rfo; PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⟨PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
| ⟨PROP_FO(tid0, l0, fwriters; pq, bq, rfo); gs := ((gs.pq:= pq).bq:= bq).rfo:= rfo⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⟨gs := ((gs.pq:= pq0).bq:= bq0).rfo:= rfo0⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ⟨PROP_FO(tid0, l0, fwriters; pq, bq, rfo)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
| ⟨gs := ((gs.pq:= pq0).bq:= bq0).rfo:= rfo0⟩ (gs0 = gs ∧ lsf0 = lsf ∧ pcf0 = pcf), ⟨PROP_FO(tid0, l0, fwriters; pq, bq, rfo)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(gs0, lsf0, pcf0), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⟨PROP_FO(tid0, l0, fwriters; pq, bq, rfo)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, gs0 = ((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf0 = lsf, pcf0 = pcf, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t)))
| ⟨PROP_FO(tid0, l0, fwriters; pq, bq, rfo)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, gs0 = ((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf0 = lsf, pcf0 = pcf, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs0, lsf0, pcf0), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs0.pmem ∧ ags0.ctr = gs0.fctr ∧ reorder(ags0.p, gs0.pq, gs0.rfo) ∧ ags0.writers = gs0.fwriters ∧ (∀ t. labs(gs0, lsf0(t), pcf0(t), ags0, alsf0(t), apcf0(t))) |
⟨PROP_FO(tid0, l0, gs.fwriters; pq, bq, rfo)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: ⊦ (gs.pq:= pq).fwriters = gs.fwriters; (s) ⊦ (gs.bq:= bq).fwriters = gs.fwriters; (s) ⊦ (gs.rfo:= bq0).fwriters = gs.fwriters; (s) ⊦ (gs.rfo:= bq0).rfo = bq0; (s) ⊦ (gs.pq:= pq).pq = pq; (s) ⊦ (gs.bq:= bq).pq = gs.pq; (s) ⊦ (gs.rfo:= bq0).pq = gs.pq; (s) ⊦ (gs.pq:= pq).fctr = gs.fctr; (s) ⊦ (gs.bq:= bq).fctr = gs.fctr; (s) ⊦ (gs.rfo:= bq0).fctr = gs.fctr; (s) ⊦ (gs.pq:= pq).pmem = gs.pmem; (s) ⊦ (gs.bq:= bq).pmem = gs.pmem; (s) ⊦ (gs.rfo:= bq0).pmem = gs.pmem; (s)
| ⟨PROP_FO(tid0, l0, gs.fwriters; pq, bq, rfo)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, pq = gs.pq, rfo = gs.rfo, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
⟨choose n with n < # bq(tid) ∧ isPropFO(n, l, bq(tid)) in pq(l) := pq(l) + FO(tid), bq(tid) := bq(tid) -p n, rfo(tid) := (tid ∈ fwriters(l) ⊃ rfo(tid);rfo(tid) -p n) ifnone skip⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: decl: PROP_FO(tid, l, fwriters; pq, bq, rfo) {choose n with n < # bq(tid) ∧ isPropFO(n, l, bq(tid)) in pq(l) := pq(l) + FO(tid), bq(tid) := bq(tid) -p n, rfo(tid) := (tid ∈ fwriters(l) ⊃ rfo(tid);rfo(tid) -p n) ifnone skip };
| ⟨choose n with n < # bq(tid) ∧ isPropFO(n, l, bq(tid)) in pq(l) := pq(l) + FO(tid), bq(tid) := bq(tid) -p n, rfo(tid) := (tid ∈ fwriters(l) ⊃ rfo(tid);rfo(tid) -p n) ifnone skip⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
⟨pq(l) := pq(l) + FO(tid), bq(tid) := bq(tid) -p n, rfo(tid) := (tid ∈ fwriters(l) ⊃ rfo(tid);rfo(tid) -p n)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # bq(tid), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l, bq(tid)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
⟨skip⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ n. ¬(n < # bq(tid) ∧ isPropFO(n, l, bq(tid))) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
| ⟨pq(l) := pq(l) + FO(tid), bq(tid) := bq(tid) -p n, rfo(tid) := (tid ∈ fwriters(l) ⊃ rfo(tid);rfo(tid) -p n)⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # bq(tid), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l, bq(tid)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
pq(l := pq(l) + FO(tid)) = pq0, bq(tid := bq(tid) -p n) = bq0, rfo(tid := (tid ∈ fwriters(l) ⊃ rfo(tid);rfo(tid) -p n)) = rfo0, ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n < # bq(tid), n0 < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l, bq(tid)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
| pq(l := pq(l) + FO(tid)) = pq0, bq(tid := bq(tid) -p n) = bq0, rfo(tid := (tid ∈ fwriters(l) ⊃ rfo(tid);rfo(tid) -p n)) = rfo0, ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n < # bq(tid), n0 < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l, bq(tid)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
Used simplifier rules: ⊦ oneMember(t, l, tsf) → (t ∈ tsf(l0) ↔ l = l0); (s) ⊦ x + a = x + a '; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ (∀ t. labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)))(t), apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)))(t)))
Used terms: gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))), apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)))
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ (∀ t. labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)))(t), apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)))(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t)))
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t)))
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t)))
Used formulas: pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = R3, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t)))
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t)))
Used simplifier rules: FLITPSCPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;; ⊦ 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) ⊦ invFLITPSCWRITE(t, l, v) ≠ pwbPSC(t0, l0); (s) ⊦ invFLITPSCREAD(t, l) ≠ pwbPSC(t0, l0); (s) ⊦ callPSCCOMPLETE(t) ≠ pwbPSC(t0, l); (s) ⊦ pre(gs, ls, idle, a) ↔ a = callPSCRUN(ls.t); (s) ⊦ callPSCRUN(t) ≠ pwbPSC(t0, l); (s) ⊦ pre(gs, ls, crashed, a) ↔ false; (s) ⊦ pre(gs, ls, W7, a) ↔ a = retFLITPSCWRITE(ls.t); (s) ⊦ pwbPSC(t, l) ≠ retFLITPSCWRITE(t0); (s) ⊦ pre(gs, ls, W6, a) ↔ a = ctrDecPSC(ls.t, ls.l); (s) ⊦ ctrDecPSC(t, l) ≠ pwbPSC(t0, l0); (s) ⊦ pre(gs, ls, W5, a) ↔ (∀ l. ¬ FO(ls.t) ∈ gs.p(l)) ∧ a = sfencePSC(ls.t); (s) ⊦ reorder(p, pq, rfo) → (FO(t) ∈ p(l) ↔ FO(t) ∈ pq(l) ∨ FO(l) ∈ rfo(t)); (s) ⊦ pwbPSC(t, l) ≠ sfencePSC(t0); (s) ⊦ pre(gs, ls, W3, a) ↔ a = doWritePSC(ls.t, ls.l, ls.v); (s) ⊦ doWritePSC(t, l, v) ≠ pwbPSC(t0, l0); (s) ⊦ pre(gs, ls, W2, a) ↔ a = ctrIncPSC(ls.t, ls.l); (s) ⊦ ctrIncPSC(t, l) ≠ pwbPSC(t0, l0); (s) ⊦ pre(gs, ls, W1, a) ↔ (∀ l. ¬ FO(ls.t) ∈ gs.p(l)) ∧ a = sfencePSC(ls.t); (s) ⊦ pre(gs, ls, R4, a) ↔ a = retFLITPSCREAD(ls.t, ls.v); (s) ⊦ pwbPSC(t, l) ≠ retFLITPSCREAD(t0, v); (s) ⊦ pre(gs, ls, R2, a) ↔ a = ctrReadPSC(ls.t, ls.l, gs.ctr(ls.l)); (s) ⊦ ctrReadPSC(t, l, n) ≠ pwbPSC(t0, l0); (s) ⊦ pre(gs, ls, R1, a) ↔ a = doReadPSC(ls.t, ls.l, ((gs.mem ⊕ gs.p))(ls.l)); (s) ⊦ ((mem ⊕ p))(l) = mem(l) ⊕ p(l); (s) ⊦ doReadPSC(t, l, v) ≠ pwbPSC(t0, l0); (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = R3, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used simplifier rules: ⊦ x + a = x + a '; (s) ⊦ gstepf(gs, ls, R3, a) = (gs.p:= gs.p(ls.l := gs.p(ls.l) + FO(ls.t))) .readers:= gs.readers(ls.l := gs.readers(ls.l) -- ls.t); (s) ⊦ (gs.p:= p).writers = gs.writers; (s) ⊦ (gs.readers:= writers0).writers = gs.writers; (s) ⊦ (gs.p:= p).p = p; (s) ⊦ (gs.readers:= writers0).p = gs.p; (s) ⊦ (gs.p:= p).ctr = gs.ctr; (s) ⊦ (gs.readers:= writers0).ctr = gs.ctr; (s) ⊦ (gs.p:= p).mem = gs.mem; (s) ⊦ (gs.readers:= writers0).mem = gs.mem; (s) ⊦ pcstepf(gs, ls, R3, a) = R4; (s) ⊦ lstepf(gs, ls, R3, a) = ls; (s) ⊦ pwbPSC(t, l) = pwbPSC(t0, l0) ↔ t = t0 ∧ l = l0; (ws) ⊦ pre(gs, ls, R3, a) ↔ a = pwbPSC(ls.t, ls.l); (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), labs(gs, lsf(tid0), pcf(tid0), ags, alsf(tid0), apcf(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used terms: tid0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), labs(gs, lsf(tid0), pcf(tid0), ags, alsf(tid0), apcf(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W7, pcf(tid0) ≠ W6, pcf(tid0) ≠ W5, pcf(tid0) ≠ W4, pcf(tid0) ≠ W3, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, pcf(tid0) ≠ R4, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(tid0) = R3 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = R3 → lsf(tid0).loc = alsf(tid0).l ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used simplifier rules: labs-def: ⊦ labs(gs, ls, pc, ags, als, apc) ↔ ls.t = als.t ∧ (pc = idle → apc = idle) ∧ (pc = ready → apc = ready) ∧ (pc = crashed → apc = crashed) ∧ (pc = R1 → apc = R1) ∧ (pc = R2 → apc = R2) ∧ (pc = R3 → apc = R3) ∧ (pc = R4 → apc = R4) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.loc = als.l) ∧ (pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.val = als.v) ∧ (pc = W1 → apc = W1) ∧ (pc = W2 → apc = (SF ∈ gs.bq(ls.t) ⊃ W1;W2)) ∧ (pc = W3 → apc = W3) ∧ (pc = W4 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;W4)) ∧ ( pc = W5 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;W5))) ∧ ( pc = W6 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3 ;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;(SF ∈ gs.bq(ls.t) ⊃ W5;W6)) )) ∧ (pc = W7 → apc = W7) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.loc = als.l) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.val = als.v); ⊦ R3 ≠ idle; (s) ⊦ R3 ≠ ready; (s) ⊦ R3 ≠ crashed; (s) ⊦ R1 ≠ R3; (s) ⊦ R2 ≠ R3; (s) ⊦ R3 ≠ R4; (s) ⊦ R3 ≠ W1; (s) ⊦ R3 ≠ W2; (s) ⊦ R3 ≠ W3; (s) ⊦ R3 ≠ W4; (s) ⊦ R3 ≠ W5; (s) ⊦ R3 ≠ W6; (s) ⊦ R3 ≠ W7; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W7, pcf(tid0) ≠ W6, pcf(tid0) ≠ W5, pcf(tid0) ≠ W4, pcf(tid0) ≠ W3, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, pcf(tid0) ≠ R4, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(tid0) = R3 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = R3 → lsf(tid0).loc = alsf(tid0).l ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W7, pcf(tid0) ≠ W6, pcf(tid0) ≠ W5, pcf(tid0) ≠ W4, pcf(tid0) ≠ W3, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, pcf(tid0) ≠ R4, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(tid0) = R3 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R3 → lsf(tid0).val = alsf(tid0).v ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used simplifier rules: FLITPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;;
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W7, pcf(tid0) ≠ W6, pcf(tid0) ≠ W5, pcf(tid0) ≠ W4, pcf(tid0) ≠ W3, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, pcf(tid0) ≠ R4, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(tid0) = R3 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R3 → lsf(tid0).val = alsf(tid0).v ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used simplifier rules: ⊦ R3 ≠ W7; (s) ⊦ R3 ≠ W6; (s) ⊦ R3 ≠ W5; (s) ⊦ R3 ≠ W4; (s) ⊦ R3 ≠ W3; (s) ⊦ R3 ≠ W2; (s) ⊦ R3 ≠ W1; (s) ⊦ R3 ≠ R4; (s) ⊦ R2 ≠ R3; (s) ⊦ R1 ≠ R3; (s) ⊦ R3 ≠ crashed; (s) ⊦ R3 ≠ ready; (s) ⊦ R3 ≠ idle; (s)
| ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)))
ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used terms: gs, lsf, pcf
| ⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t))) |
| ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used terms: tid0
| ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), R3), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
| ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = R3, pcf(tid0) = R3, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), R3), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0) = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := R4) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), (ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ')).readers:= ags.readers(alsf(tid0).l := ags.readers(alsf(tid0).l) -- tid0), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t))
Used simplifier rules: ⊦ R3 ≠ idle; (s) ⊦ R3 ≠ ready; (s) ⊦ R3 ≠ crashed; (s) ⊦ R3 ≠ R4; (s) ⊦ R1 ≠ R3; (s) ⊦ R2 ≠ R3; (s) ⊦ R3 ≠ W1; (s) ⊦ R3 ≠ W2; (s) ⊦ R3 ≠ W3; (s) ⊦ R3 ≠ W4; (s) ⊦ R3 ≠ W5; (s) ⊦ R3 ≠ W6; (s) ⊦ R3 ≠ W7; (s) ⊦ oneMember(t, l, tsf) → ¬ notMember(t, tsf); (as) Used terms: gs, lsf(tid0), R3
| ⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t)) |
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ') = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := W5) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)))
Used simplifier rules: ⊦ x + a = x + a '; (s) ⊦ gstepf(gs, ls, W4, a) = gs.p:= gs.p(ls.l := gs.p(ls.l) + FO(ls.t)); (s) ⊦ (gs.p:= p).writers = gs.writers; (s) ⊦ (gs.p:= p).p = p; (s) ⊦ (gs.p:= p).ctr = gs.ctr; (s) ⊦ (gs.p:= p).mem = gs.mem; (s) ⊦ pcstepf(gs, ls, W4, a) = W5; (s) ⊦ lstepf(gs, ls, W4, a) = ls; (s) ⊦ pwbPSC(t, l) = pwbPSC(t0, l0) ↔ t = t0 ∧ l = l0; (ws) ⊦ pre(gs, ls, W4, a) ↔ a = pwbPSC(ls.t, ls.l); (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ') = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := W5) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))) ∧ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ') = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := W5) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)))
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ t0. pre(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) ') = gstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l)) ∧ alsf(tid0 := alsf(tid0)) = alsf(t0 := lstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) ∧ apcf(tid0 := W5) = apcf(t0 := pcstepf(ags, alsf(t0), apcf(t0), pwbPSC(tid0, alsf(tid0).l))) |
Used simplifier rules: ⊦ pre(gs, ls, W4, a) ↔ a = pwbPSC(ls.t, ls.l); (s) ⊦ pwbPSC(t, l) = pwbPSC(t0, l0) ↔ t = t0 ∧ l = l0; (ws) ⊦ gstepf(gs, ls, W4, a) = gs.p:= gs.p(ls.l := gs.p(ls.l) + FO(ls.t)); (s) ⊦ x + a = x + a '; (s) ⊦ lstepf(gs, ls, W4, a) = ls; (s) ⊦ pcstepf(gs, ls, W4, a) = W5; (s) Used terms: tid0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
| ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, gs.bq(tid0)), isPropFO(n, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
| ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, gs.bq(tid0)), isPropFO(n, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)))
ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, gs.bq(tid0)), isPropFO(n0, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used terms: gs, lsf, pcf
| ⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t))) |
| ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, gs.bq(tid0)), isPropFO(n0, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, gs.bq(tid0)), isPropFO(n, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used terms: tid0
| ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, gs.bq(tid0)), isPropFO(n, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t))
ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, gs.bq(tid0)), isPropFO(n0, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W1 ∨ pcf(tid0) = W2 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W3 ∨ pcf(tid0) = W7 → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(lsf(tid0).t, gs.bq(lsf(tid0).t), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W1 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W7 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = [], pcf(tid0) = W3 → gs.bq(lsf(tid0).t) = [], pcf(tid0) = W4 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = SF ' ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(lsf(tid0).t) ≠ [] ∧ gs.bq(lsf(tid0).t).head.W? → gs.bq(lsf(tid0).t).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W1 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = W2 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t) ∨ gs.rfo(lsf(tid0).t) + SF ' = gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = R1 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = R2 ∨ pcf(tid0) = R3 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.freaders), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = crashed → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used terms: gs, lsf(tid0), pcf(tid0)
| ⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t)) |
| ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, gs.bq(tid0)), isPropFO(n0, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W1 ∨ pcf(tid0) = W2 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W3 ∨ pcf(tid0) = W7 → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(lsf(tid0).t, gs.bq(lsf(tid0).t), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W1 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W7 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = [], pcf(tid0) = W3 → gs.bq(lsf(tid0).t) = [], pcf(tid0) = W4 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = SF ' ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(lsf(tid0).t) ≠ [] ∧ gs.bq(lsf(tid0).t).head.W? → gs.bq(lsf(tid0).t).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W1 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = W2 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t) ∨ gs.rfo(lsf(tid0).t) + SF ' = gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = R1 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = R2 ∨ pcf(tid0) = R3 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.freaders), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = crashed → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, gs.bq(tid0)), isPropFO(n0, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(tid0).head.W? → gs.bq(tid0).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: ⊦ oneMember(t, l, tsf) → ¬ notMember(t, tsf); (as)
| ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, gs.bq(tid0)), isPropFO(n0, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(tid0).head.W? → gs.bq(tid0).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, gs.bq(tid0)), isPropFO(n, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: gs.bq(tid0), head, bel
| gs.bq(tid0) = head + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, gs.bq(tid0)), isPropFO(n, als.l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ m + 1 ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
⊦ reorder(p, pq, rfo) ∧ rfo(t) = [] → reorder(p(l := p(l) + FO(t) '), pq(l := pq(l) + FO(t) '), rfo)
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, head ' + bel), isPropFO(n, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))) ∧ gs.rfo(tid0 := gs.rfo(tid0))(tid0) = []
Used terms: als.l, gs.rfo(tid0 := gs.rfo(tid0)), tid0, gs.pq, ags.p
| ⊦ reorder(p, pq, rfo) ∧ rfo(t) = [] → reorder(p(l := p(l) + FO(t) '), pq(l := pq(l) + FO(t) '), rfo) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, head ' + bel), isPropFO(n, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))) ∧ gs.rfo(tid0 := gs.rfo(tid0))(tid0) = [] |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))) ∧ gs.rfo(tid0) = []
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))) ∧ gs.rfo(tid0) = [] |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, head ' + bel), isPropFO(n, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.rfo(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, head ' + bel), isPropFO(n, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, head ' + bel), isPropFO(n, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.rfo(tid0 := gs.rfo(tid0)) = gs.rfo, gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used formulas: gs.rfo(tid0 := gs.rfo(tid0)) = gs.rfo
| gs.rfo(tid0 := gs.rfo(tid0)) = gs.rfo, gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p, gs.pq, gs.rfo(tid0 := gs.rfo(tid0))), ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.rfo(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, als.l, head ' + bel), isPropFO(n, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.rfo(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, pcf(tid0) ≠ W4, pcf(tid0) ≠ W5, pcf(tid0) ≠ W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, als.l = alsf(tid0).l, ags.mem = gs.pmem, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.rfo(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, pcf(tid0) ≠ W4, pcf(tid0) ≠ W5, pcf(tid0) ≠ W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(als.l := gs.pq(als.l) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, als.l, head ' + bel), isPropFO(n0, als.l, head ' + bel), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ reorder(ags.p(als.l := ags.p(als.l) + FO(tid0) '), gs.pq(als.l := gs.pq(als.l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
Used simplifier rules: FLITPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;;
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv (((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0) -p n), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv (((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0) -p n), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l)
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv (((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0) -p n), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l ⊦
Used terms: tid0, alsf(tid0).l, gs.fwriters
| ⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l) |
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv (((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0) -p n), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv (((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0) -p n), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ l0. als.l = l0 ↔ l0 = alsf(tid0).l ⊦
Used simplifier rules: ⊦ oneMember(t, l, tsf) → (t ∈ tsf(l0) ↔ l = l0); (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], als.l ≠ alsf(tid0).l, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv (((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := gs.rfo(tid0) -p n), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ reorder (ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) '), gs.rfo(tid0 := gs.rfo(tid0) -p n)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ l0. als.l = l0 ↔ l0 = alsf(tid0).l ⊦ |
Used terms: alsf(tid0).l
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ labs ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), ags.p:= ags.p(alsf(tid0).l := ags.p(alsf(tid0).l) + FO(tid0) '), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).t ∧ (pcf(t) = idle → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = idle) ∧ (pcf(t) = ready → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = ready) ∧ (pcf(t) = crashed → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = crashed) ∧ (pcf(t) = R1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R1) ∧ (pcf(t) = R2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R2) ∧ (pcf(t) = R3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R3) ∧ (pcf(t) = R4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) ∧ (pcf(t) = W1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W1) ∧ ( pcf(t) = W2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W3) ∧ ( pcf(t) = W4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W7) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v)
Used simplifier rules: labs-def: ⊦ labs(gs, ls, pc, ags, als, apc) ↔ ls.t = als.t ∧ (pc = idle → apc = idle) ∧ (pc = ready → apc = ready) ∧ (pc = crashed → apc = crashed) ∧ (pc = R1 → apc = R1) ∧ (pc = R2 → apc = R2) ∧ (pc = R3 → apc = R3) ∧ (pc = R4 → apc = R4) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.loc = als.l) ∧ (pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.val = als.v) ∧ (pc = W1 → apc = W1) ∧ (pc = W2 → apc = (SF ∈ gs.bq(ls.t) ⊃ W1;W2)) ∧ (pc = W3 → apc = W3) ∧ (pc = W4 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;W4)) ∧ ( pc = W5 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;W5))) ∧ ( pc = W6 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3 ;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;(SF ∈ gs.bq(ls.t) ⊃ W5;W6)) )) ∧ (pc = W7 → apc = W7) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.loc = als.l) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.val = als.v); ⊦ (gs.bq:= bq).bq = bq; (s) ⊦ (gs.rfo:= bq0).bq = gs.bq; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).t ∧ (pcf(t) = idle → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = idle) ∧ (pcf(t) = ready → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = ready) ∧ (pcf(t) = crashed → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = crashed) ∧ (pcf(t) = R1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R1) ∧ (pcf(t) = R2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R2) ∧ (pcf(t) = R3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R3) ∧ (pcf(t) = R4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) ∧ (pcf(t) = W1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W1) ∧ ( pcf(t) = W2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W3) ∧ ( pcf(t) = W4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W7) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, tid0 = t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).t ∧ (pcf(t) = idle → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = idle) ∧ (pcf(t) = ready → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = ready) ∧ (pcf(t) = crashed → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = crashed) ∧ (pcf(t) = R1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R1) ∧ (pcf(t) = R2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R2) ∧ (pcf(t) = R3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R3) ∧ (pcf(t) = R4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) ∧ (pcf(t) = W1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W1) ∧ ( pcf(t) = W2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W3) ∧ ( pcf(t) = W4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W7) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v)
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).t ∧ (pcf(t) = idle → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = idle) ∧ (pcf(t) = ready → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = ready) ∧ (pcf(t) = crashed → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = crashed) ∧ (pcf(t) = R1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R1) ∧ (pcf(t) = R2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R2) ∧ (pcf(t) = R3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R3) ∧ (pcf(t) = R4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) ∧ (pcf(t) = W1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W1) ∧ ( pcf(t) = W2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W3) ∧ ( pcf(t) = W4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W7) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v)
Used formulas: tid0 = t
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, tid0 = t, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).t ∧ (pcf(t) = idle → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = idle) ∧ (pcf(t) = ready → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = ready) ∧ (pcf(t) = crashed → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = crashed) ∧ (pcf(t) = R1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R1) ∧ (pcf(t) = R2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R2) ∧ (pcf(t) = R3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R3) ∧ (pcf(t) = R4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) ∧ (pcf(t) = W1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W1) ∧ ( pcf(t) = W2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W3) ∧ ( pcf(t) = W4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W7) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], n < # gs.bq(t), n0 < # gs.bq(t), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = t ∧ pcf(t) ≠ idle ∧ pcf(t) ≠ ready ∧ pcf(t) ≠ crashed ∧ pcf(t) ≠ R1 ∧ pcf(t) ≠ R2 ∧ pcf(t) ≠ R3 ∧ pcf(t) ≠ R4 ∧ pcf(t) ≠ W1 ∧ pcf(t) ≠ W2 ∧ pcf(t) ≠ W3 ∧ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n ∧ SF ∈ gs.bq(lsf(t).t) -p n) ∧ pcf(t) ≠ W7 ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: ⊦ lstepf(gs, ls, W4, a) = ls; (s) ⊦ W5 ≠ W7; (s) ⊦ pcstepf(gs, ls, W4, a) = W5; (s) ⊦ W5 ≠ W6; (s) ⊦ W4 ≠ W5; (s) ⊦ W3 ≠ W5; (s) ⊦ W2 ≠ W5; (s) ⊦ W1 ≠ W5; (s) ⊦ R4 ≠ W5; (s) ⊦ R3 ≠ W5; (s) ⊦ R2 ≠ W5; (s) ⊦ R1 ≠ W5; (s) ⊦ W5 ≠ crashed; (s) ⊦ W5 ≠ ready; (s) ⊦ W5 ≠ idle; (s) ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], n < # gs.bq(t), n0 < # gs.bq(t), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = t ∧ pcf(t) ≠ idle ∧ pcf(t) ≠ ready ∧ pcf(t) ≠ crashed ∧ pcf(t) ≠ R1 ∧ pcf(t) ≠ R2 ∧ pcf(t) ≠ R3 ∧ pcf(t) ≠ R4 ∧ pcf(t) ≠ W1 ∧ pcf(t) ≠ W2 ∧ pcf(t) ≠ W3 ∧ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n ∧ SF ∈ gs.bq(lsf(t).t) -p n) ∧ pcf(t) ≠ W7 ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], n0 < # gs.bq(t), n < # gs.bq(t), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ lsf(t).t = t ∧ pcf(t) ≠ idle ∧ pcf(t) ≠ ready ∧ pcf(t) ≠ crashed ∧ pcf(t) ≠ R1 ∧ pcf(t) ≠ R2 ∧ pcf(t) ≠ R3 ∧ pcf(t) ≠ R4 ∧ pcf(t) ≠ W1 ∧ pcf(t) ≠ W2 ∧ pcf(t) ≠ W3 ∧ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n ∧ SF ∈ gs.bq(lsf(t).t) -p n) ∧ pcf(t) ≠ W7 ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used terms: t
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], n0 < # gs.bq(t), n < # gs.bq(t), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo) ⊦ lsf(t).t = t ∧ pcf(t) ≠ idle ∧ pcf(t) ≠ ready ∧ pcf(t) ≠ crashed ∧ pcf(t) ≠ R1 ∧ pcf(t) ≠ R2 ∧ pcf(t) ≠ R3 ∧ pcf(t) ≠ R4 ∧ pcf(t) ≠ W1 ∧ pcf(t) ≠ W2 ∧ pcf(t) ≠ W3 ∧ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(lsf(t).t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(lsf(t).t) -p n ∧ SF ∈ gs.bq(lsf(t).t) -p n) ∧ pcf(t) ≠ W7 ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n0 < # gs.bq(t), n < # gs.bq(t), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: labs-def: ⊦ labs(gs, ls, pc, ags, als, apc) ↔ ls.t = als.t ∧ (pc = idle → apc = idle) ∧ (pc = ready → apc = ready) ∧ (pc = crashed → apc = crashed) ∧ (pc = R1 → apc = R1) ∧ (pc = R2 → apc = R2) ∧ (pc = R3 → apc = R3) ∧ (pc = R4 → apc = R4) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.loc = als.l) ∧ (pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.val = als.v) ∧ (pc = W1 → apc = W1) ∧ (pc = W2 → apc = (SF ∈ gs.bq(ls.t) ⊃ W1;W2)) ∧ (pc = W3 → apc = W3) ∧ (pc = W4 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;W4)) ∧ ( pc = W5 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;W5))) ∧ ( pc = W6 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3 ;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;(SF ∈ gs.bq(ls.t) ⊃ W5;W6)) )) ∧ (pc = W7 → apc = W7) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.loc = als.l) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.val = als.v); ⊦ isPropFO(n, l, bel) → (SF ∈ bel -p n ↔ SF ∈ bel); (s) ⊦ W4 ≠ idle; (s) ⊦ W4 ≠ ready; (s) ⊦ W4 ≠ crashed; (s) ⊦ R1 ≠ W4; (s) ⊦ R2 ≠ W4; (s) ⊦ R3 ≠ W4; (s) ⊦ R4 ≠ W4; (s) ⊦ W1 ≠ W4; (s) ⊦ W2 ≠ W4; (s) ⊦ W3 ≠ W4; (s) ⊦ W4 ≠ W5; (s) ⊦ W4 ≠ W6; (s) ⊦ W4 ≠ W7; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n0 < # gs.bq(t), n < # gs.bq(t), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)))
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n < # gs.bq(t), n0 < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used terms: gs, lsf, pcf
| ⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t))) |
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n < # gs.bq(t), n0 < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n0 < # gs.bq(t), n < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n0 < # gs.bq(t), n < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n < # gs.bq(t), n0 < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITLInv(gs, lsf(t), pcf(t)), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used terms: t
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n < # gs.bq(t), n0 < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITLInv(gs, lsf(t), pcf(t)), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t))
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n0 < # gs.bq(t), n < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → notMember(lsf(t).t, gs.freaders), pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W7 → notMember(lsf(t).t, gs.fwriters), pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(lsf(t).t, lsf(t).loc, gs.fwriters), pcf(t) = W1 ∨ pcf(t) = W2 → noPendingW(lsf(t).t, gs.bq, gs.pq), pcf(t) = W3 ∨ pcf(t) = W7 → noPending(lsf(t).t, gs.bq, gs.pq), pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(lsf(t).t, gs.bq(lsf(t).t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W1 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W7 → ¬ SF ∈ gs.bq(lsf(t).t), pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → gs.rfo(lsf(t).t) = [], pcf(t) = W3 → gs.bq(lsf(t).t) = [], pcf(t) = W4 → gs.bq(lsf(t).t) = [] ∨ gs.bq(lsf(t).t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(lsf(t).t) = [] ∨ gs.bq(lsf(t).t) = FO(lsf(t).loc) ' ∨ gs.bq(lsf(t).t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(lsf(t).t) = [] ∨ gs.bq(lsf(t).t) = SF ' ∨ gs.bq(lsf(t).t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(lsf(t).t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.bq(lsf(t).t) ≠ [] ∧ gs.bq(lsf(t).t).head.W? → gs.bq(lsf(t).t).head = W(lsf(t).loc, lsf(t).val), pcf(t) = W1 ∨ pcf(t) = W7 → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t), pcf(t) = W2 → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t) ∨ gs.rfo(lsf(t).t) + SF ' = gs.bq(lsf(t).t), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → noPendingW(lsf(t).t, gs.bq, gs.pq), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → notMember(lsf(t).t, gs.fwriters), pcf(t) = R1 ∨ pcf(t) = R4 → notMember(lsf(t).t, gs.freaders), pcf(t) = R2 ∨ pcf(t) = R3 → oneMember(lsf(t).t, lsf(t).loc, gs.freaders), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → ¬ SF ∈ gs.bq(lsf(t).t), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → notMember(lsf(t).t, gs.fwriters), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → notMember(lsf(t).t, gs.freaders), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → noPendingW(lsf(t).t, gs.bq, gs.pq), pcf(t) = idle ∨ pcf(t) = crashed → noPending(lsf(t).t, gs.bq, gs.pq), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → ¬ SF ∈ gs.bq(lsf(t).t), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used terms: gs, lsf(t), pcf(t)
| ⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t)) |
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ W7, pcf(t) ≠ W3, pcf(t) ≠ W2, pcf(t) ≠ W1, pcf(t) ≠ R4, pcf(t) ≠ R3, pcf(t) ≠ R2, pcf(t) ≠ R1, pcf(t) ≠ crashed, pcf(t) ≠ ready, pcf(t) ≠ idle, n0 < # gs.bq(t), n < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → notMember(lsf(t).t, gs.freaders), pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W7 → notMember(lsf(t).t, gs.fwriters), pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(lsf(t).t, lsf(t).loc, gs.fwriters), pcf(t) = W1 ∨ pcf(t) = W2 → noPendingW(lsf(t).t, gs.bq, gs.pq), pcf(t) = W3 ∨ pcf(t) = W7 → noPending(lsf(t).t, gs.bq, gs.pq), pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(lsf(t).t, gs.bq(lsf(t).t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W1 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W7 → ¬ SF ∈ gs.bq(lsf(t).t), pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → gs.rfo(lsf(t).t) = [], pcf(t) = W3 → gs.bq(lsf(t).t) = [], pcf(t) = W4 → gs.bq(lsf(t).t) = [] ∨ gs.bq(lsf(t).t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(lsf(t).t) = [] ∨ gs.bq(lsf(t).t) = FO(lsf(t).loc) ' ∨ gs.bq(lsf(t).t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(lsf(t).t) = [] ∨ gs.bq(lsf(t).t) = SF ' ∨ gs.bq(lsf(t).t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(lsf(t).t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.bq(lsf(t).t) ≠ [] ∧ gs.bq(lsf(t).t).head.W? → gs.bq(lsf(t).t).head = W(lsf(t).loc, lsf(t).val), pcf(t) = W1 ∨ pcf(t) = W7 → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t), pcf(t) = W2 → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t) ∨ gs.rfo(lsf(t).t) + SF ' = gs.bq(lsf(t).t), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → noPendingW(lsf(t).t, gs.bq, gs.pq), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → notMember(lsf(t).t, gs.fwriters), pcf(t) = R1 ∨ pcf(t) = R4 → notMember(lsf(t).t, gs.freaders), pcf(t) = R2 ∨ pcf(t) = R3 → oneMember(lsf(t).t, lsf(t).loc, gs.freaders), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → ¬ SF ∈ gs.bq(lsf(t).t), pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → notMember(lsf(t).t, gs.fwriters), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → notMember(lsf(t).t, gs.freaders), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → noPendingW(lsf(t).t, gs.bq, gs.pq), pcf(t) = idle ∨ pcf(t) = crashed → noPending(lsf(t).t, gs.bq, gs.pq), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → ¬ SF ∈ gs.bq(lsf(t).t), pcf(t) = idle ∨ pcf(t) = ready ∨ pcf(t) = crashed → gs.rfo(lsf(t).t) = gs.bq(lsf(t).t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, n0 < # gs.bq(t), n < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.bq(t).head.W? → gs.bq(t).head = W(lsf(t).loc, lsf(t).val), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, n0 < # gs.bq(t), n < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.bq(t).head.W? → gs.bq(t).head = W(lsf(t).loc, lsf(t).val), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = head + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, n < # gs.bq(t), n0 < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: gs.bq(t), head, bel
| gs.bq(t) = head + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, gs.bq(t) ≠ [], pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, n < # gs.bq(t), n0 < # gs.bq(t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) ∧ FO(lsf(t).loc) ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ gs.bq(t), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ gs.bq(t)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (head ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, head ' + bel), isPropFO(n, alsf(t).l, head ' + bel), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, head ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → head ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → head ' + bel = FO(lsf(t).loc) ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(t).loc) ' + SF ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n ∧ (SF = head ∨ SF ∈ bel)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ m + 1 ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| gs.bq(t) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (head ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, head ' + bel), isPropFO(n, alsf(t).l, head ' + bel), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, head ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → head ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → head ' + bel = FO(lsf(t).loc) ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(t).loc) ' + SF ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n ∧ (SF = head ∨ SF ∈ bel)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, head = W(l, v), t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (head ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, head ' + bel), isPropFO(n0, alsf(t).l, head ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), pcf(t) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(t).loc) ' + SF ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → head ' + bel = FO(lsf(t).loc) ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → head ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, head ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 ∨ pcf(t) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n ∧ (SF = head ∨ SF ∈ bel)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
gs.bq(t) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, head = FO(l), t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (head ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, head ' + bel), isPropFO(n0, alsf(t).l, head ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), pcf(t) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(t).loc) ' + SF ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → head ' + bel = FO(lsf(t).loc) ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → head ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, head ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 ∨ pcf(t) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n ∧ (SF = head ∨ SF ∈ bel)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: Bevent freely generated by SF, W, FO;; ⊦ ¬ isPropFO(n, l, SF ' + bel); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(t) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, head = W(l, v), t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (head ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, head ' + bel), isPropFO(n0, alsf(t).l, head ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), pcf(t) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(t).loc) ' + SF ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → head ' + bel = FO(lsf(t).loc) ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → head ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, head ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 ∨ pcf(t) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n ∧ (SF = head ∨ SF ∈ bel)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = W(l, v) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(l, v) ∈ gs.bq(t), n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → W(l, v) = W(lsf(t).loc, lsf(t).val), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ W(l, v) ≠ SF; (s) ⊦ W(l, v).W?; (s) ⊦ W(l, v) ≠ FO(l0); (s)
| gs.bq(t) = W(l, v) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(l, v) ∈ gs.bq(t), n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → W(l, v) = W(lsf(t).loc, lsf(t).val), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = W(l, v) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (W(l, v) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, W(l, v) ' + bel), isPropFO(n0, alsf(t).l, W(l, v) ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(l, v) ∈ W(l, v) ' + bel, n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → W(l, v) = W(lsf(t).loc, lsf(t).val), pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → W(l, v) ' + bel = SF ' ∨ W(l, v) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ W(l, v) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → W(l, v) ' + bel = FO(lsf(t).loc) ' ∨ W(l, v) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → W(l, v) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, W(l, v) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (W(l, v) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (W(l, v) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (W(l, v) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (W(l, v) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
| gs.bq(t) = W(l, v) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (W(l, v) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, W(l, v) ' + bel), isPropFO(n0, alsf(t).l, W(l, v) ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(l, v) ∈ W(l, v) ' + bel, n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → W(l, v) = W(lsf(t).loc, lsf(t).val), pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ FO(lsf(t).loc) ∈ bel, pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → W(l, v) ' + bel = SF ' ∨ W(l, v) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ W(l, v) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → W(l, v) ' + bel = FO(lsf(t).loc) ' ∨ W(l, v) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → W(l, v) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, W(l, v) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ W(l, v) ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (W(l, v) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (W(l, v) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (W(l, v) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (W(l, v) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
Used simplifier rules: FLITPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;; ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(l, v) = W(l0, v0) ↔ l = l0 ∧ v = v0; (ws) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws)
| gs.bq(t) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, head = FO(l), t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (head ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, head ' + bel), isPropFO(n0, alsf(t).l, head ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → head.W? → head = W(lsf(t).loc, lsf(t).val), pcf(t) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(t).loc) ' + SF ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → head ' + bel = FO(lsf(t).loc) ' ∨ head ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → head ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, head ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W5 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W6 → W(lsf(t).loc, lsf(t).val) ≠ head ∧ ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (FO(lsf(t).loc) = head ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 ∨ pcf(t) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (head ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (head ' + bel) -p n ∧ (SF = head ∨ SF ∈ bel)) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ gs.bq(t), n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ FO(l) ≠ SF; (s) ⊦ ¬ FO(l).W?; (s) ⊦ W(l, v) ≠ FO(l0); (s) ⊦ FO(l) = FO(l0) ↔ l = l0; (s)
| gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ gs.bq(t), n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, gs.bq(t), gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → gs.bq(t) = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → gs.bq(t) = FO(lsf(t).loc) ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → gs.bq(t) = SF ' ∨ gs.bq(t) = FO(lsf(t).loc) ' + SF ' ∨ gs.bq(t) = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ gs.bq(t) -p n ∧ ¬ FO(lsf(t).loc) ∈ gs.bq(t) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, FO(l) ' + bel), isPropFO(n0, alsf(t).l, FO(l) ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ FO(l) ' + bel, n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → FO(l) ' + bel = SF ' ∨ FO(l) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → FO(l) ' + bel = FO(lsf(t).loc) ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, FO(l) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
| gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(t).l, FO(l) ' + bel), isPropFO(n0, alsf(t).l, FO(l) ' + bel), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ FO(l) ' + bel, n ≤ # bel, n0 ≤ # bel, pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → FO(l) ' + bel = SF ' ∨ FO(l) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W5 → FO(l) ' + bel = FO(lsf(t).loc) ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W4 → FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, FO(l) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W5, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, FO(l) ' + bel), isPropFO(n, alsf(t).l, FO(l) ' + bel), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ FO(l) ' + bel, n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, FO(l) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → FO(l) ' + bel = FO(lsf(t).loc) ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → FO(l) ' + bel = SF ' ∨ FO(l) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, FO(l) ' + bel), isPropFO(n, alsf(t).l, FO(l) ' + bel), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ FO(l) ' + bel, n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, FO(l) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → FO(l) ' + bel = FO(lsf(t).loc) ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → FO(l) ' + bel = SF ' ∨ FO(l) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v)
Used simplifier rules: FLITPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;; ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ W(l, v) ≠ FO(l0); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W5, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, FO(l) ' + bel), isPropFO(n, alsf(t).l, FO(l) ' + bel), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ FO(l) ' + bel, n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, FO(l) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → FO(l) ' + bel = FO(lsf(t).loc) ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → FO(l) ' + bel = SF ' ∨ FO(l) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = FO(alsf(t).l) ', gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W5, t = alsf(t).t, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, gs.bq(t), gs.pq(alsf(t).l), alsf(t).l), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), notMember(t, gs.freaders), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ W(alsf(t).l, alsf(t).v) ∈ bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), alsf(t).l = l ∨ FO(alsf(t).l) ∈ bel ⊦ ¬ W(alsf(t).l, alsf(t).v) ∈ gs.bq(t) ∧ ¬ FO(alsf(t).l) ∈ gs.bq(t) -p n
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' ≠ []; (s) ⊦ x = y + x ↔ y = []; (s) ⊦ W5 ≠ W6; (s) ⊦ isPropFO(n, l, bel) → (W(l, v) ∈ bel -p n ↔ W(l, v) ∈ bel); (s) ⊦ W4 ≠ W5; (s) ⊦ W(l, v) ≠ FO(l0); (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list eq-05: ⊦ x = a ' + y ∧ x = a0 ' + z → a = a0 ∧ y = z; (forward) from specification list ⊦ [] -p n = []; (s) ⊦ W5 ≠ idle; (s) ⊦ W5 ≠ ready; (s) ⊦ W5 ≠ crashed; (s) ⊦ R1 ≠ W5; (s) ⊦ R2 ≠ W5; (s) ⊦ R3 ≠ W5; (s) ⊦ R4 ≠ W5; (s) ⊦ W1 ≠ W5; (s) ⊦ W2 ≠ W5; (s) ⊦ W3 ≠ W5; (s) ⊦ W5 ≠ W7; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| gs.bq(t) = FO(alsf(t).l) ', gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W5, t = alsf(t).t, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, gs.bq(t), gs.pq(alsf(t).l), alsf(t).l), isPropFO(n, alsf(t).l, gs.bq(t)), isPropFO(n0, alsf(t).l, gs.bq(t)), notMember(t, gs.freaders), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ W(alsf(t).l, alsf(t).v) ∈ bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), alsf(t).l = l ∨ FO(alsf(t).l) ∈ bel ⊦ ¬ W(alsf(t).l, alsf(t).v) ∈ gs.bq(t) ∧ ¬ FO(alsf(t).l) ∈ gs.bq(t) -p n |
Used simplifier rules: ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ FO(l) = FO(l0) ↔ l = l0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ W(l, v) ≠ FO(l0); (s) ⊦ # [] = 0; (s) ⊦ m ≤ 0 ↔ m = 0; (s) ⊦ a ' -p 0 = []; (s) ⊦ ¬ a ∈ []; (s)
| gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = t, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, pcf(t) ≠ idle, pcf(t) ≠ ready, pcf(t) ≠ crashed, pcf(t) ≠ R1, pcf(t) ≠ R2, pcf(t) ≠ R3, pcf(t) ≠ R4, pcf(t) ≠ W1, pcf(t) ≠ W2, pcf(t) ≠ W3, pcf(t) ≠ W7, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)) .rfo:= gs.rfo(t := (als.l = alsf(t).l ⊃ gs.rfo(t);gs.rfo(t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(t).l, FO(l) ' + bel), isPropFO(n, alsf(t).l, FO(l) ' + bel), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ FO(l) ' + bel, n0 ≤ # bel, n ≤ # bel, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → notMember(t, gs.freaders), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → oneMember(t, lsf(t).loc, gs.fwriters), pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → gs.rfo(t) = [], pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v, pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l, pcf(t) = W5 ∨ pcf(t) = W6 → FOFollowsW(t, FO(l) ' + bel, gs.pq(lsf(t).loc), lsf(t).loc), pcf(t) = W4 → FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ', pcf(t) = W5 → FO(l) ' + bel = FO(lsf(t).loc) ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ', pcf(t) = W6 → FO(l) ' + bel = SF ' ∨ FO(l) ' + bel = FO(lsf(t).loc) ' + SF ' ∨ FO(l) ' + bel = W(lsf(t).loc, lsf(t).val) ' + FO(lsf(t).loc) ' + SF ', pcf(t) = W4 ∨ pcf(t) = W5 → ¬ SF ∈ bel, pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel ∧ (lsf(t).loc = l ∨ FO(lsf(t).loc) ∈ bel), pcf(t) = W4 → ¬ W(lsf(t).loc, lsf(t).val) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ pcf(t) ≠ W4 ∧ (pcf(t) = W5 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n) ∧ (pcf(t) = W6 → ¬ W(lsf(t).loc, lsf(t).val) ∈ (FO(l) ' + bel) -p n ∧ ¬ FO(lsf(t).loc) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W5 ∨ pcf(t) = W6 → lsf(t).val = alsf(t).v) |
gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, gs.bq(t) ≠ W(alsf(t).l, alsf(t).v) ' + FO(alsf(t).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, gs.bq(t), gs.pq(alsf(t).l), alsf(t).l), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), notMember(t, gs.freaders), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ W(alsf(t).l, alsf(t).v) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), alsf(t).l = l ∨ FO(alsf(t).l) ∈ bel, gs.bq(t) = FO(alsf(t).l) ' + SF ' ∨ gs.bq(t) = SF ' ⊦ ¬ W(alsf(t).l, alsf(t).v) ∈ gs.bq(t) ∧ ¬ FO(alsf(t).l) ∈ gs.bq(t) -p n ∧ SF ∈ bel
Used simplifier rules: ⊦ isPropFO(n, l, bel) → (W(l, v) ∈ bel -p n ↔ W(l, v) ∈ bel); (s) ⊦ W4 ≠ W6; (s) ⊦ W(l, v) ≠ FO(l0); (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list eq-05: ⊦ x = a ' + y ∧ x = a0 ' + z → a = a0 ∧ y = z; (forward) from specification list ⊦ W5 ≠ W6; (s) ⊦ [] -p n = []; (s) ⊦ W6 ≠ idle; (s) ⊦ W6 ≠ ready; (s) ⊦ W6 ≠ crashed; (s) ⊦ R1 ≠ W6; (s) ⊦ R2 ≠ W6; (s) ⊦ R3 ≠ W6; (s) ⊦ R4 ≠ W6; (s) ⊦ W1 ≠ W6; (s) ⊦ W2 ≠ W6; (s) ⊦ W3 ≠ W6; (s) ⊦ W6 ≠ W7; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| gs.bq(t) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, gs.bq(t) ≠ W(alsf(t).l, alsf(t).v) ' + FO(alsf(t).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := gs.bq(t) -p n)).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, gs.bq(t), gs.pq(alsf(t).l), alsf(t).l), isPropFO(n0, alsf(t).l, gs.bq(t)), isPropFO(n, alsf(t).l, gs.bq(t)), notMember(t, gs.freaders), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ W(alsf(t).l, alsf(t).v) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), alsf(t).l = l ∨ FO(alsf(t).l) ∈ bel, gs.bq(t) = FO(alsf(t).l) ' + SF ' ∨ gs.bq(t) = SF ' ⊦ ¬ W(alsf(t).l, alsf(t).v) ∈ gs.bq(t) ∧ ¬ FO(alsf(t).l) ∈ gs.bq(t) -p n ∧ SF ∈ bel |
ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, FO(l) ' + bel ≠ W(alsf(t).l, alsf(t).v) ' + FO(alsf(t).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, FO(l) ' + bel, gs.pq(alsf(t).l), alsf(t).l), isPropFO(n, alsf(t).l, FO(l) ' + bel), isPropFO(n0, alsf(t).l, FO(l) ' + bel), notMember(t, gs.freaders), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ W(alsf(t).l, alsf(t).v) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), FO(l) ' + bel = FO(alsf(t).l) ' + SF ' ∨ FO(l) ' + bel = SF ', alsf(t).l = l ∨ FO(alsf(t).l) ∈ bel ⊦ ¬ W(alsf(t).l, alsf(t).v) ∈ FO(l) ' + bel ∧ ¬ FO(alsf(t).l) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel
| ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, FO(l) ' + bel ≠ W(alsf(t).l, alsf(t).v) ' + FO(alsf(t).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(l) ' + bel) -p n)).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, FO(l) ' + bel, gs.pq(alsf(t).l), alsf(t).l), isPropFO(n, alsf(t).l, FO(l) ' + bel), isPropFO(n0, alsf(t).l, FO(l) ' + bel), notMember(t, gs.freaders), oneMember(t, alsf(t).l, gs.fwriters), oneMember(t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ W(alsf(t).l, alsf(t).v) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), FO(l) ' + bel = FO(alsf(t).l) ' + SF ' ∨ FO(l) ' + bel = SF ', alsf(t).l = l ∨ FO(alsf(t).l) ∈ bel ⊦ ¬ W(alsf(t).l, alsf(t).v) ∈ FO(l) ' + bel ∧ ¬ FO(alsf(t).l) ∈ (FO(l) ' + bel) -p n ∧ SF ∈ bel |
ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(alsf(t).l) ' -p n) + SF ')).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, FO(alsf(t).l) ' + SF ', gs.pq(alsf(t).l), alsf(t).l), isPropFO(n0, alsf(t).l, FO(alsf(t).l) ' + SF '), isPropFO(n, alsf(t).l, FO(alsf(t).l) ' + SF '), notMember(t, gs.freaders), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(alsf(t).l) ∈ FO(alsf(t).l) ' -p n, n0 ≤ 1, n ≤ 1, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: ⊦ a ∈ a0 ' ↔ a = a0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ FO(l) ≠ SF; (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ isPropFO(n, l, bel + SF ') → (bel + SF ') -p n = (bel -p n) + SF '; (s) ⊦ W(l, v) ≠ SF; (s) ⊦ # a ' = 0 +1; (s) ⊦ a ' ≠ []; (s) ⊦ a ' = x + a0 ' ↔ a = a0 ∧ x = []; (ws) ⊦ # y = # y0 → (x + y = z + y0 ↔ x = z ∧ y = y0); (ws) ⊦ FO(l) = FO(l0) ↔ l = l0; (s) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ W(l, v) ≠ FO(l0); (s) ⊦ ¬ a ∈ x → (a ∈ a0 ' + x ↔ a = a0); (s)
| ags.ctr = gs.fctr, lsf(t).loc = alsf(t).l, ags.mem = gs.pmem, gs.rfo(t) = [], lsf(t).t = t, lsf(t).val = alsf(t).v, ags.writers = gs.fwriters, apcf(t) = W4, pcf(t) = W6, t = alsf(t).t, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(t).l := gs.pq(alsf(t).l) + FO(t) ')).bq:= gs.bq(t := (FO(alsf(t).l) ' -p n) + SF ')).rfo:= gs.rfo(t := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(t, FO(alsf(t).l) ' + SF ', gs.pq(alsf(t).l), alsf(t).l), isPropFO(n0, alsf(t).l, FO(alsf(t).l) ' + SF '), isPropFO(n, alsf(t).l, FO(alsf(t).l) ' + SF '), notMember(t, gs.freaders), oneMember(t, als.l, gs.fwriters), oneMember(t, alsf(t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(alsf(t).l) ∈ FO(alsf(t).l) ' -p n, n0 ≤ 1, n ≤ 1, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
Used simplifier rules: Nat freely generated by 0, +1;; ⊦ m ≠ 0 → (m + n ≤ 1 ↔ m = 1 ∧ n = 0); (ws) ⊦ m +1 = m + 1; (s) ⊦ ¬ isPropFO(n + 1, l, FO(l) ' + bel); (s) a: ⊦ (x + y) + z = x + y + z; from specification list a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ a ' -p 0 = []; (s) ⊦ ¬ a ∈ []; (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).t ∧ (pcf(t) = idle → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = idle) ∧ (pcf(t) = ready → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = ready) ∧ (pcf(t) = crashed → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = crashed) ∧ (pcf(t) = R1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R1) ∧ (pcf(t) = R2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R2) ∧ (pcf(t) = R3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R3) ∧ (pcf(t) = R4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) ∧ (pcf(t) = W1 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W1) ∧ ( pcf(t) = W2 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W3) ∧ ( pcf(t) = W4 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));apcf(t)) = W7) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).l) ∧ ( pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, alsf(t).l));alsf(t)).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = alsf(t).t ∧ (pcf(t) = idle → apcf(t) = idle) ∧ (pcf(t) = ready → apcf(t) = ready) ∧ (pcf(t) = crashed → apcf(t) = crashed) ∧ (pcf(t) = R1 → apcf(t) = R1) ∧ (pcf(t) = R2 → apcf(t) = R2) ∧ (pcf(t) = R3 → apcf(t) = R3) ∧ (pcf(t) = R4 → apcf(t) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v) ∧ (pcf(t) = W1 → apcf(t) = W1) ∧ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → apcf(t) = W3) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → apcf(t) = W7) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = alsf(t).t ∧ (pcf(t) = idle → apcf(t) = idle) ∧ (pcf(t) = ready → apcf(t) = ready) ∧ (pcf(t) = crashed → apcf(t) = crashed) ∧ (pcf(t) = R1 → apcf(t) = R1) ∧ (pcf(t) = R2 → apcf(t) = R2) ∧ (pcf(t) = R3 → apcf(t) = R3) ∧ (pcf(t) = R4 → apcf(t) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v) ∧ (pcf(t) = W1 → apcf(t) = W1) ∧ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → apcf(t) = W3) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → apcf(t) = W7) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = alsf(t).t ∧ (pcf(t) = idle → apcf(t) = idle) ∧ (pcf(t) = ready → apcf(t) = ready) ∧ (pcf(t) = crashed → apcf(t) = crashed) ∧ (pcf(t) = R1 → apcf(t) = R1) ∧ (pcf(t) = R2 → apcf(t) = R2) ∧ (pcf(t) = R3 → apcf(t) = R3) ∧ (pcf(t) = R4 → apcf(t) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v) ∧ (pcf(t) = W1 → apcf(t) = W1) ∧ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → apcf(t) = W3) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → apcf(t) = W7) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v)
Used terms: t
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ lsf(t).t = alsf(t).t ∧ (pcf(t) = idle → apcf(t) = idle) ∧ (pcf(t) = ready → apcf(t) = ready) ∧ (pcf(t) = crashed → apcf(t) = crashed) ∧ (pcf(t) = R1 → apcf(t) = R1) ∧ (pcf(t) = R2 → apcf(t) = R2) ∧ (pcf(t) = R3 → apcf(t) = R3) ∧ (pcf(t) = R4 → apcf(t) = R4) ∧ (pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v) ∧ (pcf(t) = W1 → apcf(t) = W1) ∧ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W3 → apcf(t) = W3) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = lsf(t).t ⊃ gs.bq(lsf(t).t) -p n;gs.bq(lsf(t).t)) ⊃ W5;W6) ) )) ∧ (pcf(t) = W7 → apcf(t) = W7) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l) ∧ (pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = alsf(t).t, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = idle → apcf(t) = idle, pcf(t) = ready → apcf(t) = ready, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = R1 → apcf(t) = R1, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = W1 → apcf(t) = W1, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W7 → apcf(t) = W7, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W5;W6) ) ))
Used simplifier rules: labs-def: ⊦ labs(gs, ls, pc, ags, als, apc) ↔ ls.t = als.t ∧ (pc = idle → apc = idle) ∧ (pc = ready → apc = ready) ∧ (pc = crashed → apc = crashed) ∧ (pc = R1 → apc = R1) ∧ (pc = R2 → apc = R2) ∧ (pc = R3 → apc = R3) ∧ (pc = R4 → apc = R4) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.loc = als.l) ∧ (pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.val = als.v) ∧ (pc = W1 → apc = W1) ∧ (pc = W2 → apc = (SF ∈ gs.bq(ls.t) ⊃ W1;W2)) ∧ (pc = W3 → apc = W3) ∧ (pc = W4 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;W4)) ∧ ( pc = W5 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;W5))) ∧ ( pc = W6 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3 ;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;(SF ∈ gs.bq(ls.t) ⊃ W5;W6)) )) ∧ (pc = W7 → apc = W7) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.loc = als.l) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.val = als.v);
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = alsf(t).t, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = idle → apcf(t) = idle, pcf(t) = ready → apcf(t) = ready, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = R1 → apcf(t) = R1, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = W1 → apcf(t) = W1, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W7 → apcf(t) = W7, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W5;W6) ) )) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = alsf(t).t, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, tid0 = alsf(t).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W7 → apcf(t) = W7, pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W1 → apcf(t) = W1, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R1 → apcf(t) = R1, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = ready → apcf(t) = ready, pcf(t) = idle → apcf(t) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W5;W6) ) ))
Used formulas: tid0 = alsf(t).t
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = alsf(t).t, ags.writers = gs.fwriters, apcf(tid0) = W4, tid0 = alsf(tid0).t, tid0 = alsf(t).t, gs.bq(tid0) ≠ [], tid0 ≠ t, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = alsf(tid0).l ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W7 → apcf(t) = W7, pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W1 → apcf(t) = W1, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R1 → apcf(t) = R1, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = ready → apcf(t) = ready, pcf(t) = idle → apcf(t) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (pcf(t) = W2 → apcf(t) = (SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W1;W2)) ∧ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3;W4)) ∧ ( pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4;W5) )) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W3 ;(FO(lsf(t).loc) ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W4 ;(SF ∈ (tid0 = alsf(t).t ⊃ gs.bq(alsf(t).t) -p n;gs.bq(alsf(t).t)) ⊃ W5;W6) ) )) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = alsf(t).t, alsf(t).t = alsf(alsf(t).t).t, ags.writers = gs.fwriters, apcf(alsf(t).t) = W4, gs.bq(alsf(t).t) ≠ [], alsf(t).t ≠ t, n0 < # gs.bq(alsf(t).t), n < # gs.bq(alsf(t).t), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(alsf(t).t).l := gs.pq(alsf(alsf(t).t).l) + FO(alsf(t).t) ')).bq:= gs.bq(alsf(t).t := gs.bq(alsf(t).t) -p n)) .rfo:= gs.rfo(alsf(t).t := (als.l = alsf(alsf(t).t).l ⊃ gs.rfo(alsf(t).t);gs.rfo(alsf(t).t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), isPropFO(n, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), oneMember(alsf(t).t, alsf(alsf(t).t).l, gs.fwriters), oneMember(alsf(t).t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W7 → apcf(t) = W7, pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W1 → apcf(t) = W1, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R1 → apcf(t) = R1, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = ready → apcf(t) = ready, pcf(t) = idle → apcf(t) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;W4)) ∧ (pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;W5))) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))))
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ isPropFO(n, l, bel) → (SF ∈ bel -p n ↔ SF ∈ bel); (s)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(t).t = alsf(t).t, alsf(t).t = alsf(alsf(t).t).t, ags.writers = gs.fwriters, apcf(alsf(t).t) = W4, gs.bq(alsf(t).t) ≠ [], alsf(t).t ≠ t, n0 < # gs.bq(alsf(t).t), n < # gs.bq(alsf(t).t), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(alsf(alsf(t).t).l := gs.pq(alsf(alsf(t).t).l) + FO(alsf(t).t) ')).bq:= gs.bq(alsf(t).t := gs.bq(alsf(t).t) -p n)) .rfo:= gs.rfo(alsf(t).t := (als.l = alsf(alsf(t).t).l ⊃ gs.rfo(alsf(t).t);gs.rfo(alsf(t).t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), isPropFO(n, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), oneMember(alsf(t).t, alsf(alsf(t).t).l, gs.fwriters), oneMember(alsf(t).t, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W7 → apcf(t) = W7, pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W1 → apcf(t) = W1, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R1 → apcf(t) = R1, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = ready → apcf(t) = ready, pcf(t) = idle → apcf(t) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;W4)) ∧ (pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;W5))) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6)))) |
⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)))
ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(t).t = alsf(alsf(t).t).t, lsf(t).t = alsf(t).t, ags.writers = gs.fwriters, apcf(alsf(t).t) = W4, gs.bq(alsf(t).t) ≠ [], alsf(t).t ≠ t, n < # gs.bq(alsf(t).t), n0 < # gs.bq(alsf(t).t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(alsf(t).t).l := gs.pq(alsf(alsf(t).t).l) + FO(alsf(t).t) ')).bq:= gs.bq(alsf(t).t := gs.bq(alsf(t).t) -p n)) .rfo:= gs.rfo(alsf(t).t := (als.l = alsf(alsf(t).t).l ⊃ gs.rfo(alsf(t).t);gs.rfo(alsf(t).t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), isPropFO(n0, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), oneMember(alsf(t).t, als.l, gs.fwriters), oneMember(alsf(t).t, alsf(alsf(t).t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = idle → apcf(t) = idle, pcf(t) = ready → apcf(t) = ready, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = R1 → apcf(t) = R1, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = W1 → apcf(t) = W1, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W7 → apcf(t) = W7, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;W4)) ∧ (pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;W5))) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))))
Used terms: gs, lsf, pcf
| ⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t))) |
| ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(t).t = alsf(alsf(t).t).t, lsf(t).t = alsf(t).t, ags.writers = gs.fwriters, apcf(alsf(t).t) = W4, gs.bq(alsf(t).t) ≠ [], alsf(t).t ≠ t, n < # gs.bq(alsf(t).t), n0 < # gs.bq(alsf(t).t), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(alsf(alsf(t).t).l := gs.pq(alsf(alsf(t).t).l) + FO(alsf(t).t) ')).bq:= gs.bq(alsf(t).t := gs.bq(alsf(t).t) -p n)) .rfo:= gs.rfo(alsf(t).t := (als.l = alsf(alsf(t).t).l ⊃ gs.rfo(alsf(t).t);gs.rfo(alsf(t).t) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), isPropFO(n0, alsf(alsf(t).t).l, gs.bq(alsf(t).t)), oneMember(alsf(t).t, als.l, gs.fwriters), oneMember(alsf(t).t, alsf(alsf(t).t).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), pcf(t) = idle → apcf(t) = idle, pcf(t) = ready → apcf(t) = ready, pcf(t) = crashed → apcf(t) = crashed, pcf(t) = R1 → apcf(t) = R1, pcf(t) = R2 → apcf(t) = R2, pcf(t) = R3 → apcf(t) = R3, pcf(t) = R4 → apcf(t) = R4, pcf(t) = R1 ∨ pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).loc = alsf(t).l, pcf(t) = R2 ∨ pcf(t) = R3 ∨ pcf(t) = R4 → lsf(t).val = alsf(t).v, pcf(t) = W1 → apcf(t) = W1, pcf(t) = W2 → apcf(t) = (SF ∈ gs.bq(alsf(t).t) ⊃ W1;W2), pcf(t) = W3 → apcf(t) = W3, pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;W4), pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;W5)), pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6))), pcf(t) = W7 → apcf(t) = W7, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).loc = alsf(t).l, pcf(t) = W1 ∨ pcf(t) = W2 ∨ pcf(t) = W3 ∨ pcf(t) = W4 ∨ pcf(t) = W5 ∨ pcf(t) = W6 ∨ pcf(t) = W7 → lsf(t).val = alsf(t).v, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ (pcf(t) = W4 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;W4)) ∧ (pcf(t) = W5 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;W5))) ∧ ( pcf(t) = W6 → apcf(t) = (W(lsf(t).loc, lsf(t).val) ∈ gs.bq(alsf(t).t) -p n ⊃ W3;(FO(lsf(t).loc) ∈ gs.bq(alsf(t).t) -p n ⊃ W4;(SF ∈ gs.bq(alsf(t).t) ⊃ W5;W6)))) |
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic Used terms: t
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)) = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf(tid0 := lstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf(tid0 := pcstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0))) = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).mem = gs.pmem ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).ctr = gs.fctr ∧ reorder (gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).p, gs.pq(l0 := gs.pq(l0) + FO(tid0) '), gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n))) ∧ gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)).writers = gs.fwriters ∧ labs ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf(t), pcf(t), gstepf(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), (tid0 = t ⊃ lstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));alsf(t)), (tid0 = t ⊃ pcstepf(ags, alsf(t), apcf(t), pwbPSC(t, l0));apcf(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), labs(gs, lsf(tid0), pcf(tid0), ags, alsf(tid0), apcf(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used terms: tid0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), labs(gs, lsf(tid0), pcf(tid0), ags, alsf(tid0), apcf(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = alsf(tid0).t, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = idle → apcf(tid0) = idle, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(alsf(tid0).t) ⊃ W1;W2), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;(SF ∈ gs.bq(alsf(tid0).t) ⊃ W5;W6))), pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: labs-def: ⊦ labs(gs, ls, pc, ags, als, apc) ↔ ls.t = als.t ∧ (pc = idle → apc = idle) ∧ (pc = ready → apc = ready) ∧ (pc = crashed → apc = crashed) ∧ (pc = R1 → apc = R1) ∧ (pc = R2 → apc = R2) ∧ (pc = R3 → apc = R3) ∧ (pc = R4 → apc = R4) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.loc = als.l) ∧ (pc = R2 ∨ pc = R3 ∨ pc = R4 → ls.val = als.v) ∧ (pc = W1 → apc = W1) ∧ (pc = W2 → apc = (SF ∈ gs.bq(ls.t) ⊃ W1;W2)) ∧ (pc = W3 → apc = W3) ∧ (pc = W4 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;W4)) ∧ ( pc = W5 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;W5))) ∧ ( pc = W6 → apc = (W(ls.loc, ls.val) ∈ gs.bq(ls.t) ⊃ W3 ;(FO(ls.loc) ∈ gs.bq(ls.t) ⊃ W4;(SF ∈ gs.bq(ls.t) ⊃ W5;W6)) )) ∧ (pc = W7 → apc = W7) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.loc = als.l) ∧ ( pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → ls.val = als.v);
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = alsf(tid0).t, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = idle → apcf(tid0) = idle, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(alsf(tid0).t) ⊃ W1;W2), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;(SF ∈ gs.bq(alsf(tid0).t) ⊃ W5;W6))), pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)))
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = alsf(tid0).t, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;(SF ∈ gs.bq(alsf(tid0).t) ⊃ W5;W6))), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;W4), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(alsf(tid0).t) ⊃ W1;W2), pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = idle → apcf(tid0) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used terms: gs, lsf, pcf
| ⊦ FLITInv(gs, lsf, pcf) ↔ FLITGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t))) |
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = alsf(tid0).t, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;(SF ∈ gs.bq(alsf(tid0).t) ⊃ W5;W6))), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;W4), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(alsf(tid0).t) ⊃ W1;W2), pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = idle → apcf(tid0) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = alsf(tid0).t, lsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = idle → apcf(tid0) = idle, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(alsf(tid0).t) ⊃ W1;W2), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;(SF ∈ gs.bq(alsf(tid0).t) ⊃ W5;W6))), pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used terms: tid0
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = alsf(tid0).t, lsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = idle → apcf(tid0) = idle, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(alsf(tid0).t) ⊃ W1;W2), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(alsf(tid0).t) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(alsf(tid0).t) ⊃ W4;(SF ∈ gs.bq(alsf(tid0).t) ⊃ W5;W6))), pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(tid0) ⊃ W1;W2), pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = idle → apcf(tid0) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
| ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITLInv(gs, lsf(tid0), pcf(tid0)), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(tid0) ⊃ W1;W2), pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = idle → apcf(tid0) = idle, ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t))
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = idle → apcf(tid0) = idle, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(tid0) ⊃ W1;W2), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W1 ∨ pcf(tid0) = W2 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W3 ∨ pcf(tid0) = W7 → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(lsf(tid0).t, gs.bq(lsf(tid0).t), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W1 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W7 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = [], pcf(tid0) = W3 → gs.bq(lsf(tid0).t) = [], pcf(tid0) = W4 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = SF ' ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(lsf(tid0).t) ≠ [] ∧ gs.bq(lsf(tid0).t).head.W? → gs.bq(lsf(tid0).t).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W1 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = W2 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t) ∨ gs.rfo(lsf(tid0).t) + SF ' = gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = R1 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = R2 ∨ pcf(tid0) = R3 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.freaders), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = crashed → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used terms: gs, lsf(tid0), pcf(tid0)
| ⊦ FLITLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.freaders)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.fwriters)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.loc, gs.fwriters)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = W3 ∨ pc = W7 → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = W5 ∨ pc = W6 → FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc)) ∧ (pc = W1 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W7 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → gs.rfo(ls.t) = []) ∧ (pc = W3 → gs.bq(ls.t) = []) ∧ (pc = W4 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ') ∧ (pc = W5 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (pc = W6 → gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = SF ' ∨ gs.bq(ls.t) = FO(ls.loc) ' + SF ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' + SF ') ∧ (pc = W4 ∨ pc = W5 ∨ pc = W6 → gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val)) ∧ (pc = W1 ∨ pc = W7 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = W2 → gs.rfo(ls.t) = gs.bq(ls.t) ∨ gs.rfo(ls.t) + SF ' = gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.fwriters)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.freaders)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.loc, gs.freaders)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → gs.rfo(ls.t) = gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.fwriters)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → notMember(ls.t, gs.freaders)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → noPendingW(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = crashed → noPending(ls.t, gs.bq, gs.pq)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → ¬ SF ∈ gs.bq(ls.t)) ∧ (pc = idle ∨ pc = ready ∨ pc = crashed → gs.rfo(ls.t) = gs.bq(ls.t)) |
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = idle → apcf(tid0) = idle, pcf(tid0) = ready → apcf(tid0) = ready, pcf(tid0) = crashed → apcf(tid0) = crashed, pcf(tid0) = R1 → apcf(tid0) = R1, pcf(tid0) = R2 → apcf(tid0) = R2, pcf(tid0) = R3 → apcf(tid0) = R3, pcf(tid0) = R4 → apcf(tid0) = R4, pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 → apcf(tid0) = W1, pcf(tid0) = W2 → apcf(tid0) = (SF ∈ gs.bq(tid0) ⊃ W1;W2), pcf(tid0) = W3 → apcf(tid0) = W3, pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W7 → apcf(tid0) = W7, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = W1 ∨ pcf(tid0) = W2 ∨ pcf(tid0) = W7 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W1 ∨ pcf(tid0) = W2 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W3 ∨ pcf(tid0) = W7 → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(lsf(tid0).t, gs.bq(lsf(tid0).t), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W1 ∨ pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W7 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = W3 ∨ pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = [], pcf(tid0) = W3 → gs.bq(lsf(tid0).t) = [], pcf(tid0) = W4 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(lsf(tid0).t) = [] ∨ gs.bq(lsf(tid0).t) = SF ' ∨ gs.bq(lsf(tid0).t) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(lsf(tid0).t) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(lsf(tid0).t) ≠ [] ∧ gs.bq(lsf(tid0).t).head.W? → gs.bq(lsf(tid0).t).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W1 ∨ pcf(tid0) = W7 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = W2 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t) ∨ gs.rfo(lsf(tid0).t) + SF ' = gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = R1 ∨ pcf(tid0) = R4 → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = R2 ∨ pcf(tid0) = R3 → oneMember(lsf(tid0).t, lsf(tid0).loc, gs.freaders), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = R1 ∨ pcf(tid0) = R2 ∨ pcf(tid0) = R3 ∨ pcf(tid0) = R4 → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.fwriters), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → notMember(lsf(tid0).t, gs.freaders), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → noPendingW(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = crashed → noPending(lsf(tid0).t, gs.bq, gs.pq), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → ¬ SF ∈ gs.bq(lsf(tid0).t), pcf(tid0) = idle ∨ pcf(tid0) = ready ∨ pcf(tid0) = crashed → gs.rfo(lsf(tid0).t) = gs.bq(lsf(tid0).t), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(tid0).head.W? → gs.bq(tid0).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: ⊦ oneMember(t, l, tsf) → ¬ notMember(t, tsf); (as)
| ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n0 < # gs.bq(tid0), n < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.bq(tid0).head.W? → gs.bq(tid0).head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: gs.bq(tid0), head, bel
| gs.bq(tid0) = head + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, n < # gs.bq(tid0), n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 → ¬ SF ∈ gs.bq(tid0), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → gs.bq(tid0) = SF ' ∨ gs.bq(tid0) = FO(lsf(tid0).loc) ' + SF ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → gs.bq(tid0) = FO(lsf(tid0).loc) ' ∨ gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → gs.bq(tid0) = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, gs.bq(tid0), gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;(SF ∈ gs.bq(tid0) ⊃ W5;W6))), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;(FO(lsf(tid0).loc) ∈ gs.bq(tid0) ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) ∈ gs.bq(tid0) ⊃ W3;W4), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ m + 1 ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used formulas: apcf(tid0) = W4
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: ⊦ W3 ≠ W4; (s) ⊦ W4 ≠ W5; (s) ⊦ W4 ≠ W6; (s) ⊦ pwbPSC(t, l) = pwbPSC(t0, l0) ↔ t = t0 ∧ l = l0; (ws) ⊦ pre(gs, ls, W4, a) ↔ a = pwbPSC(ls.t, ls.l); (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
⊦ FLITPSCInv(gs, lsf, pcf) ↔ FLITPSCGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITPSCLInv(gs, lsf(t), pcf(t)))
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦
Used terms: ags, alsf, apcf
| ⊦ FLITPSCInv(gs, lsf, pcf) ↔ FLITPSCGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITPSCLInv(gs, lsf(t), pcf(t))) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), apcf(tid0)), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used terms: tid0
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), apcf(tid0)), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), W4), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), W4), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦ |
⊦ FLITPSCLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.readers)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.writers)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.l, gs.writers)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.p)) ∧ (pc = W2 ∨ pc = W3 ∨ pc = W6 ∨ pc = W7 → noPending(ls.t, gs.p)) ∧ (pc = W4 ∨ pc = W5 → onePendingW(ls.t, ls.l, gs.p)) ∧ (pc = W5 → FOFollowsW(ls.t, gs.p(ls.l))) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.writers)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.readers)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.l, gs.readers)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.p)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.writers)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.readers)) ∧ (pc = idle ∨ pc = ready → noPendingW(ls.t, gs.p)) ∧ (pc = idle → noPending(ls.t, gs.p))
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), W4 = W1 ∨ W4 = W2 ∨ W4 = W3 ∨ W4 = W4 ∨ W4 = W5 ∨ W4 = W6 ∨ W4 = W7 → notMember(alsf(tid0).t, ags.readers), W4 = W1 ∨ W4 = W2 ∨ W4 = W7 → notMember(alsf(tid0).t, ags.writers), W4 = W3 ∨ W4 = W4 ∨ W4 = W5 ∨ W4 = W6 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.writers), W4 = W1 ∨ W4 = W2 → noPendingW(alsf(tid0).t, ags.p), W4 = W2 ∨ W4 = W3 ∨ W4 = W6 ∨ W4 = W7 → noPending(alsf(tid0).t, ags.p), W4 = W4 ∨ W4 = W5 → onePendingW(alsf(tid0).t, alsf(tid0).l, ags.p), W4 = W5 → FOFollowsW(alsf(tid0).t, ags.p(alsf(tid0).l)), W4 = R1 ∨ W4 = R2 ∨ W4 = R3 ∨ W4 = R4 → notMember(alsf(tid0).t, ags.writers), W4 = R1 ∨ W4 = R4 → notMember(alsf(tid0).t, ags.readers), W4 = R2 ∨ W4 = R3 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.readers), W4 = R1 ∨ W4 = R2 ∨ W4 = R3 ∨ W4 = R4 → noPendingW(alsf(tid0).t, ags.p), W4 = idle ∨ W4 = ready → notMember(alsf(tid0).t, ags.writers), W4 = idle ∨ W4 = ready → notMember(alsf(tid0).t, ags.readers), W4 = idle ∨ W4 = ready → noPendingW(alsf(tid0).t, ags.p), W4 = idle → noPending(alsf(tid0).t, ags.p), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used terms: ags, alsf(tid0), W4
| ⊦ FLITPSCLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.readers)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.writers)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.l, gs.writers)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.p)) ∧ (pc = W2 ∨ pc = W3 ∨ pc = W6 ∨ pc = W7 → noPending(ls.t, gs.p)) ∧ (pc = W4 ∨ pc = W5 → onePendingW(ls.t, ls.l, gs.p)) ∧ (pc = W5 → FOFollowsW(ls.t, gs.p(ls.l))) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.writers)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.readers)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.l, gs.readers)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.p)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.writers)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.readers)) ∧ (pc = idle ∨ pc = ready → noPendingW(ls.t, gs.p)) ∧ (pc = idle → noPending(ls.t, gs.p)) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), W4 = W1 ∨ W4 = W2 ∨ W4 = W3 ∨ W4 = W4 ∨ W4 = W5 ∨ W4 = W6 ∨ W4 = W7 → notMember(alsf(tid0).t, ags.readers), W4 = W1 ∨ W4 = W2 ∨ W4 = W7 → notMember(alsf(tid0).t, ags.writers), W4 = W3 ∨ W4 = W4 ∨ W4 = W5 ∨ W4 = W6 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.writers), W4 = W1 ∨ W4 = W2 → noPendingW(alsf(tid0).t, ags.p), W4 = W2 ∨ W4 = W3 ∨ W4 = W6 ∨ W4 = W7 → noPending(alsf(tid0).t, ags.p), W4 = W4 ∨ W4 = W5 → onePendingW(alsf(tid0).t, alsf(tid0).l, ags.p), W4 = W5 → FOFollowsW(alsf(tid0).t, ags.p(alsf(tid0).l)), W4 = R1 ∨ W4 = R2 ∨ W4 = R3 ∨ W4 = R4 → notMember(alsf(tid0).t, ags.writers), W4 = R1 ∨ W4 = R4 → notMember(alsf(tid0).t, ags.readers), W4 = R2 ∨ W4 = R3 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.readers), W4 = R1 ∨ W4 = R2 ∨ W4 = R3 ∨ W4 = R4 → noPendingW(alsf(tid0).t, ags.p), W4 = idle ∨ W4 = ready → notMember(alsf(tid0).t, ags.writers), W4 = idle ∨ W4 = ready → notMember(alsf(tid0).t, ags.readers), W4 = idle ∨ W4 = ready → noPendingW(alsf(tid0).t, ags.p), W4 = idle → noPending(alsf(tid0).t, ags.p), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: ⊦ W3 ≠ W4; (s) ⊦ W2 ≠ W4; (s) ⊦ W1 ≠ W4; (s) ⊦ W4 ≠ W7; (s) ⊦ W4 ≠ W6; (s) ⊦ W4 ≠ W5; (s) ⊦ R4 ≠ W4; (s) ⊦ R3 ≠ W4; (s) ⊦ R2 ≠ W4; (s) ⊦ R1 ≠ W4; (s) ⊦ W4 ≠ ready; (s) ⊦ W4 ≠ idle; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: FLITPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;; ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = FO(alsf(tid0).l) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: ⊦ ¬ FO(l).W?; (s) ⊦ ¬ a ∈ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ m ≤ 0 ↔ m = 0; (s) ⊦ # [] = 0; (s) ⊦ FO(l) ≠ SF; (s) ⊦ W(l, v) ≠ FO(l0); (s) ⊦ a ' ≠ []; (s) ⊦ a ' = x + a0 ' ↔ a = a0 ∧ x = []; (ws) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) ⊦ W4 ≠ W5; (s) ⊦ W5 ≠ W6; (s) ⊦ [] -p n = []; (s) ⊦ W5 ≠ crashed; (s) ⊦ W5 ≠ ready; (s) ⊦ W5 ≠ idle; (s) ⊦ R4 ≠ W5; (s) ⊦ R3 ≠ W5; (s) ⊦ R2 ≠ W5; (s) ⊦ R1 ≠ W5; (s) ⊦ W3 ≠ W5; (s) ⊦ W5 ≠ W7; (s) ⊦ W2 ≠ W5; (s) ⊦ W1 ≠ W5; (s)
| gs.bq(tid0) = FO(alsf(tid0).l) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l)
gs.bq(tid0) = FO(alsf(tid0).l) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l ⊦
Used terms: tid0, alsf(tid0).l, gs.fwriters
| ⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l) |
| gs.bq(tid0) = FO(alsf(tid0).l) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l ⊦ |
gs.bq(tid0) = FO(alsf(tid0).l) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l ⊦
Used simplifier rules: ⊦ oneMember(t, l, tsf) → (t ∈ tsf(l0) ↔ l = l0); (s)
| gs.bq(tid0) = FO(alsf(tid0).l) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W5, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l ⊦ |
Used terms: alsf(tid0).l
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, l0 ≠ alsf(tid0).l, pcf(tid0) ≠ crashed, pcf(tid0) ≠ ready, pcf(tid0) ≠ idle, pcf(tid0) ≠ R4, pcf(tid0) ≠ R3, pcf(tid0) ≠ R2, pcf(tid0) ≠ R1, pcf(tid0) ≠ W3, pcf(tid0) ≠ W7, pcf(tid0) ≠ W2, pcf(tid0) ≠ W1, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCGInv(ags), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W4 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel, pcf(tid0) = W6 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), pcf(tid0) = W5 → W(lsf(tid0).loc, lsf(tid0).val) ≠ head ∧ ¬ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ∧ (FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, head ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) ≠ head, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ head.W?, ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = SF ' ⊦
Used simplifier rules: ⊦ W5 ≠ W6; (s) ⊦ W4 ≠ W6; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) ⊦ [] -p n = []; (s) ⊦ W6 ≠ crashed; (s) ⊦ W6 ≠ ready; (s) ⊦ W6 ≠ idle; (s) ⊦ R4 ≠ W6; (s) ⊦ R3 ≠ W6; (s) ⊦ R2 ≠ W6; (s) ⊦ R1 ≠ W6; (s) ⊦ W3 ≠ W6; (s) ⊦ W6 ≠ W7; (s) ⊦ W2 ≠ W6; (s) ⊦ W1 ≠ W6; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, head ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) ≠ head, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ head.W?, ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = SF ' ⊦ |
⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l)
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, head ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) ≠ head, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ head.W?, ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l, head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = SF ', FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊦
Used terms: tid0, alsf(tid0).l, gs.fwriters
| ⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, head ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) ≠ head, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ head.W?, ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l, head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = SF ', FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, head ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) ≠ head, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ head.W?, ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l, FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = SF ' ⊦
Used simplifier rules: ⊦ oneMember(t, l, tsf) → (t ∈ tsf(l0) ↔ l = l0); (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W4, pcf(tid0) = W6, head ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) ≠ head, l0 ≠ alsf(tid0).l, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), onePendingW(tid0, alsf(tid0).l, ags.p), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ head.W?, ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l, FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = SF ' ⊦ |
Used terms: alsf(tid0).l
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, alsf(tid0).t = tid0, lsf(tid0).t = tid0, ags.writers = gs.fwriters, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) = W4, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) = W5, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) = W6, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: FLITPC freely generated by R1, R2, R3, R4, W1, W2, W3, W4, W5, W6, W7, crashed, idle, ready ;;
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) = W4, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: ⊦ W4 ≠ W6; (s) ⊦ W4 ≠ W5; (s) ⊦ doWritePSC(t, l, v) ≠ pwbPSC(t0, l0); (s) ⊦ pre(gs, ls, W3, a) ↔ a = doWritePSC(ls.t, ls.l, ls.v); (s) ⊦ ¬ a ∈ []; (s) ⊦ m ≤ 0 ↔ m = 0; (s) ⊦ # [] = 0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ [] -p n = []; (s) ⊦ W3 ≠ W4; (s) ⊦ W1 ≠ W4; (s) ⊦ W2 ≠ W4; (s) ⊦ W4 ≠ W7; (s) ⊦ W3 ≠ W4; (s) ⊦ R1 ≠ W4; (s) ⊦ R2 ≠ W4; (s) ⊦ R3 ≠ W4; (s) ⊦ R4 ≠ W4; (s) ⊦ W4 ≠ idle; (s) ⊦ W4 ≠ ready; (s) ⊦ W4 ≠ crashed; (s) ⊦ W(l, v) ≠ SF; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(0, l0, gs.bq(tid0)), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l))
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[0] = FO(l0), apcf(tid0) = W3, pcf(tid0) = W4, 0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ m. m < 0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ l0) ⊦
Used terms: 0, l0, gs.bq(tid0)
| ⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l)) |
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[0] = FO(l0), apcf(tid0) = W3, pcf(tid0) = W4, 0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ m. m < 0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ l0) ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', ags.ctr = gs.fctr, gs.bq(tid0).head = FO(l0), lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W4, gs.bq(tid0) ≠ [], FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: ⊦ ¬ n < 0; (s) ⊦ x ≠ [] → x[0] = x.head; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ 0 < m ↔ m ≠ 0; (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', ags.ctr = gs.fctr, gs.bq(tid0).head = FO(l0), lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W4, gs.bq(tid0) ≠ [], FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', gs.bq(tid0) = head + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = FO(l0), pcf(tid0) = W4, gs.bq(tid0) ≠ [], FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: gs.bq(tid0), head, bel
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', gs.bq(tid0) = head + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = FO(l0), pcf(tid0) = W4, gs.bq(tid0) ≠ [], FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', gs.bq(tid0) = FO(l0) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W4, gs.bq(tid0) ≠ [], FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l0) ∈ gs.bq(tid0), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ', gs.bq(tid0) = FO(l0) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W4, gs.bq(tid0) ≠ [], FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p 0)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l0) ∈ gs.bq(tid0), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
Used simplifier rules: ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ W(l, v) ≠ FO(l0); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) = W5, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = (W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊃ W3;(FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊃ W4;W5)), pcf(tid0) = W5, SF ≠ head, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used simplifier rules: ⊦ W4 ≠ W5; (s) ⊦ W5 ≠ W6; (s) ⊦ [] -p n = []; (s) ⊦ W1 ≠ W5; (s) ⊦ W2 ≠ W5; (s) ⊦ W5 ≠ W7; (s) ⊦ W3 ≠ W5; (s) ⊦ R1 ≠ W5; (s) ⊦ R2 ≠ W5; (s) ⊦ R3 ≠ W5; (s) ⊦ R4 ≠ W5; (s) ⊦ W5 ≠ idle; (s) ⊦ W5 ≠ ready; (s) ⊦ W5 ≠ crashed; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = (W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊃ W3;(FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊃ W4;W5)), pcf(tid0) = W5, SF ≠ head, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used simplifier rules: ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used simplifier rules: ⊦ doWritePSC(t, l, v) ≠ pwbPSC(t0, l0); (s) ⊦ pre(gs, ls, W3, a) ↔ a = doWritePSC(ls.t, ls.l, ls.v); (s) ⊦ W3 ≠ W4; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
⊦ FLITPSCInv(gs, lsf, pcf) ↔ FLITPSCGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITPSCLInv(gs, lsf(t), pcf(t)))
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used terms: ags, alsf, apcf
| ⊦ FLITPSCInv(gs, lsf, pcf) ↔ FLITPSCGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITPSCLInv(gs, lsf(t), pcf(t))) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), apcf(tid0)), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used terms: tid0
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), apcf(tid0)), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), W3), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), W3), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
⊦ FLITPSCLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.readers)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.writers)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.l, gs.writers)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.p)) ∧ (pc = W2 ∨ pc = W3 ∨ pc = W6 ∨ pc = W7 → noPending(ls.t, gs.p)) ∧ (pc = W4 ∨ pc = W5 → onePendingW(ls.t, ls.l, gs.p)) ∧ (pc = W5 → FOFollowsW(ls.t, gs.p(ls.l))) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.writers)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.readers)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.l, gs.readers)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.p)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.writers)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.readers)) ∧ (pc = idle ∨ pc = ready → noPendingW(ls.t, gs.p)) ∧ (pc = idle → noPending(ls.t, gs.p))
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), W3 = W1 ∨ W3 = W2 ∨ W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.readers), W3 = W1 ∨ W3 = W2 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.writers), W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.writers), W3 = W1 ∨ W3 = W2 → noPendingW(alsf(tid0).t, ags.p), W3 = W2 ∨ W3 = W3 ∨ W3 = W6 ∨ W3 = W7 → noPending(alsf(tid0).t, ags.p), W3 = W4 ∨ W3 = W5 → onePendingW(alsf(tid0).t, alsf(tid0).l, ags.p), W3 = W5 → FOFollowsW(alsf(tid0).t, ags.p(alsf(tid0).l)), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.writers), W3 = R1 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.readers), W3 = R2 ∨ W3 = R3 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.readers), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → noPendingW(alsf(tid0).t, ags.p), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.writers), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.readers), W3 = idle ∨ W3 = ready → noPendingW(alsf(tid0).t, ags.p), W3 = idle → noPending(alsf(tid0).t, ags.p), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used terms: ags, alsf(tid0), W3
| ⊦ FLITPSCLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.readers)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.writers)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.l, gs.writers)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.p)) ∧ (pc = W2 ∨ pc = W3 ∨ pc = W6 ∨ pc = W7 → noPending(ls.t, gs.p)) ∧ (pc = W4 ∨ pc = W5 → onePendingW(ls.t, ls.l, gs.p)) ∧ (pc = W5 → FOFollowsW(ls.t, gs.p(ls.l))) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.writers)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.readers)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.l, gs.readers)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.p)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.writers)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.readers)) ∧ (pc = idle ∨ pc = ready → noPendingW(ls.t, gs.p)) ∧ (pc = idle → noPending(ls.t, gs.p)) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), W3 = W1 ∨ W3 = W2 ∨ W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.readers), W3 = W1 ∨ W3 = W2 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.writers), W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.writers), W3 = W1 ∨ W3 = W2 → noPendingW(alsf(tid0).t, ags.p), W3 = W2 ∨ W3 = W3 ∨ W3 = W6 ∨ W3 = W7 → noPending(alsf(tid0).t, ags.p), W3 = W4 ∨ W3 = W5 → onePendingW(alsf(tid0).t, alsf(tid0).l, ags.p), W3 = W5 → FOFollowsW(alsf(tid0).t, ags.p(alsf(tid0).l)), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.writers), W3 = R1 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.readers), W3 = R2 ∨ W3 = R3 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.readers), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → noPendingW(alsf(tid0).t, ags.p), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.writers), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.readers), W3 = idle ∨ W3 = ready → noPendingW(alsf(tid0).t, ags.p), W3 = idle → noPending(alsf(tid0).t, ags.p), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used simplifier rules: ⊦ W2 ≠ W3; (s) ⊦ W1 ≠ W3; (s) ⊦ W3 ≠ W7; (s) ⊦ W3 ≠ W5; (s) ⊦ W3 ≠ W4; (s) ⊦ R4 ≠ W3; (s) ⊦ R3 ≠ W3; (s) ⊦ R2 ≠ W3; (s) ⊦ R1 ≠ W3; (s) ⊦ W3 ≠ ready; (s) ⊦ W3 ≠ idle; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = W(l, v), pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = FO(l), pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used simplifier rules: Bevent freely generated by SF, W, FO;;
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = W(l, v), pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ W(l, v) = W(l0, v0) ↔ l = l0 ∧ v = v0; (ws) ⊦ W(l, v).W?; (s) ⊦ W(l, v) ≠ SF; (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l)
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l, gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used terms: tid0, alsf(tid0).l, gs.fwriters
| ⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l) |
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l, gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l, gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used simplifier rules: ⊦ oneMember(t, l, tsf) → (t ∈ tsf(l0) ↔ l = l0); (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l, gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, l0 = l0 ↔ l0 = alsf(tid0).l, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ l. l0 = l ↔ l = alsf(tid0).l, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used terms: l0
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, l0 = l0 ↔ l0 = alsf(tid0).l, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ l. l0 = l ↔ l = alsf(tid0).l, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l))
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W5, n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used terms: n0, alsf(tid0).l, gs.bq(tid0)
| ⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l)) |
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W5, n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W5, n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, 0 < n0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used terms: 0
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W5, n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, 0 < n0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W5, n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, n0 ≠ 0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦
Used simplifier rules: ⊦ 0 < m ↔ m ≠ 0; (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W5, n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, n0 ≠ 0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = FO(alsf(tid0).l) ' ∨ gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' ⊦ |
Used simplifier rules: ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ ¬ isPropFO(n, l, W(l, v) ' + bel); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = FO(l), pcf(tid0) = W5, SF ≠ head, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ SF ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = FO(alsf(tid0).l) ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = FO(alsf(tid0).l) ', gs.bq(tid0) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ bel, FO(l) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' ≠ []; (s) ⊦ x = y + x ↔ y = []; (s) ⊦ W(l, v) ≠ FO(l0); (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list eq-05: ⊦ x = a ' + y ∧ x = a0 ' + z → a = a0 ∧ y = z; (forward) from specification list ⊦ ¬ FO(l).W?; (s) ⊦ FO(l) ≠ SF; (s)
| gs.bq(tid0) = FO(alsf(tid0).l) ', gs.bq(tid0) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W5, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ bel, FO(l) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ¬ SF ∈ bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)) ⊦ |
Used simplifier rules: ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ FO(l) = FO(l0) ↔ l = l0; (s) ⊦ ¬ a ∈ []; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, ags.mem = gs.pmem, lsf(tid0).t = tid0, alsf(tid0).t = tid0, ags.writers = gs.fwriters, pcf(tid0) = W6, apcf(tid0) ≠ W4, pcf(tid0) ≠ W1, pcf(tid0) ≠ W2, pcf(tid0) ≠ W7, pcf(tid0) ≠ W3, pcf(tid0) ≠ R1, pcf(tid0) ≠ R2, pcf(tid0) ≠ R3, pcf(tid0) ≠ R4, pcf(tid0) ≠ idle, pcf(tid0) ≠ ready, pcf(tid0) ≠ crashed, FLITGInv(gs), FLITInv ( ((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)) .rfo:= gs.rfo(tid0 := (als.l = l0 ⊃ gs.rfo(tid0);gs.rfo(tid0) -p n)), lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), pcf(tid0) = W4 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;W4), pcf(tid0) = W5 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;W5)), pcf(tid0) = W6 → apcf(tid0) = (W(lsf(tid0).loc, lsf(tid0).val) = head ∨ W(lsf(tid0).loc, lsf(tid0).val) ∈ bel ⊃ W3 ;(FO(lsf(tid0).loc) = head ∨ FO(lsf(tid0).loc) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W4 ∨ pcf(tid0) = W5 → SF ≠ head ∧ ¬ SF ∈ bel, pcf(tid0) = W5 ∨ pcf(tid0) = W6 → FOFollowsW(tid0, head ' + bel, gs.pq(lsf(tid0).loc), lsf(tid0).loc), pcf(tid0) = W4 → head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ', pcf(tid0) = W5 → head ' + bel = FO(lsf(tid0).loc) ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ', pcf(tid0) = W6 → head ' + bel = SF ' ∨ head ' + bel = FO(lsf(tid0).loc) ' + SF ' ∨ head ' + bel = W(lsf(tid0).loc, lsf(tid0).val) ' + FO(lsf(tid0).loc) ' + SF ', pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → head.W? → head = W(lsf(tid0).loc, lsf(tid0).val), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).loc = alsf(tid0).l, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → lsf(tid0).val = alsf(tid0).v, pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → notMember(tid0, gs.freaders), pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → gs.rfo(tid0) = [], pcf(tid0) = W4 ∨ pcf(tid0) = W5 ∨ pcf(tid0) = W6 → oneMember(tid0, lsf(tid0).loc, gs.fwriters), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = (W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊃ W3 ;(FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W6, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦
Used simplifier rules: ⊦ W5 ≠ W6; (s) ⊦ W4 ≠ W6; (s) ⊦ [] -p n = []; (s) ⊦ W1 ≠ W6; (s) ⊦ W2 ≠ W6; (s) ⊦ W6 ≠ W7; (s) ⊦ W3 ≠ W6; (s) ⊦ R1 ≠ W6; (s) ⊦ R2 ≠ W6; (s) ⊦ R3 ≠ W6; (s) ⊦ R4 ≠ W6; (s) ⊦ W6 ≠ idle; (s) ⊦ W6 ≠ ready; (s) ⊦ W6 ≠ crashed; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = (W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊃ W3 ;(FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)) ), pcf(tid0) = W6, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = (FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)), pcf(tid0) = W6, W(alsf(tid0).l, alsf(tid0).v) ≠ head, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used simplifier rules: ⊦ doWritePSC(t, l, v) ≠ pwbPSC(t0, l0); (s) ⊦ pre(gs, ls, W3, a) ↔ a = doWritePSC(ls.t, ls.l, ls.v); (s) ⊦ W3 ≠ W4; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
⊦ FLITPSCInv(gs, lsf, pcf) ↔ FLITPSCGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITPSCLInv(gs, lsf(t), pcf(t)))
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦
Used terms: ags, alsf, apcf
| ⊦ FLITPSCInv(gs, lsf, pcf) ↔ FLITPSCGInv(gs) ∧ (∀ t. lsf(t).t = t ∧ FLITPSCLInv(gs, lsf(t), pcf(t))) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), apcf(tid0)), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used terms: tid0
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), apcf(tid0)), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), W3), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FLITPSCLInv(ags, alsf(tid0), W3), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦ |
⊦ FLITPSCLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.readers)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.writers)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.l, gs.writers)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.p)) ∧ (pc = W2 ∨ pc = W3 ∨ pc = W6 ∨ pc = W7 → noPending(ls.t, gs.p)) ∧ (pc = W4 ∨ pc = W5 → onePendingW(ls.t, ls.l, gs.p)) ∧ (pc = W5 → FOFollowsW(ls.t, gs.p(ls.l))) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.writers)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.readers)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.l, gs.readers)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.p)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.writers)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.readers)) ∧ (pc = idle ∨ pc = ready → noPendingW(ls.t, gs.p)) ∧ (pc = idle → noPending(ls.t, gs.p))
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), W3 = W1 ∨ W3 = W2 ∨ W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.readers), W3 = W1 ∨ W3 = W2 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.writers), W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.writers), W3 = W1 ∨ W3 = W2 → noPendingW(alsf(tid0).t, ags.p), W3 = W2 ∨ W3 = W3 ∨ W3 = W6 ∨ W3 = W7 → noPending(alsf(tid0).t, ags.p), W3 = W4 ∨ W3 = W5 → onePendingW(alsf(tid0).t, alsf(tid0).l, ags.p), W3 = W5 → FOFollowsW(alsf(tid0).t, ags.p(alsf(tid0).l)), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.writers), W3 = R1 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.readers), W3 = R2 ∨ W3 = R3 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.readers), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → noPendingW(alsf(tid0).t, ags.p), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.writers), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.readers), W3 = idle ∨ W3 = ready → noPendingW(alsf(tid0).t, ags.p), W3 = idle → noPending(alsf(tid0).t, ags.p), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used terms: ags, alsf(tid0), W3
| ⊦ FLITPSCLInv(gs, ls, pc) ↔ (pc = W1 ∨ pc = W2 ∨ pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 ∨ pc = W7 → notMember(ls.t, gs.readers)) ∧ (pc = W1 ∨ pc = W2 ∨ pc = W7 → notMember(ls.t, gs.writers)) ∧ (pc = W3 ∨ pc = W4 ∨ pc = W5 ∨ pc = W6 → oneMember(ls.t, ls.l, gs.writers)) ∧ (pc = W1 ∨ pc = W2 → noPendingW(ls.t, gs.p)) ∧ (pc = W2 ∨ pc = W3 ∨ pc = W6 ∨ pc = W7 → noPending(ls.t, gs.p)) ∧ (pc = W4 ∨ pc = W5 → onePendingW(ls.t, ls.l, gs.p)) ∧ (pc = W5 → FOFollowsW(ls.t, gs.p(ls.l))) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → notMember(ls.t, gs.writers)) ∧ (pc = R1 ∨ pc = R4 → notMember(ls.t, gs.readers)) ∧ (pc = R2 ∨ pc = R3 → oneMember(ls.t, ls.l, gs.readers)) ∧ (pc = R1 ∨ pc = R2 ∨ pc = R3 ∨ pc = R4 → noPendingW(ls.t, gs.p)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.writers)) ∧ (pc = idle ∨ pc = ready → notMember(ls.t, gs.readers)) ∧ (pc = idle ∨ pc = ready → noPendingW(ls.t, gs.p)) ∧ (pc = idle → noPending(ls.t, gs.p)) |
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), W3 = W1 ∨ W3 = W2 ∨ W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.readers), W3 = W1 ∨ W3 = W2 ∨ W3 = W7 → notMember(alsf(tid0).t, ags.writers), W3 = W3 ∨ W3 = W4 ∨ W3 = W5 ∨ W3 = W6 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.writers), W3 = W1 ∨ W3 = W2 → noPendingW(alsf(tid0).t, ags.p), W3 = W2 ∨ W3 = W3 ∨ W3 = W6 ∨ W3 = W7 → noPending(alsf(tid0).t, ags.p), W3 = W4 ∨ W3 = W5 → onePendingW(alsf(tid0).t, alsf(tid0).l, ags.p), W3 = W5 → FOFollowsW(alsf(tid0).t, ags.p(alsf(tid0).l)), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.writers), W3 = R1 ∨ W3 = R4 → notMember(alsf(tid0).t, ags.readers), W3 = R2 ∨ W3 = R3 → oneMember(alsf(tid0).t, alsf(tid0).l, ags.readers), W3 = R1 ∨ W3 = R2 ∨ W3 = R3 ∨ W3 = R4 → noPendingW(alsf(tid0).t, ags.p), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.writers), W3 = idle ∨ W3 = ready → notMember(alsf(tid0).t, ags.readers), W3 = idle ∨ W3 = ready → noPendingW(alsf(tid0).t, ags.p), W3 = idle → noPending(alsf(tid0).t, ags.p), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦
Used simplifier rules: ⊦ W2 ≠ W3; (s) ⊦ W1 ≠ W3; (s) ⊦ W3 ≠ W7; (s) ⊦ W3 ≠ W5; (s) ⊦ W3 ≠ W4; (s) ⊦ R4 ≠ W3; (s) ⊦ R3 ≠ W3; (s) ⊦ R2 ≠ W3; (s) ⊦ R1 ≠ W3; (s) ⊦ W3 ≠ ready; (s) ⊦ W3 ≠ idle; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, head ' + bel), isPropFO(n, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n0 ≤ # bel, n ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦ |
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = W(l, v), pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = FO(l), pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦
Used simplifier rules: Bevent freely generated by SF, W, FO;; ⊦ ¬ isPropFO(n, l, SF ' + bel); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = W(l, v), pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ W(l, v) ≠ FO(l0); (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list eq-05: ⊦ x = a ' + y ∧ x = a0 ' + z → a = a0 ∧ y = z; (forward) from specification list ⊦ W(l, v) = W(l0, v0) ↔ l = l0 ∧ v = v0; (ws) ⊦ W(l, v).W?; (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l)
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l, gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used terms: tid0, alsf(tid0).l, gs.fwriters
| ⊦ oneMember(t, l, tsf) ↔ (∀ l0. t ∈ tsf(l0) ↔ l0 = l) |
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ l0. tid0 ∈ gs.fwriters(l0) ↔ l0 = alsf(tid0).l, gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l, gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used simplifier rules: ⊦ oneMember(t, l, tsf) → (t ∈ tsf(l0) ↔ l = l0); (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ l. l0 = l ↔ l = alsf(tid0).l, gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, l0 = l0 ↔ l0 = alsf(tid0).l, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ∀ l. l0 = l ↔ l = alsf(tid0).l, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used terms: l0
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, l0 = l0 ↔ l0 = alsf(tid0).l, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, gs.bq(tid0)), isPropFO(n, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ∀ l. l0 = l ↔ l = alsf(tid0).l, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, alsf(tid0).l, gs.bq(tid0)), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l))
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used terms: n0, alsf(tid0).l, gs.bq(tid0)
| ⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l)) |
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, 0 < n0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used terms: 0
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n0 ≤ # bel, n ≤ # bel, 0 < n0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, n0 ≠ 0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used simplifier rules: ⊦ 0 < m ↔ m ≠ 0; (s)
| gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, gs.bq(tid0)[n0] = FO(alsf(tid0).l), apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ FO(alsf(tid0).l) ' + SF ', n0 < # gs.bq(tid0), FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(alsf(tid0).l := gs.pq(alsf(tid0).l) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, alsf(tid0).l, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ gs.bq(tid0), n ≤ # bel, n0 ≤ # bel, n0 ≠ 0 → gs.bq(tid0)[0] ≠ SF ∧ (gs.bq(tid0)[0].W? ∨ gs.bq(tid0)[0].FO? → gs.bq(tid0)[0].l ≠ alsf(tid0).l), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ m. m < n0 → gs.bq(tid0)[m] ≠ SF ∧ (gs.bq(tid0)[m].W? ∨ gs.bq(tid0)[m].FO? → gs.bq(tid0)[m].l ≠ alsf(tid0).l), gs.bq(tid0) = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
Used simplifier rules: ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ ¬ isPropFO(n, l, W(l, v) ' + bel); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, head = FO(l), pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', W(alsf(tid0).l, alsf(tid0).v) = head ∨ W(alsf(tid0).l, alsf(tid0).v) ∈ bel ⊦ |
gs.bq(tid0) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ gs.bq(tid0), W(alsf(tid0).l, alsf(tid0).v) ∈ bel, n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦
Used simplifier rules: ⊦ W(l, v) ≠ FO(l0); (s) a: ⊦ (x + y) + z = x + y + z; from specification list in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list eq-05: ⊦ x = a ' + y ∧ x = a0 ' + z → a = a0 ∧ y = z; (forward) from specification list ⊦ ¬ FO(l).W?; (s)
| gs.bq(tid0) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], lsf(tid0).t = tid0, alsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, gs.bq(tid0) ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := gs.bq(tid0) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, gs.bq(tid0), gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, gs.bq(tid0)), isPropFO(n0, l0, gs.bq(tid0)), noPending(tid0, ags.p), notMember(tid0, ags.readers), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), FO(l) ∈ gs.bq(tid0), W(alsf(tid0).l, alsf(tid0).v) ∈ bel, n ≤ # bel, n0 ≤ # bel, ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), gs.bq(tid0) = FO(alsf(tid0).l) ' + SF ' ∨ gs.bq(tid0) = SF ' ⊦ |
gs.bq(tid0) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FO(l) ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (FO(l) ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, FO(l) ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, FO(l) ' + bel), isPropFO(n, l0, FO(l) ' + bel), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ bel, FO(l) ∈ FO(l) ' + bel, n0 ≤ # bel, n ≤ # bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), FO(l) ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ FO(l) ' + bel = SF ' ⊦
| gs.bq(tid0) = FO(l) ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W3, pcf(tid0) = W6, FO(l) ' + bel ≠ W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ', FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (FO(l) ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCGInv(ags), FOFollowsW(tid0, FO(l) ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n0, l0, FO(l) ' + bel), isPropFO(n, l0, FO(l) ' + bel), noPending(tid0, ags.p), notMember(tid0, gs.freaders), notMember(tid0, ags.readers), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, alsf(tid0).l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), W(alsf(tid0).l, alsf(tid0).v) ∈ bel, FO(l) ∈ FO(l) ' + bel, n0 ≤ # bel, n ≤ # bel, ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. alsf(t).t = t ∧ FLITPSCLInv(ags, alsf(t), apcf(t)), FO(l) ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ FO(l) ' + bel = SF ' ⊦ |
Used simplifier rules: ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ FO(l) ≠ SF; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) ⊦ FO(l) = FO(l0) ↔ l = l0; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ W(l, v) ≠ SF; (s)
| gs.bq(tid0) = head ' + bel, ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = (FO(alsf(tid0).l) = head ∨ FO(alsf(tid0).l) ∈ bel ⊃ W4;(SF = head ∨ SF ∈ bel ⊃ W5;W6)), pcf(tid0) = W6, W(alsf(tid0).l, alsf(tid0).v) ≠ head, apcf(tid0) ≠ W4, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := (head ' + bel) -p n)).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, head ' + bel, gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(n, l0, head ' + bel), isPropFO(n0, l0, head ' + bel), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), n ≤ # bel, n0 ≤ # bel, ¬ pre(ags, alsf(tid0), apcf(tid0), pwbPSC(tid0, l0)), ¬ W(alsf(tid0).l, alsf(tid0).v) ∈ bel, head.W? → head = W(alsf(tid0).l, alsf(tid0).v), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)), head ' + bel = SF ' ∨ head ' + bel = FO(alsf(tid0).l) ' + SF ' ∨ head ' + bel = W(alsf(tid0).l, alsf(tid0).v) ' + FO(alsf(tid0).l) ' + SF ' ⊦ |
gs.bq(tid0) = SF ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W5, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := [])).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, SF ', gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, SF '), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦
Used simplifier rules: ⊦ pwbPSC(t, l) ≠ sfencePSC(t0); (s) ⊦ reorder(p, pq, rfo) → (FO(t) ∈ p(l) ↔ FO(t) ∈ pq(l) ∨ FO(l) ∈ rfo(t)); (s) ⊦ pre(gs, ls, W5, a) ↔ (∀ l. ¬ FO(ls.t) ∈ gs.p(l)) ∧ a = sfencePSC(ls.t); (s) ⊦ a ' -p 0 = []; (s) ⊦ W4 ≠ W5; (s) ⊦ ¬ SF.W?; (s) ⊦ ¬ a ∈ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ m ≤ 0 ↔ m = 0; (s) ⊦ # [] = 0; (s) ⊦ W(l, v) ≠ SF; (s) ⊦ a ' ≠ []; (s) ⊦ a ' = x + a0 ' ↔ a = a0 ∧ x = []; (ws) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ FO(l) ≠ SF; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws)
| gs.bq(tid0) = SF ', ags.ctr = gs.fctr, lsf(tid0).loc = alsf(tid0).l, ags.mem = gs.pmem, gs.rfo(tid0) = [], alsf(tid0).t = tid0, lsf(tid0).t = tid0, lsf(tid0).val = alsf(tid0).v, ags.writers = gs.fwriters, apcf(tid0) = W5, pcf(tid0) = W6, FLITGInv(gs), FLITInv(((gs.pq:= gs.pq(l0 := gs.pq(l0) + FO(tid0) ')).bq:= gs.bq(tid0 := [])).rfo:= gs.rfo(tid0 := []), lsf, pcf), FLITPSCInv(ags, alsf, apcf), FOFollowsW(tid0, SF ', gs.pq(alsf(tid0).l), alsf(tid0).l), isPropFO(0, l0, SF '), notMember(tid0, gs.freaders), oneMember(tid0, alsf(tid0).l, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ t. lsf(t).t = t ∧ FLITLInv(gs, lsf(t), pcf(t)) ⊦ |
⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l))
Used simplifier rules: ⊦ a '[0] = a; (s) ⊦ FO(l) ≠ SF; (s) Used terms: 0, l0, SF '
| ⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l)) |
| ⟨skip⟩ (pq = pq0 ∧ bq = bq0 ∧ rfo = rfo0), ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, fwriters = gs.fwriters, l = l0, pq = gs.pq, rfo = gs.rfo, tid = tid0, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ n. ¬(n < # bq(tid) ∧ isPropFO(n, l, bq(tid))) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, bq = bq0, fwriters = gs.fwriters, l = l0, pq = gs.pq, pq = pq0, rfo = gs.rfo, rfo = rfo0, tid = tid0, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ n. ¬(n < # bq(tid) ∧ isPropFO(n, l, bq(tid))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, bq = gs.bq, bq = bq0, fwriters = gs.fwriters, l = l0, pq = gs.pq, pq = pq0, rfo = gs.rfo, rfo = rfo0, tid = tid0, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(gs, lsf, pcf), FLITInv(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, als.l, gs.fwriters), oneMember(tid0, l0, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ n. ¬(n < # bq(tid) ∧ isPropFO(n, l, bq(tid))), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, pq0, rfo0) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= pq0).bq:= bq0).rfo:= rfo0, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(((gs.pq:= gs.pq).bq:= gs.bq).rfo:= gs.rfo, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ n0. ¬ n0 < # gs.bq(tid0) ∨ ¬ isPropFO(n0, l0, gs.bq(tid0)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, gs.pq, gs.rfo) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= gs.pq).bq:= gs.bq).rfo:= gs.rfo, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t)))
| ags.ctr = gs.fctr, ags.mem = gs.pmem, ags.writers = gs.fwriters, gs.bq(tid0) ≠ [], n < # gs.bq(tid0), FLITInv(((gs.pq:= gs.pq).bq:= gs.bq).rfo:= gs.rfo, lsf, pcf), FLITInv(gs, lsf, pcf), FLITPSCInv(ags, alsf, apcf), isPropFO(n, l0, gs.bq(tid0)), oneMember(tid0, l0, gs.fwriters), oneMember(tid0, als.l, gs.fwriters), reorder(ags.p, gs.pq, gs.rfo), ∀ t. labs(gs, lsf(t), pcf(t), ags, alsf(t), apcf(t)), ∀ n0. ¬ n0 < # gs.bq(tid0) ∨ ¬ isPropFO(n0, l0, gs.bq(tid0)) ⊦ ∃ ags0, alsf0, apcf0. (∃ t. pre(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ ags0 = gstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)) ∧ alsf0 = alsf(t := lstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0))) ∧ apcf0 = apcf(t := pcstepf(ags, alsf(t), apcf(t), pwbPSC(tid0, l0)))) ∧ ags0.mem = gs.pmem ∧ ags0.ctr = gs.fctr ∧ reorder(ags0.p, gs.pq, gs.rfo) ∧ ags0.writers = gs.fwriters ∧ (∀ t. labs(((gs.pq:= gs.pq).bq:= gs.bq).rfo:= gs.rfo, lsf(t), pcf(t), ags0, alsf0(t), apcf0(t))) |
Used terms: n
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.