[Imprint][Data Privacy Statement][E-Mail]



View long theorem info. View the proof. Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Proof step 1 from proof step-absstep-I6-I7-doINSERT-other (conclusion) (back to tree)

ls.e = gs.ar[ls.n], # gs.ar ≠ 0 ∧ htok(gs.ar), # gs0.ar ≠ 0 ∧ htok(gs0.ar), lsf(tid) = ls, lsf0(tid) = ls0, alsf(tid) = als, alsf(tid).tid = tid, lsf(tid).tid = tid, ∀ tid0. tid0 ≠ tid → lsf(tid0).tid = tid0, ∀ tid0. tid0 ≠ tid → alsf(tid0).tid = tid0, pcf(tid) = I6, pcf0(tid) = I7, apcf(tid) = apc, allslotsfull(gs.ar, ls.n0, ls.n, ls.e, false) ∧ ls.n < # gs.ar ∧ ls.e ≠ ⊥ ∧ ls.sz = # gs.ar ∧ (ls.n0 < # gs.ar ∧ ls.n0 = get_hash(ls.e, ls.sz)) ∧ ¬ ls.b, (ls0.e0 ≠ ⊥ → ls0.e0 = gs0.ar[ls0.n]) ∧ allslotsfull(gs0.ar, ls0.n0, ls0.n, ls0.e, false) ∧ ls0.n < # gs0.ar ∧ ls0.e ≠ ⊥ ∧ ls0.sz = # gs0.ar ∧ (ls0.n0 < # gs0.ar ∧ ls0.n0 = get_hash(ls0.e, ls0.sz)) ∧ ¬ ls0.b, SetLInv(ags, als, apc), tid ≠ tid0, lsf(tid0).tid = tid0, HashsetLInv(gs, lsf(tid0), pcf(tid0)), HashsetLInv(gs0, lsf(tid0), pcf(tid0)), SetLInv(ags, alsf(tid0), apcf(tid0)), ∀ tid1. tid1 ≠ tid ∧ tid1 ≠ tid0 → HashsetLInv(gs, lsf(tid1), pcf(tid1)) ∧ SetLInv(ags, alsf(tid1), apcf(tid1)) ∧ labs(gs, lsf(tid1), pcf(tid1), ags, alsf(tid1), apcf(tid1)), pre(ags, als, apc, ADoInsert(ls.tid, true)) → ags0 = gstepf(ags, als, apc, ADoInsert(ls.tid, true)) ∧ als0 = lstepf(ags, als, apc, ADoInsert(ls.tid, true)) ∧ apc0 = pcstepf(ags, als, apc, ADoInsert(ls.tid, true)), pre(gs, ls, I6, doINSERT(ls.tid, true)) ∧ gs0 = gstepf(gs, ls, I6, doINSERT(ls.tid, true)) ∧ ls0 = lstepf(gs, ls, I6, doINSERT(ls.tid, true)) ∧ I7 = pcstepf(gs, ls, I6, doINSERT(ls.tid, true)), absset(gs.ar, ags.set), ls.tid = als.tid ∧ apc = invInsert ∧ (apc = invMember ∨ apc = invInsert → ls.e = als.le), lsf(tid0).tid = alsf(tid0).tid ∧ (pcf(tid0) = idle → apcf(tid0) = idle) ∧ ( pcf(tid0) = I1 ∨ pcf(tid0) = I2 ∨ pcf(tid0) = I3 ∨ pcf(tid0) = I4 ∨ pcf(tid0) = I6 ∨ pcf(tid0) = I10 ∨ pcf(tid0) = I11 ∨ pcf(tid0) = I12 ∨ pcf(tid0) = I16 ∨ pcf(tid0) = I17 ∨ pcf(tid0) = I18 ∨ pcf(tid0) = I20 → apcf(tid0) = invInsert) ∧ (pcf(tid0) = I5 → apcf(tid0) = (lsf(tid0).b ⊃ retInsert;invInsert)) ∧ (pcf(tid0) = I7 ∨ pcf(tid0) = I13 → apcf(tid0) = (lsf(tid0).e = lsf(tid0).e0 ⊃ retInsert;invInsert)) ∧ (pcf(tid0) = I8 → apcf(tid0) = retInsert) ∧ (pcf(tid0) = I9 ∨ pcf(tid0) = I14 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 ∨ pcf(tid0) = I21 → apcf(tid0) = retInsert) ∧ (pcf(tid0) = I7 ∨ pcf(tid0) = I8 ∨ pcf(tid0) = I13 ∨ pcf(tid0) = I14 → lsf(tid0).e = lsf(tid0).e0 → alsf(tid0).lb) ∧ (pcf(tid0) = I9 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 → (alsf(tid0).lb ↔ lsf(tid0).b)) ∧ (pcf(tid0) = I5 → lsf(tid0).b → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = I21 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M1 ∨ pcf(tid0) = M2 ∨ pcf(tid0) = M3 ∨ pcf(tid0) = M4 ∨ pcf(tid0) = M5 ∨ pcf(tid0) = M6 ∨ pcf(tid0) = M17 → apcf(tid0) = invMember) ∧ ( pcf(tid0) = M7 → apcf(tid0) = (lsf(tid0).e0 ≠ lsf(tid0).e ∧ lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M10 → apcf(tid0) = (lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M13 → apcf(tid0) = ((lsf(tid0).n + 1) % # gs.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M14 → apcf(tid0) = (lsf(tid0).n ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M8 ∨ pcf(tid0) = M9 ∨ pcf(tid0) = M11 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M15 ∨ pcf(tid0) = M16 → apcf(tid0) = retMember) ∧ ( pcf(tid0) = M7 → lsf(tid0).e0 = lsf(tid0).e ∨ lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs.ar = lsf(tid0).n0 → (lsf(tid0).e = lsf(tid0).e0 ↔ alsf(tid0).lb)) ∧ (pcf(tid0) = M10 → lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M13 → (lsf(tid0).n + 1) % # gs.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M14 → lsf(tid0).n = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M9 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M16 → (alsf(tid0).lb ↔ lsf(tid0).b)) ∧ (pcf(tid0) = M11 ∨ pcf(tid0) = M15 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M8 → alsf(tid0).lb) ∧ (apcf(tid0) = invMember ∨ apcf(tid0) = invInsert → lsf(tid0).e = alsf(tid0).le) ⊦ lsf(tid0).tid = alsf(tid0).tid ∧ (pcf(tid0) = idle → apcf(tid0) = idle) ∧ ( pcf(tid0) = I1 ∨ pcf(tid0) = I2 ∨ pcf(tid0) = I3 ∨ pcf(tid0) = I4 ∨ pcf(tid0) = I6 ∨ pcf(tid0) = I10 ∨ pcf(tid0) = I11 ∨ pcf(tid0) = I12 ∨ pcf(tid0) = I16 ∨ pcf(tid0) = I17 ∨ pcf(tid0) = I18 ∨ pcf(tid0) = I20 → apcf(tid0) = invInsert) ∧ (pcf(tid0) = I5 → apcf(tid0) = (lsf(tid0).b ⊃ retInsert;invInsert)) ∧ (pcf(tid0) = I7 ∨ pcf(tid0) = I13 → apcf(tid0) = (lsf(tid0).e = lsf(tid0).e0 ⊃ retInsert;invInsert)) ∧ (pcf(tid0) = I8 → apcf(tid0) = retInsert) ∧ (pcf(tid0) = I9 ∨ pcf(tid0) = I14 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 ∨ pcf(tid0) = I21 → apcf(tid0) = retInsert) ∧ (pcf(tid0) = I7 ∨ pcf(tid0) = I8 ∨ pcf(tid0) = I13 ∨ pcf(tid0) = I14 → lsf(tid0).e = lsf(tid0).e0 → alsf(tid0).lb) ∧ (pcf(tid0) = I9 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 → (alsf(tid0).lb ↔ lsf(tid0).b)) ∧ (pcf(tid0) = I5 → lsf(tid0).b → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = I21 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M1 ∨ pcf(tid0) = M2 ∨ pcf(tid0) = M3 ∨ pcf(tid0) = M4 ∨ pcf(tid0) = M5 ∨ pcf(tid0) = M6 ∨ pcf(tid0) = M17 → apcf(tid0) = invMember) ∧ ( pcf(tid0) = M7 → apcf(tid0) = (lsf(tid0).e0 ≠ lsf(tid0).e ∧ lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs0.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M10 → apcf(tid0) = (lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs0.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M13 → apcf(tid0) = ((lsf(tid0).n + 1) % # gs0.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M14 → apcf(tid0) = (lsf(tid0).n ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M8 ∨ pcf(tid0) = M9 ∨ pcf(tid0) = M11 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M15 ∨ pcf(tid0) = M16 → apcf(tid0) = retMember) ∧ ( pcf(tid0) = M7 → lsf(tid0).e0 = lsf(tid0).e ∨ lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs0.ar = lsf(tid0).n0 → (lsf(tid0).e = lsf(tid0).e0 ↔ alsf(tid0).lb)) ∧ (pcf(tid0) = M10 → lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs0.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M13 → (lsf(tid0).n + 1) % # gs0.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M14 → lsf(tid0).n = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M9 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M16 → (alsf(tid0).lb ↔ lsf(tid0).b)) ∧ (pcf(tid0) = M11 ∨ pcf(tid0) = M15 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M8 → alsf(tid0).lb) ∧ (apcf(tid0) = invMember ∨ apcf(tid0) = invInsert → lsf(tid0).e = alsf(tid0).le)

