| ⊦ ( ( alldisjointp(alltids, gs.ghostlspmxf) ∧ disjointp(U(alltids, gs.ghostlspmxf), gs.gspmx) ∧ gs.y + (U(alltids, gs.ghostlspmxf) ∪ gs.gspmx).toMatrix(gs.r, # gs.x) * gs.x = gs.spmx.toMatrix(gs.r, # gs.x) * gs.x ∧ U(alltids, gs.ghostlspmxf) ∪ gs.gspmx ⊆ gs.spmx ∧ # gs.y = gs.r ∧ okspmx(gs.spmx, gs.r, # gs.x)) ∧ gs.ghostlspmxf(ls.tid) = ∅) ∧ pre(gs, ls, L2, a) ∧ pcstepf(gs, ls, L2, a) = L1 → ( alldisjointp(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf), gstepf(gs, ls, L2, a).gspmx) ∧ gstepf(gs, ls, L2, a).y + (U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ).toMatrix (gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x ) * gstepf(gs, ls, L2, a).x = gstepf(gs, ls, L2, a).spmx.toMatrix(gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) * gstepf(gs, ls, L2, a).x ∧ U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ⊆ gstepf(gs, ls, L2, a).spmx ∧ # gstepf(gs, ls, L2, a).y = gstepf(gs, ls, L2, a).r ∧ okspmx(gstepf(gs, ls, L2, a).spmx, gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x)) ∧ gstepf(gs, ls, L2, a).ghostlspmxf(lstepf(gs, ls, L2, a).tid) = ∅ |
# gs.y = gs.r, gs.y + (U(alltids, gs.ghostlspmxf) ∪ gs.gspmx).toMatrix(gs.r, # gs.x) * gs.x = gs.spmx.toMatrix(gs.r, # gs.x) * gs.x, gs.ghostlspmxf(ls.tid) = ∅, pcstepf(gs, ls, L2, a) = L1, alldisjointp(alltids, gs.ghostlspmxf), disjointp(U(alltids, gs.ghostlspmxf), gs.gspmx), okspmx(gs.spmx, gs.r, # gs.x), pre(gs, ls, L2, a), U(alltids, gs.ghostlspmxf) ∪ gs.gspmx ⊆ gs.spmx ⊦ ( alldisjointp(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf), gstepf(gs, ls, L2, a).gspmx) ∧ gstepf(gs, ls, L2, a).y + (U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ).toMatrix (gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x ) * gstepf(gs, ls, L2, a).x = gstepf(gs, ls, L2, a).spmx.toMatrix(gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) * gstepf(gs, ls, L2, a).x ∧ U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ⊆ gstepf(gs, ls, L2, a).spmx ∧ # gstepf(gs, ls, L2, a).y = gstepf(gs, ls, L2, a).r ∧ okspmx(gstepf(gs, ls, L2, a).spmx, gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x)) ∧ gstepf(gs, ls, L2, a).ghostlspmxf(lstepf(gs, ls, L2, a).tid) = ∅
| # gs.y = gs.r, gs.y + (U(alltids, gs.ghostlspmxf) ∪ gs.gspmx).toMatrix(gs.r, # gs.x) * gs.x = gs.spmx.toMatrix(gs.r, # gs.x) * gs.x, gs.ghostlspmxf(ls.tid) = ∅, pcstepf(gs, ls, L2, a) = L1, alldisjointp(alltids, gs.ghostlspmxf), disjointp(U(alltids, gs.ghostlspmxf), gs.gspmx), okspmx(gs.spmx, gs.r, # gs.x), pre(gs, ls, L2, a), U(alltids, gs.ghostlspmxf) ∪ gs.gspmx ⊆ gs.spmx ⊦ ( alldisjointp(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf), gstepf(gs, ls, L2, a).gspmx) ∧ gstepf(gs, ls, L2, a).y + (U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ).toMatrix (gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x ) * gstepf(gs, ls, L2, a).x = gstepf(gs, ls, L2, a).spmx.toMatrix(gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) * gstepf(gs, ls, L2, a).x ∧ U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ⊆ gstepf(gs, ls, L2, a).spmx ∧ # gstepf(gs, ls, L2, a).y = gstepf(gs, ls, L2, a).r ∧ okspmx(gstepf(gs, ls, L2, a).spmx, gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x)) ∧ gstepf(gs, ls, L2, a).ghostlspmxf(lstepf(gs, ls, L2, a).tid) = ∅ |
# gs.y = gs.r, gs.y + (U(alltids, gs.ghostlspmxf) ∪ gs.gspmx).toMatrix(gs.r, # gs.x) * gs.x = gs.spmx.toMatrix(gs.r, # gs.x) * gs.x, gs.ghostlspmxf(ls.tid) = ∅, alldisjointp(alltids, gs.ghostlspmxf), disjointp(U(alltids, gs.ghostlspmxf), gs.gspmx), okspmx(gs.spmx, gs.r, # gs.x), U(alltids, gs.ghostlspmxf) ⊆ gs.spmx, gs.gspmx ⊆ gs.spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gs.gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gs.gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf), gstepf(gs, ls, L2, a).gspmx) ∧ gstepf(gs, ls, L2, a).y + (U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ).toMatrix (gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x ) * gstepf(gs, ls, L2, a).x = gstepf(gs, ls, L2, a).spmx.toMatrix(gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) * gstepf(gs, ls, L2, a).x ∧ U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ⊆ gstepf(gs, ls, L2, a).spmx ∧ # gstepf(gs, ls, L2, a).y = gstepf(gs, ls, L2, a).r ∧ okspmx(gstepf(gs, ls, L2, a).spmx, gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) ∧ gstepf(gs, ls, L2, a).ghostlspmxf(lstepf(gs, ls, L2, a).tid) = ∅
Used simplifier rules: pcstepf-L2: ⊦ pcstepf(gs, ls, L2, a) = (∃ lspmx0. a = chooseL2(lspmx0) ⊃ L3;L1); disj-35: ⊦ L1 ≠ L3; pre-L2: ⊦ pre(gs, ls, L2, a) ↔ (∃ lspmx0. (lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gs.gspmx) ∧ a = chooseL2(lspmx0)) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gs.gspmx); ⊦ disjointp(spmx1, spmx2) → (spmx1 ∪ spmx2 ⊆ spmx ↔ spmx1 ⊆ spmx ∧ spmx2 ⊆ spmx); (ws)
| # gs.y = gs.r, gs.y + (U(alltids, gs.ghostlspmxf) ∪ gs.gspmx).toMatrix(gs.r, # gs.x) * gs.x = gs.spmx.toMatrix(gs.r, # gs.x) * gs.x, gs.ghostlspmxf(ls.tid) = ∅, alldisjointp(alltids, gs.ghostlspmxf), disjointp(U(alltids, gs.ghostlspmxf), gs.gspmx), okspmx(gs.spmx, gs.r, # gs.x), U(alltids, gs.ghostlspmxf) ⊆ gs.spmx, gs.gspmx ⊆ gs.spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gs.gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gs.gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf), gstepf(gs, ls, L2, a).gspmx) ∧ gstepf(gs, ls, L2, a).y + (U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ).toMatrix (gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x ) * gstepf(gs, ls, L2, a).x = gstepf(gs, ls, L2, a).spmx.toMatrix(gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) * gstepf(gs, ls, L2, a).x ∧ U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ⊆ gstepf(gs, ls, L2, a).spmx ∧ # gstepf(gs, ls, L2, a).y = gstepf(gs, ls, L2, a).r ∧ okspmx(gstepf(gs, ls, L2, a).spmx, gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) ∧ gstepf(gs, ls, L2, a).ghostlspmxf(lstepf(gs, ls, L2, a).tid) = ∅ |
⊦ ((((spmx = gs.spmx ∧ gspmx = gs.gspmx) ∧ r = gs.r) ∧ x = gs.x) ∧ y = gs.y) ∧ ghostlspmxf = gs.ghostlspmxf ↔ gs = mkgs(spmx, gspmx, r, x, y, ghostlspmxf)
# y = r, y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(r, # x) * x = spmx.toMatrix(r, # x) * x, ghostlspmxf(ls.tid) = ∅, gs = mkgs(spmx, gspmx, r, x, y, ghostlspmxf), alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, r, # x), gspmx ⊆ spmx, U(alltids, ghostlspmxf) ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf), gstepf(gs, ls, L2, a).gspmx) ∧ gstepf(gs, ls, L2, a).y + (U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ).toMatrix (gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x ) * gstepf(gs, ls, L2, a).x = gstepf(gs, ls, L2, a).spmx.toMatrix(gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) * gstepf(gs, ls, L2, a).x ∧ U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ⊆ gstepf(gs, ls, L2, a).spmx ∧ # gstepf(gs, ls, L2, a).y = gstepf(gs, ls, L2, a).r ∧ okspmx(gstepf(gs, ls, L2, a).spmx, gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) ∧ gstepf(gs, ls, L2, a).ghostlspmxf(lstepf(gs, ls, L2, a).tid) = ∅
Used terms: y, gs, gspmx, ghostlspmxf, spmx, r, x
| ⊦ ((((spmx = gs.spmx ∧ gspmx = gs.gspmx) ∧ r = gs.r) ∧ x = gs.x) ∧ y = gs.y) ∧ ghostlspmxf = gs.ghostlspmxf ↔ gs = mkgs(spmx, gspmx, r, x, y, ghostlspmxf) |
| # y = r, y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(r, # x) * x = spmx.toMatrix(r, # x) * x, ghostlspmxf(ls.tid) = ∅, gs = mkgs(spmx, gspmx, r, x, y, ghostlspmxf), alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, r, # x), gspmx ⊆ spmx, U(alltids, ghostlspmxf) ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf), gstepf(gs, ls, L2, a).gspmx) ∧ gstepf(gs, ls, L2, a).y + (U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ).toMatrix (gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x ) * gstepf(gs, ls, L2, a).x = gstepf(gs, ls, L2, a).spmx.toMatrix(gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) * gstepf(gs, ls, L2, a).x ∧ U(alltids, gstepf(gs, ls, L2, a).ghostlspmxf) ∪ gstepf(gs, ls, L2, a).gspmx ⊆ gstepf(gs, ls, L2, a).spmx ∧ # gstepf(gs, ls, L2, a).y = gstepf(gs, ls, L2, a).r ∧ okspmx(gstepf(gs, ls, L2, a).spmx, gstepf(gs, ls, L2, a).r, # gstepf(gs, ls, L2, a).x) ∧ gstepf(gs, ls, L2, a).ghostlspmxf(lstepf(gs, ls, L2, a).tid) = ∅ |
y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(# y, # x) * x = spmx.toMatrix(# y, # x) * x, ghostlspmxf(ls.tid) = ∅, alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, # y, # x), U(alltids, ghostlspmxf) ⊆ spmx, gspmx ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf) ∧ disjointp (U(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf), gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).gspmx) ∧ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).y + ( U(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf) ∪ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).gspmx ).toMatrix (gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r, # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x ) * gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x = gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).spmx .toMatrix (gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r, # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x ) * gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x ∧ U(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf) ∪ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).gspmx ⊆ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).spmx ∧ # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).y = gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r ∧ okspmx (gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).spmx, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r, # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x) ∧ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf (lstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).tid) = ∅
| y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(# y, # x) * x = spmx.toMatrix(# y, # x) * x, ghostlspmxf(ls.tid) = ∅, alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, # y, # x), U(alltids, ghostlspmxf) ⊆ spmx, gspmx ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf) ∧ disjointp (U(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf), gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).gspmx) ∧ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).y + ( U(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf) ∪ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).gspmx ).toMatrix (gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r, # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x ) * gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x = gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).spmx .toMatrix (gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r, # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x ) * gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x ∧ U(alltids, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf) ∪ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).gspmx ⊆ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).spmx ∧ # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).y = gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r ∧ okspmx (gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).spmx, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).r, # gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).x) ∧ gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).ghostlspmxf (lstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).tid) = ∅ |
⊦ ((((spmx = gs.spmx ∧ gspmx = gs.gspmx) ∧ r = gs.r) ∧ x = gs.x) ∧ y = gs.y) ∧ ghostlspmxf = gs.ghostlspmxf ↔ gs = mkgs(spmx, gspmx, r, x, y, ghostlspmxf)
y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(# y, # x) * x = spmx.toMatrix(# y, # x) * x, ghostlspmxf(ls.tid) = ∅, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a) = mkgs(spmx0, gspmx0, r, x0, y0, ghostlspmxf0), alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, # y, # x), gspmx ⊆ spmx, U(alltids, ghostlspmxf) ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, ghostlspmxf0) ∧ disjointp(U(alltids, ghostlspmxf0), gspmx0) ∧ y0 + (U(alltids, ghostlspmxf0) ∪ gspmx0).toMatrix(r, # x0) * x0 = spmx0.toMatrix(r, # x0) * x0 ∧ U(alltids, ghostlspmxf0) ∪ gspmx0 ⊆ spmx0 ∧ # y0 = r ∧ okspmx(spmx0, r, # x0) ∧ ghostlspmxf0(lstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).tid) = ∅
Used terms: y0, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a), gspmx0, ghostlspmxf0, spmx0, r, x0
| ⊦ ((((spmx = gs.spmx ∧ gspmx = gs.gspmx) ∧ r = gs.r) ∧ x = gs.x) ∧ y = gs.y) ∧ ghostlspmxf = gs.ghostlspmxf ↔ gs = mkgs(spmx, gspmx, r, x, y, ghostlspmxf) |
| y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(# y, # x) * x = spmx.toMatrix(# y, # x) * x, ghostlspmxf(ls.tid) = ∅, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a) = mkgs(spmx0, gspmx0, r, x0, y0, ghostlspmxf0), alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, # y, # x), gspmx ⊆ spmx, U(alltids, ghostlspmxf) ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, ghostlspmxf0) ∧ disjointp(U(alltids, ghostlspmxf0), gspmx0) ∧ y0 + (U(alltids, ghostlspmxf0) ∪ gspmx0).toMatrix(r, # x0) * x0 = spmx0.toMatrix(r, # x0) * x0 ∧ U(alltids, ghostlspmxf0) ∪ gspmx0 ⊆ spmx0 ∧ # y0 = r ∧ okspmx(spmx0, r, # x0) ∧ ghostlspmxf0(lstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).tid) = ∅ |
y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(# y, # x) * x = spmx.toMatrix(# y, # x) * x, ghostlspmxf(ls.tid) = ∅, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a) = mkgs(spmx0, gspmx0, r, x0, y0, ghostlspmxf0), alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, # y, # x), U(alltids, ghostlspmxf) ⊆ spmx, gspmx ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, ghostlspmxf0) ∧ disjointp(U(alltids, ghostlspmxf0), gspmx0) ∧ y0 + (U(alltids, ghostlspmxf0) ∪ gspmx0).toMatrix(# y0, # x0) * x0 = spmx0.toMatrix(# y0, # x0) * x0 ∧ U(alltids, ghostlspmxf0) ∪ gspmx0 ⊆ spmx0 ∧ # y0 = r ∧ okspmx(spmx0, # y0, # x0) ∧ ghostlspmxf0(lstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).tid) = ∅
| y + (U(alltids, ghostlspmxf) ∪ gspmx).toMatrix(# y, # x) * x = spmx.toMatrix(# y, # x) * x, ghostlspmxf(ls.tid) = ∅, gstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a) = mkgs(spmx0, gspmx0, r, x0, y0, ghostlspmxf0), alldisjointp(alltids, ghostlspmxf), disjointp(U(alltids, ghostlspmxf), gspmx), okspmx(spmx, # y, # x), U(alltids, ghostlspmxf) ⊆ spmx, gspmx ⊆ spmx, lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx ∧ a = chooseL2(lspmx0) ∨ a = τ ∧ ¬(∃ lspmx0. lspmx0 ≠ ∅ ∧ lspmx0 ⊆ gspmx) ⊦ ∃ lspmx0. a = chooseL2(lspmx0), alldisjointp(alltids, ghostlspmxf0) ∧ disjointp(U(alltids, ghostlspmxf0), gspmx0) ∧ y0 + (U(alltids, ghostlspmxf0) ∪ gspmx0).toMatrix(# y0, # x0) * x0 = spmx0.toMatrix(# y0, # x0) * x0 ∧ U(alltids, ghostlspmxf0) ∪ gspmx0 ⊆ spmx0 ∧ # y0 = r ∧ okspmx(spmx0, # y0, # x0) ∧ ghostlspmxf0(lstepf(mkgs(spmx, gspmx, # y, x, y, ghostlspmxf), ls, L2, a).tid) = ∅ |
Used simplifier rules: gstepf-L2-1: ⊦ gstepf(gs, ls, L2, chooseL2(lspmx0)) = (gs.gspmx:= (gs.gspmx \ dom (ls.lspmx:= lspmx0).lspmx)) .ghostlspmxf:= gs.ghostlspmxf((ls.lspmx:= lspmx0).tid; (ls.lspmx:= lspmx0).lspmx); sel-12: ⊦ mkgs(spmx, spmx0, r, x, x0, ghostlspmxf).gspmx = spmx0; upd-08: ⊦ mkgs(spmx, spmx0, r, x, x0, ghostlspmxf).gspmx:= spmx2 = mkgs(spmx, spmx2, r, x, x0, ghostlspmxf); sel-16: ⊦ mkgs(spmx, spmx0, r, x, x0, ghostlspmxf).ghostlspmxf = ghostlspmxf; updsel-14: ⊦ (ls.lspmx:= lspmx).lspmx = lspmx; upd-12: ⊦ mkgs(spmx, spmx0, r, x, x0, ghostlspmxf).ghostlspmxf:= ghostlspmxf0 = mkgs(spmx, spmx0, r, x, x0, ghostlspmxf0); inj-07: ⊦ mkgs(spmx, spmx0, r, x, x0, ghostlspmxf) = mkgs(spmx1, spmx2, r0, x1, x2, ghostlspmxf0) ↔ spmx = spmx1 ∧ spmx0 = spmx2 ∧ r = r0 ∧ x = x1 ∧ x0 = x2 ∧ ghostlspmxf = ghostlspmxf0; lstepf-L2-1: ⊦ lstepf(gs, ls, L2, chooseL2(lspmx0)) = ls.lspmx:= lspmx0; updsel-11: ⊦ (ls.lspmx:= lspmx).tid = ls.tid; inj-04: ⊦ chooseL2(lspmx) = chooseL2(lspmx0) ↔ lspmx = lspmx0; gstepf-L2-0: ⊦ gstepf(gs, ls, L2, τ) = gs; inj-07: ⊦ mkgs(spmx, spmx0, r, x, x0, ghostlspmxf) = mkgs(spmx1, spmx2, r0, x1, x2, ghostlspmxf0) ↔ spmx = spmx1 ∧ spmx0 = spmx2 ∧ r = r0 ∧ x = x1 ∧ x0 = x2 ∧ ghostlspmxf = ghostlspmxf0; lstepf-L2-0: ⊦ lstepf(gs, ls, L2, τ) = ls; disj-07: ⊦ τ ≠ chooseL2(lspmx); ⊦ disjointp(spmx1, spmx2) → (spmx1 ∪ spmx2 ⊆ spmx ↔ spmx1 ⊆ spmx ∧ spmx2 ⊆ spmx); (ws)
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.