| ⊦ ( ls.lspmx ≠ ∅ ∧ ( 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) = ls.lspmx) ∧ pre(gs, ls, L4, a) ∧ pcstepf(gs, ls, L4, a) = L5 → lstepf(gs, ls, L4, a).np ∈ lstepf(gs, ls, L4, a).lspmx ∧ ( alldisjointp(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf), gstepf(gs, ls, L4, a).gspmx) ∧ gstepf(gs, ls, L4, a).y + (U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∪ gstepf(gs, ls, L4, a).gspmx ).toMatrix (gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x ) * gstepf(gs, ls, L4, a).x = gstepf(gs, ls, L4, a).spmx.toMatrix(gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x) * gstepf(gs, ls, L4, a).x ∧ U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∪ gstepf(gs, ls, L4, a).gspmx ⊆ gstepf(gs, ls, L4, a).spmx ∧ # gstepf(gs, ls, L4, a).y = gstepf(gs, ls, L4, a).r ∧ okspmx(gstepf(gs, ls, L4, a).spmx, gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x)) ∧ gstepf(gs, ls, L4, a).ghostlspmxf(lstepf(gs, ls, L4, a).tid) = lstepf(gs, ls, L4, a).lspmx |
# 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) = ls.lspmx, pcstepf(gs, ls, L4, a) = L5, ls.lspmx ≠ ∅, alldisjointp(alltids, gs.ghostlspmxf), disjointp(U(alltids, gs.ghostlspmxf), gs.gspmx), okspmx(gs.spmx, gs.r, # gs.x), pre(gs, ls, L4, a), U(alltids, gs.ghostlspmxf) ∪ gs.gspmx ⊆ gs.spmx ⊦ lstepf(gs, ls, L4, a).np ∈ lstepf(gs, ls, L4, a).lspmx ∧ ( alldisjointp(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf), gstepf(gs, ls, L4, a).gspmx) ∧ gstepf(gs, ls, L4, a).y + (U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∪ gstepf(gs, ls, L4, a).gspmx ).toMatrix (gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x ) * gstepf(gs, ls, L4, a).x = gstepf(gs, ls, L4, a).spmx.toMatrix(gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x) * gstepf(gs, ls, L4, a).x ∧ U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∪ gstepf(gs, ls, L4, a).gspmx ⊆ gstepf(gs, ls, L4, a).spmx ∧ # gstepf(gs, ls, L4, a).y = gstepf(gs, ls, L4, a).r ∧ okspmx(gstepf(gs, ls, L4, a).spmx, gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x)) ∧ gstepf(gs, ls, L4, a).ghostlspmxf(lstepf(gs, ls, L4, a).tid) = lstepf(gs, ls, L4, a).lspmx
| # 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) = ls.lspmx, pcstepf(gs, ls, L4, a) = L5, ls.lspmx ≠ ∅, alldisjointp(alltids, gs.ghostlspmxf), disjointp(U(alltids, gs.ghostlspmxf), gs.gspmx), okspmx(gs.spmx, gs.r, # gs.x), pre(gs, ls, L4, a), U(alltids, gs.ghostlspmxf) ∪ gs.gspmx ⊆ gs.spmx ⊦ lstepf(gs, ls, L4, a).np ∈ lstepf(gs, ls, L4, a).lspmx ∧ ( alldisjointp(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∧ disjointp(U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf), gstepf(gs, ls, L4, a).gspmx) ∧ gstepf(gs, ls, L4, a).y + (U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∪ gstepf(gs, ls, L4, a).gspmx ).toMatrix (gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x ) * gstepf(gs, ls, L4, a).x = gstepf(gs, ls, L4, a).spmx.toMatrix(gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x) * gstepf(gs, ls, L4, a).x ∧ U(alltids, gstepf(gs, ls, L4, a).ghostlspmxf) ∪ gstepf(gs, ls, L4, a).gspmx ⊆ gstepf(gs, ls, L4, a).spmx ∧ # gstepf(gs, ls, L4, a).y = gstepf(gs, ls, L4, a).r ∧ okspmx(gstepf(gs, ls, L4, a).spmx, gstepf(gs, ls, L4, a).r, # gstepf(gs, ls, L4, a).x)) ∧ gstepf(gs, ls, L4, a).ghostlspmxf(lstepf(gs, ls, L4, a).tid) = lstepf(gs, ls, L4, a).lspmx |
Used simplifier rules: pcstepf-L4: ⊦ pcstepf(gs, ls, L4, a) = (∃ np0. a = chooseL4(np0) ⊃ L5;L0); disj-26: ⊦ L5 ≠ L0; pre-L4: ⊦ pre(gs, ls, L4, a) ↔ (∃ np0. np0 ∈ ls.lspmx ∧ a = chooseL4(np0)) ∨ a = τ ∧ ¬(∃ np0. np0 ∈ ls.lspmx); gstepf-L4: ⊦ gstepf(gs, ls, L4, a) = gs; inj-03: ⊦ chooseL4(np) = chooseL4(np0) ↔ np = np0; disj-08: ⊦ τ ≠ chooseL4(np); updsel-18: ⊦ (ls.np:= np).np = np; updsel-12: ⊦ (ls.np:= np).tid = ls.tid; lstepf-L4-0: ⊦ lstepf(gs, ls, L4, chooseL4(np0)) = ls.np:= np0; updsel-15: ⊦ (ls.np:= np).lspmx = ls.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.