System applied rule normalize

And obtained the following new goals

Rule argument

Additional information

Proof step 2 from proof step-absstep-I6-I7-doINSERT-other (previous step) (back to tree)

ls.e = gs.ar[ls.n], ls0.n0 = get_hash(ls0.e, ls0.sz), ls.n0 = get_hash(ls.e, ls.sz), ls0.sz = # gs0.ar, ls.sz = # gs.ar, lsf(tid0).tid = alsf(tid0).tid, ls.tid = als.tid, lsf(tid0).tid = tid0, lsf(tid).tid = tid, alsf(tid).tid = tid, I7 = pcstepf(gs, ls, I6, doINSERT(ls.tid, true)), alsf(tid) = als, apc = invInsert, apcf(tid) = apc, gs0 = gstepf(gs, ls, I6, doINSERT(ls.tid, true)), ls0 = lstepf(gs, ls, I6, doINSERT(ls.tid, true)), lsf(tid) = ls, lsf0(tid) = ls0, pcf(tid) = I6, pcf0(tid) = I7, # gs.ar ≠ 0, # gs0.ar ≠ 0, ls.e ≠ ⊥, ls0.e ≠ ⊥, tid ≠ tid0, ls0.n < # gs0.ar, ls0.n0 < # gs0.ar, ls.n < # gs.ar, ls.n0 < # gs.ar, HashsetLInv(gs0, lsf(tid0), pcf(tid0)), HashsetLInv(gs, lsf(tid0), pcf(tid0)), SetLInv(ags, alsf(tid0), apcf(tid0)), SetLInv(ags, als, apc), absset(gs.ar, ags.set), allslotsfull(gs0.ar, ls0.n0, ls0.n, ls0.e, false), allslotsfull(gs.ar, ls.n0, ls.n, ls.e, false), htok(gs0.ar), htok(gs.ar), pre(gs, ls, I6, doINSERT(ls.tid, true)), ¬ ls.b, ¬ ls0.b, pcf(tid0) = idle → apcf(tid0) = idle, pcf(tid0) = I1 ∨ pcf(tid0) = I2 ∨ pcf(tid0) = I3 ∨ pcf(tid0) = I4 ∨ pcf(tid0) = I6 ∨ pcf(tid0) = I10 ∨ pcf(tid0) = I11 ∨ pcf(tid0) = I12 ∨ pcf(tid0) = I16 ∨ pcf(tid0) = I17 ∨ pcf(tid0) = I18 ∨ pcf(tid0) = I20 → apcf(tid0) = invInsert, pcf(tid0) = I5 → apcf(tid0) = (lsf(tid0).b ⊃ retInsert;invInsert), pcf(tid0) = I7 ∨ pcf(tid0) = I13 → apcf(tid0) = (lsf(tid0).e = lsf(tid0).e0 ⊃ retInsert;invInsert), pcf(tid0) = I8 → apcf(tid0) = retInsert, pcf(tid0) = I9 ∨ pcf(tid0) = I14 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 ∨ pcf(tid0) = I21 → apcf(tid0) = retInsert, pcf(tid0) = I7 ∨ pcf(tid0) = I8 ∨ pcf(tid0) = I13 ∨ pcf(tid0) = I14 → lsf(tid0).e = lsf(tid0).e0 → alsf(tid0).lb, pcf(tid0) = I9 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 → (alsf(tid0).lb ↔ lsf(tid0).b), pcf(tid0) = I5 → lsf(tid0).b → ¬ alsf(tid0).lb, pcf(tid0) = I21 → ¬ alsf(tid0).lb, pcf(tid0) = M1 ∨ pcf(tid0) = M2 ∨ pcf(tid0) = M3 ∨ pcf(tid0) = M4 ∨ pcf(tid0) = M5 ∨ pcf(tid0) = M6 ∨ pcf(tid0) = M17 → apcf(tid0) = invMember, pcf(tid0) = M7 → apcf(tid0) = (lsf(tid0).e0 ≠ lsf(tid0).e ∧ lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember), pcf(tid0) = M10 → apcf(tid0) = (lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember), pcf(tid0) = M13 → apcf(tid0) = ((lsf(tid0).n + 1) % # gs.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember), pcf(tid0) = M14 → apcf(tid0) = (lsf(tid0).n ≠ lsf(tid0).n0 ⊃ invMember;retMember), pcf(tid0) = M8 ∨ pcf(tid0) = M9 ∨ pcf(tid0) = M11 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M15 ∨ pcf(tid0) = M16 → apcf(tid0) = retMember, pcf(tid0) = M7 → lsf(tid0).e0 = lsf(tid0).e ∨ lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs.ar = lsf(tid0).n0 → (lsf(tid0).e = lsf(tid0).e0 ↔ alsf(tid0).lb), pcf(tid0) = M10 → lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb, pcf(tid0) = M13 → (lsf(tid0).n + 1) % # gs.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb, pcf(tid0) = M14 → lsf(tid0).n = lsf(tid0).n0 → ¬ alsf(tid0).lb, pcf(tid0) = M9 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M16 → (alsf(tid0).lb ↔ lsf(tid0).b), pcf(tid0) = M11 ∨ pcf(tid0) = M15 → ¬ alsf(tid0).lb, pcf(tid0) = M8 → alsf(tid0).lb, apcf(tid0) = invMember ∨ apcf(tid0) = invInsert → lsf(tid0).e = alsf(tid0).le, apc = invMember ∨ apc = invInsert → ls.e = als.le, pre(ags, als, apc, ADoInsert(ls.tid, true)) → ags0 = gstepf(ags, als, apc, ADoInsert(ls.tid, true)) ∧ als0 = lstepf(ags, als, apc, ADoInsert(ls.tid, true)) ∧ apc0 = pcstepf(ags, als, apc, ADoInsert(ls.tid, true)), ls0.e0 ≠ ⊥ → ls0.e0 = gs0.ar[ls0.n], ∀ tid1. tid1 ≠ tid ∧ tid1 ≠ tid0 → HashsetLInv(gs, lsf(tid1), pcf(tid1)) ∧ SetLInv(ags, alsf(tid1), apcf(tid1)) ∧ labs(gs, lsf(tid1), pcf(tid1), ags, alsf(tid1), apcf(tid1)), ∀ tid0. tid0 ≠ tid → alsf(tid0).tid = tid0, ∀ tid0. tid0 ≠ tid → lsf(tid0).tid = tid0 ⊦ lsf(tid0).tid = alsf(tid0).tid ∧ (pcf(tid0) = idle → apcf(tid0) = idle) ∧ ( pcf(tid0) = I1 ∨ pcf(tid0) = I2 ∨ pcf(tid0) = I3 ∨ pcf(tid0) = I4 ∨ pcf(tid0) = I6 ∨ pcf(tid0) = I10 ∨ pcf(tid0) = I11 ∨ pcf(tid0) = I12 ∨ pcf(tid0) = I16 ∨ pcf(tid0) = I17 ∨ pcf(tid0) = I18 ∨ pcf(tid0) = I20 → apcf(tid0) = invInsert) ∧ (pcf(tid0) = I5 → apcf(tid0) = (lsf(tid0).b ⊃ retInsert;invInsert)) ∧ (pcf(tid0) = I7 ∨ pcf(tid0) = I13 → apcf(tid0) = (lsf(tid0).e = lsf(tid0).e0 ⊃ retInsert;invInsert)) ∧ (pcf(tid0) = I8 → apcf(tid0) = retInsert) ∧ (pcf(tid0) = I9 ∨ pcf(tid0) = I14 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 ∨ pcf(tid0) = I21 → apcf(tid0) = retInsert) ∧ (pcf(tid0) = I7 ∨ pcf(tid0) = I8 ∨ pcf(tid0) = I13 ∨ pcf(tid0) = I14 → lsf(tid0).e = lsf(tid0).e0 → alsf(tid0).lb) ∧ (pcf(tid0) = I9 ∨ pcf(tid0) = I15 ∨ pcf(tid0) = I19 → (alsf(tid0).lb ↔ lsf(tid0).b)) ∧ (pcf(tid0) = I5 → lsf(tid0).b → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = I21 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M1 ∨ pcf(tid0) = M2 ∨ pcf(tid0) = M3 ∨ pcf(tid0) = M4 ∨ pcf(tid0) = M5 ∨ pcf(tid0) = M6 ∨ pcf(tid0) = M17 → apcf(tid0) = invMember) ∧ ( pcf(tid0) = M7 → apcf(tid0) = (lsf(tid0).e0 ≠ lsf(tid0).e ∧ lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs0.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M10 → apcf(tid0) = (lsf(tid0).e0 ≠ ⊥ ∧ (lsf(tid0).n + 1) % # gs0.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M13 → apcf(tid0) = ((lsf(tid0).n + 1) % # gs0.ar ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M14 → apcf(tid0) = (lsf(tid0).n ≠ lsf(tid0).n0 ⊃ invMember;retMember)) ∧ (pcf(tid0) = M8 ∨ pcf(tid0) = M9 ∨ pcf(tid0) = M11 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M15 ∨ pcf(tid0) = M16 → apcf(tid0) = retMember) ∧ ( pcf(tid0) = M7 → lsf(tid0).e0 = lsf(tid0).e ∨ lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs0.ar = lsf(tid0).n0 → (lsf(tid0).e = lsf(tid0).e0 ↔ alsf(tid0).lb)) ∧ (pcf(tid0) = M10 → lsf(tid0).e0 = ⊥ ∨ (lsf(tid0).n + 1) % # gs0.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M13 → (lsf(tid0).n + 1) % # gs0.ar = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M14 → lsf(tid0).n = lsf(tid0).n0 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M9 ∨ pcf(tid0) = M12 ∨ pcf(tid0) = M16 → (alsf(tid0).lb ↔ lsf(tid0).b)) ∧ (pcf(tid0) = M11 ∨ pcf(tid0) = M15 → ¬ alsf(tid0).lb) ∧ (pcf(tid0) = M8 → alsf(tid0).lb) ∧ (apcf(tid0) = invMember ∨ apcf(tid0) = invInsert → lsf(tid0).e = alsf(tid0).le)

Heuristic simplifier applied rule simplifier

And closed the goal!

Rule argument

Additional information

Used simplifier rules: ⊦ gstepf(gs, ls, I6, a) = gs; (s) ⊦ doINSERT(tid, b) = doINSERT(tid0, b0) ↔ tid = tid0 ∧ (b ↔ b0); (ws) ⊦ pre(gs, ls, I6, a) ↔ a = (ls.e = gs.ar[ls.n] ⊃ doINSERT(ls.tid, true);τ); (s) ⊦ m < n → n ≠ 0; (s) ⊦ pcstepf(gs, ls, I6, a) = I7; (s) ⊦ lstepf(gs, ls, I6, a) = ls.e0:= gs.ar[ls.n]; (s)

Proof Tree for step-absstep-I6-I7-doINSERT-other (View conclusion)

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.

the proof tree