| ⊦ ( ( ( ctrok(gs.fctr, gs.fwriters) ∧ writersOk(gs.bq, gs.pq, gs.fwriters) ∧ pendingOk(gs.bq, gs.pq) ∧ SFTrailing(gs.bq) ∧ readFOsOk(gs.rfo, gs.fwriters)) ∧ notMember(ls.t, gs.freaders) ∧ oneMember(ls.t, ls.loc, gs.fwriters) ∧ FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc) ∧ ¬ SF ∈ gs.bq(ls.t) ∧ gs.rfo(ls.t) = [] ∧ (gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val))) ∧ ctrok(gs0.fctr, gs0.fwriters) ∧ writersOk(gs0.bq, gs0.pq, gs0.fwriters) ∧ pendingOk(gs0.bq, gs0.pq) ∧ SFTrailing(gs0.bq) ∧ readFOsOk(gs0.rfo, gs0.fwriters)) ∧ relyws(ls.t, gs.freaders, gs0.freaders) ∧ relyws(ls.t, gs.fwriters, gs0.fwriters) ∧ rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq) ∧ gs.bq(ls.t) ⊒w gs0.bq(ls.t) ∧ (gs.rfo(ls.t) = [] → gs0.rfo(ls.t) = []) ∧ (gs.rfo(ls.t) = gs.bq(ls.t) → gs0.rfo(ls.t) = gs0.bq(ls.t)) ∧ (gs.rfo(ls.t) + SF ' = gs.bq(ls.t) → gs0.rfo(ls.t) + SF ' = gs0.bq(ls.t) ∨ gs0.rfo(ls.t) = gs0.bq(ls.t)) → notMember(ls.t, gs0.freaders) ∧ oneMember(ls.t, ls.loc, gs0.fwriters) ∧ FOFollowsW(ls.t, gs0.bq(ls.t), gs0.pq(ls.loc), ls.loc) ∧ ¬ SF ∈ gs0.bq(ls.t) ∧ gs0.rfo(ls.t) = [] ∧ (gs0.bq(ls.t) = [] ∨ gs0.bq(ls.t) = FO(ls.loc) ' ∨ gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (gs0.bq(ls.t) ≠ [] ∧ gs0.bq(ls.t).head.W? → gs0.bq(ls.t).head = W(ls.loc, ls.val)) |
gs.rfo(ls.t) = [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), gs.rfo(ls.t) = [] → gs0.rfo(ls.t) = [], gs.rfo(ls.t) = gs.bq(ls.t) → gs0.rfo(ls.t) = gs0.bq(ls.t), gs.rfo(ls.t) + SF ' = gs.bq(ls.t) → gs0.rfo(ls.t) + SF ' = gs0.bq(ls.t) ∨ gs0.rfo(ls.t) = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ notMember(ls.t, gs0.freaders) ∧ oneMember(ls.t, ls.loc, gs0.fwriters) ∧ FOFollowsW(ls.t, gs0.bq(ls.t), gs0.pq(ls.loc), ls.loc) ∧ ¬ SF ∈ gs0.bq(ls.t) ∧ gs0.rfo(ls.t) = [] ∧ (gs0.bq(ls.t) = [] ∨ gs0.bq(ls.t) = FO(ls.loc) ' ∨ gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (gs0.bq(ls.t) ≠ [] ∧ gs0.bq(ls.t).head.W? → gs0.bq(ls.t).head = W(ls.loc, ls.val))
| gs.rfo(ls.t) = [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), gs.rfo(ls.t) = [] → gs0.rfo(ls.t) = [], gs.rfo(ls.t) = gs.bq(ls.t) → gs0.rfo(ls.t) = gs0.bq(ls.t), gs.rfo(ls.t) + SF ' = gs.bq(ls.t) → gs0.rfo(ls.t) + SF ' = gs0.bq(ls.t) ∨ gs0.rfo(ls.t) = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ notMember(ls.t, gs0.freaders) ∧ oneMember(ls.t, ls.loc, gs0.fwriters) ∧ FOFollowsW(ls.t, gs0.bq(ls.t), gs0.pq(ls.loc), ls.loc) ∧ ¬ SF ∈ gs0.bq(ls.t) ∧ gs0.rfo(ls.t) = [] ∧ (gs0.bq(ls.t) = [] ∨ gs0.bq(ls.t) = FO(ls.loc) ' ∨ gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (gs0.bq(ls.t) ≠ [] ∧ gs0.bq(ls.t).head.W? → gs0.bq(ls.t).head = W(ls.loc, ls.val)) |
gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), [] = gs.bq(ls.t) → [] = gs0.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t) ∨ [] = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ (gs0.bq(ls.t) = [] ∨ gs0.bq(ls.t) = FO(ls.loc) ' ∨ gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (gs0.bq(ls.t) ≠ [] ∧ gs0.bq(ls.t).head.W? → gs0.bq(ls.t).head = W(ls.loc, ls.val))
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ bel ⊒w bel0 ∧ ¬ be ∈ bel → ¬ be ∈ bel0; (as) ⊦ rely(t, pq, bq, pq0, bq0) ∧ bq(t) ⊒w bq0(t) ∧ FOFollowsW(t, bq(t), pq(l), l) → FOFollowsW(t, bq0(t), pq0(l), l); (ss) ⊦ relyws(t, tsf0, tsf1) ∧ oneMember(t, l, tsf0) → oneMember(t, l, tsf1); (s) ⊦ relyws(t, tsf0, tsf1) ∧ notMember(t, tsf0) → notMember(t, tsf1); (s)
| gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), [] = gs.bq(ls.t) → [] = gs0.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t) ∨ [] = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ (gs0.bq(ls.t) = [] ∨ gs0.bq(ls.t) = FO(ls.loc) ' ∨ gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ') ∧ (gs0.bq(ls.t) ≠ [] ∧ gs0.bq(ls.t).head.W? → gs0.bq(ls.t).head = W(ls.loc, ls.val)) |
gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t) ∨ [] = gs0.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), [] = gs.bq(ls.t) → [] = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t).head ≠ W(ls.loc, ls.val), gs0.bq(ls.t).head.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t) ∨ [] = gs0.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), [] = gs.bq(ls.t) → [] = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
| gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t) ∨ [] = gs0.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), [] = gs.bq(ls.t) → [] = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', [] ≠ gs.bq(ls.t), FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
| gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', [] ≠ gs.bq(ls.t), FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs.bq(ls.t) = be + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', [] ≠ gs.bq(ls.t), FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), be.W? → be = W(ls.loc, ls.val), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: gs.bq(ls.t), be, bel
| gs.bq(ls.t) = be + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', [] ≠ gs.bq(ls.t), FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), be.W? → be = W(ls.loc, ls.val), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs.bq(ls.t) = be ' + bel, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ be ' + bel, gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', SF ≠ be, FOFollowsW(ls.t, be ' + bel, gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), be ' + bel ⊒w gs0.bq(ls.t), ¬ SF ∈ bel, be.W? → be = W(ls.loc, ls.val), be ' + bel = FO(ls.loc) ' ∨ be ' + bel = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ a ∈ a0 ' + x ↔ ¬(a ≠ a0 ∧ ¬ a ∈ x); (ss) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| gs.bq(ls.t) = be ' + bel, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ be ' + bel, gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', SF ≠ be, FOFollowsW(ls.t, be ' + bel, gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), be ' + bel ⊒w gs0.bq(ls.t), ¬ SF ∈ bel, be.W? → be = W(ls.loc, ls.val), be ' + bel = FO(ls.loc) ' ∨ be ' + bel = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
be ' + bel = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ be ' + bel, gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', SF ≠ be, FOFollowsW(ls.t, be ' + bel, gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), be ' + bel ⊒w gs0.bq(ls.t), ¬ SF ∈ bel, be.W? → be = W(ls.loc, ls.val) ⊦
Used simplifier rules: ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ FO(l) ≠ SF; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ be ' ⊒w bel ↔ bel = be ' ∨ bel = []; (ws)
| be ' + bel = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ be ' + bel, gs0.bq(ls.t) ≠ [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', SF ≠ be, FOFollowsW(ls.t, be ' + bel, gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), be ' + bel ⊒w gs0.bq(ls.t), ¬ SF ∈ bel, be.W? → be = W(ls.loc, ls.val) ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs.bq(ls.t), W(ls.loc, ls.val) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t) ⊦
Used simplifier rules: 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 ⊦ FO(l) ≠ SF; (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ W(l, v) ≠ SF; (s) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws)
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs.bq(ls.t), W(ls.loc, ls.val) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t) ⊦ |
⊦ bel ⊒w bel0 ∧ bel.forall(λ be. be = SF ∨ be.l = l) → bel ⊒ bel0
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ gs.bq(ls.t), FO(ls.loc) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t) ∧ gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ gs0.bq(ls.t) ⊦
Used terms: gs.bq(ls.t), gs0.bq(ls.t), ls.loc
| ⊦ bel ⊒w bel0 ∧ bel.forall(λ be. be = SF ∨ be.l = l) → bel ⊒ bel0 |
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ gs.bq(ls.t), FO(ls.loc) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t) ∧ gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ gs0.bq(ls.t) ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs.bq(ls.t), W(ls.loc, ls.val) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t), gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ gs0.bq(ls.t) ⊦
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs.bq(ls.t), W(ls.loc, ls.val) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t), gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ gs0.bq(ls.t) ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t), (W(ls.loc, ls.val) ' + FO(ls.loc) ').forall(λ be. be = SF ∨ be.l = ls.loc) → W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ gs0.bq(ls.t) ⊦
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t), (W(ls.loc, ls.val) ' + FO(ls.loc) ').forall(λ be. be = SF ∨ be.l = ls.loc) → W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ gs0.bq(ls.t) ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ gs0.bq(ls.t), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t) ⊦
Used simplifier rules: ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ W(l, v) ≠ FO(l0); (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ (a ' + x).forall(p) ↔ p(a) ∧ x.forall(p); (s) ⊦ W(l, v) ≠ SF; (s) ⊦ W(l, v).l = l; (s) ⊦ a '.forall(p) ↔ p(a); (s) ⊦ FO(l) ≠ SF; (s) ⊦ FO(l).l = l; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ gs0.bq(ls.t), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t) ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒ gs0.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ W(l, v) ≠ FO(l0); (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s)
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ gs.bq(ls.t), gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒ gs0.bq(ls.t), gs.bq(ls.t) ⊒w gs0.bq(ls.t) ⊦ |
gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ gs0.bq(ls.t), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t) ⊦
| gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ gs0.bq(ls.t), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t) ⊦ |
⊦ x ⊒ y ↔ (∃ z. z + y = x)
gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t), ∃ z. z + gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
Used terms: W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t)
| ⊦ x ⊒ y ↔ (∃ z. z + y = x) |
| gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w gs0.bq(ls.t), ∃ z. z + gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
bel + gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], bel ≠ [], FOFollowsW(ls.t, bel + gs0.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs0.bq(ls.t), W(ls.loc, ls.val) ∈ bel, ¬ FO(ls.loc) ∈ bel ⊦
Used simplifier rules: ⊦ a ∈ a0 ' ↔ a = a0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list inapp-12: ⊦ x + y = z + a ' ∧ a0 ∈ x ∧ y ≠ [] → a0 ∈ z; (forward) from specification list ⊦ bel0 + bel ⊒w bel; (s) ni: ⊦ x + a ' = y + z ∧ ¬ a ∈ z → z = []; (forward) from specification list ⊦ W(l, v) ≠ FO(l0); (s) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ' + x = x0 + x1 → (a ∈ x0 ↔ x0 ≠ []); (ss) ⊦ y ≠ [] → (a ' = x + y ↔ x = [] ∧ a ' = y); (s) ⊦ x = y + x ↔ y = []; (s) in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list
| bel + gs0.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ FO(ls.loc) ', gs0.bq(ls.t) ≠ [], bel ≠ [], FOFollowsW(ls.t, bel + gs0.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs0.bq(ls.t), W(ls.loc, ls.val) ∈ bel, ¬ FO(ls.loc) ∈ bel ⊦ |
Used simplifier rules: List('a) freely generated by [], +;; ⊦ a + x = a ' + x; (s) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws) ⊦ y ≠ [] → (a ' = x + y ↔ x = [] ∧ a ' = y); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t).head ≠ W(ls.loc, ls.val), gs0.bq(ls.t).head.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t) ∨ [] = gs0.bq(ls.t), gs.bq(ls.t) ≠ [] ∧ gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), [] = gs.bq(ls.t) → [] = gs0.bq(ls.t), gs.bq(ls.t) = [] ∨ gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t).head ≠ W(ls.loc, ls.val), [] ≠ gs.bq(ls.t), gs0.bq(ls.t).head.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
| gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], gs0.bq(ls.t).head ≠ W(ls.loc, ls.val), [] ≠ gs.bq(ls.t), gs0.bq(ls.t).head.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs0.bq(ls.t) = be + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], [] ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: gs0.bq(ls.t), be, bel
| gs0.bq(ls.t) = be + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], gs0.bq(ls.t) ≠ [], [] ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w gs0.bq(ls.t), ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = gs0.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs0.bq(ls.t) = be ' + bel, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], [] ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w be ' + bel, ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = be ' + bel, gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| gs0.bq(ls.t) = be ' + bel, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], [] ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), gs.bq(ls.t) ⊒w be ' + bel, ¬ SF ∈ gs.bq(ls.t), gs.bq(ls.t).head.W? → gs.bq(ls.t).head = W(ls.loc, ls.val), SF ' = gs.bq(ls.t) → SF ' = be ' + bel, gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = be0 + bel0, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], [] ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w be ' + bel, ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = be ' + bel, be0.W? → be0 = W(ls.loc, ls.val), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: gs.bq(ls.t), be0, bel0
| gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = be0 + bel0, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], [] ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒w be ' + bel, ¬ SF ∈ gs.bq(ls.t), SF ' = gs.bq(ls.t) → SF ' = be ' + bel, be0.W? → be0 = W(ls.loc, ls.val), gs.bq(ls.t) = FO(ls.loc) ' ∨ gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = be0 ' + bel0, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ be0 ' + bel0, SF ≠ be0, be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, be0 ' + bel0, gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), be0 ' + bel0 ⊒w be ' + bel, ¬ SF ∈ bel0, be0.W? → be0 = W(ls.loc, ls.val), be0 ' + bel0 = FO(ls.loc) ' ∨ be0 ' + bel0 = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ a ∈ a0 ' + x ↔ ¬(a ≠ a0 ∧ ¬ a ∈ x); (ss) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = be0 ' + bel0, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ be0 ' + bel0, SF ≠ be0, be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, be0 ' + bel0, gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), be0 ' + bel0 ⊒w be ' + bel, ¬ SF ∈ bel0, be0.W? → be0 = W(ls.loc, ls.val), be0 ' + bel0 = FO(ls.loc) ' ∨ be0 ' + bel0 = W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊦ |
be0 ' + bel0 = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.bq(ls.t) = be0 ' + bel0, gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ be0 ' + bel0, SF ≠ be0, be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, be0 ' + bel0, gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), be0 ' + bel0 ⊒w be ' + bel, ¬ SF ∈ bel0, be0.W? → be0 = W(ls.loc, ls.val) ⊦
Used simplifier rules: ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ FO(l) ≠ SF; (s) ⊦ be ' ⊒w be0 ' + bel ↔ be0 = be ∧ bel = []; (s) ⊦ ¬ a ∈ []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ W(l, v) ≠ FO(l0); (s) ⊦ ¬ FO(l).W?; (s)
| be0 ' + bel0 = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.bq(ls.t) = be0 ' + bel0, gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ be0 ' + bel0, SF ≠ be0, be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, be0 ' + bel0, gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), be0 ' + bel0 ⊒w be ' + bel, ¬ SF ∈ bel0, be0.W? → be0 = W(ls.loc, ls.val) ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs.bq(ls.t), W(ls.loc, ls.val) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w be ' + bel ⊦
Used simplifier rules: 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 ⊦ FO(l) ≠ SF; (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ W(l, v) ≠ SF; (s) ⊦ a ' + x = a0 ' + y ↔ a = a0 ∧ x = y; (ws)
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ gs.bq(ls.t), W(ls.loc, ls.val) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w be ' + bel ⊦ |
⊦ bel ⊒w bel0 ∧ bel.forall(λ be. be = SF ∨ be.l = l) → bel ⊒ bel0
gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ gs.bq(ls.t), FO(ls.loc) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w be ' + bel, gs.bq(ls.t) ⊒w gs0.bq(ls.t) ∧ gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ gs0.bq(ls.t) ⊦
Used terms: gs.bq(ls.t), gs0.bq(ls.t), ls.loc
| ⊦ bel ⊒w bel0 ∧ bel.forall(λ be. be = SF ∨ be.l = l) → bel ⊒ bel0 |
| gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ gs.bq(ls.t), FO(ls.loc) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w be ' + bel, gs.bq(ls.t) ⊒w gs0.bq(ls.t) ∧ gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ gs0.bq(ls.t) ⊦ |
gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ gs.bq(ls.t), FO(ls.loc) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w be ' + bel, gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ be ' + bel ⊦
| gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ gs.bq(ls.t), FO(ls.loc) ∈ gs.bq(ls.t), gs.bq(ls.t) ⊒w be ' + bel, gs.bq(ls.t).forall(λ be. be = SF ∨ be.l = ls.loc) → gs.bq(ls.t) ⊒ be ' + bel ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w be ' + bel, (W(ls.loc, ls.val) ' + FO(ls.loc) ').forall(λ be. be = SF ∨ be.l = ls.loc) → W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ be ' + bel ⊦
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w be ' + bel, (W(ls.loc, ls.val) ' + FO(ls.loc) ').forall(λ be. be = SF ∨ be.l = ls.loc) → W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ be ' + bel ⊦ |
gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ be ' + bel, W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w be ' + bel ⊦
Used simplifier rules: ⊦ W(l, v) ≠ FO(l0); (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ (a ' + x).forall(p) ↔ p(a) ∧ x.forall(p); (s) ⊦ W(l, v) ≠ SF; (s) ⊦ W(l, v).l = l; (s) ⊦ a '.forall(p) ↔ p(a); (s) ⊦ FO(l) ≠ SF; (s) ⊦ FO(l).l = l; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| gs0.bq(ls.t) = be ' + bel, gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', FO(ls.loc) ∈ W(ls.loc, ls.val) ' + FO(ls.loc) ', W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ be ' + bel, W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w be ' + bel ⊦ |
gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒ be ' + bel, gs.bq(ls.t) ⊒w be ' + bel ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ a ∈ a0 ' ↔ a = a0; (s) ⊦ W(l, v) ≠ FO(l0); (s)
| gs.bq(ls.t) = W(ls.loc, ls.val) ' + FO(ls.loc) ', gs0.bq(ls.t) = be ' + bel, gs.rfo(ls.t) = [], gs0.rfo(ls.t) = [], SF ' ≠ gs.bq(ls.t), be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, gs.bq(ls.t), gs.pq(ls.loc), ls.loc), SFTrailing(gs0.bq), SFTrailing(gs.bq), ctrok(gs0.fctr, gs0.fwriters), ctrok(gs.fctr, gs.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs0.bq, gs0.pq), pendingOk(gs.bq, gs.pq), readFOsOk(gs0.rfo, gs0.fwriters), readFOsOk(gs.rfo, gs.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.fwriters, gs0.fwriters), relyws(ls.t, gs.freaders, gs0.freaders), writersOk(gs0.bq, gs0.pq, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), gs.bq(ls.t) ⊒ be ' + bel, gs.bq(ls.t) ⊒w be ' + bel ⊦ |
gs0.bq(ls.t) = be ' + bel, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ be ' + bel, W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w be ' + bel ⊦
| gs0.bq(ls.t) = be ' + bel, gs0.rfo(ls.t) = [], gs.rfo(ls.t) = [], SF ' ≠ W(ls.loc, ls.val) ' + FO(ls.loc) ', be ≠ W(ls.loc, ls.val), be.W?, FOFollowsW(ls.t, W(ls.loc, ls.val) ' + FO(ls.loc) ', gs.pq(ls.loc), ls.loc), SFTrailing(gs.bq), SFTrailing(gs0.bq), ctrok(gs.fctr, gs.fwriters), ctrok(gs0.fctr, gs0.fwriters), notMember(ls.t, gs.freaders), oneMember(ls.t, ls.loc, gs.fwriters), pendingOk(gs.bq, gs.pq), pendingOk(gs0.bq, gs0.pq), readFOsOk(gs.rfo, gs.fwriters), readFOsOk(gs0.rfo, gs0.fwriters), rely(ls.t, gs.pq, gs.bq, gs0.pq, gs0.bq), relyws(ls.t, gs.freaders, gs0.freaders), relyws(ls.t, gs.fwriters, gs0.fwriters), writersOk(gs.bq, gs.pq, gs.fwriters), writersOk(gs0.bq, gs0.pq, gs0.fwriters), W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒ be ' + bel, W(ls.loc, ls.val) ' + FO(ls.loc) ' ⊒w be ' + bel ⊦ |
⊦ x ⊒ y ↔ (∃ z. z + y = x)
Used simplifier rules: in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list in-15: ⊦ x + a ' = y → a ∈ y; (forward) from specification list ⊦ a ≠ a0 → (a ∈ a0 ' + x ↔ a ∈ x); (s) ⊦ ¬ a ∈ y → (y + a0 ' + z = a ' + z0 ↔ y = [] ∧ a0 = a ∧ z = z0); (ws) ⊦ a ∈ x + y ↔ a ∈ x ∨ a ∈ y; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ W(l, v) ≠ FO(l0); (s) ⊦ ¬ FO(l).W?; (s) ⊦ bel0 + bel ⊒w bel; (s) ni: ⊦ x + a ' = y + z ∧ ¬ a ∈ z → z = []; (forward) from specification list in-16: ⊦ x + a ' = y + a0 ' + z ∧ a ≠ a0 → a ∈ z; (forward) from specification list inex: ⊦ x + a ' = y + a0 ' + z ∧ a ≠ a0 → (∃ z0. z = z0 + a '); (forward) from specification list ⊦ # y = # y0 → (x + y = z + y0 ↔ x = z ∧ y = y0); (ws) ⊦ x + a ' + y = a0 ' ↔ x = [] ∧ a = a0 ∧ y = []; (ws) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: W(ls.loc, ls.val) ' + FO(ls.loc) ', be ' + bel
| ⊦ x ⊒ y ↔ (∃ z. z + y = x) |
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.