| # zbrar = BRANCH_SIZE, as -- adr0 = ∅, adr0 ∈ as ↔ ¬ dirty0, ((P * r0 => mkznode(rp, zbrar, true, dirty0, nused)))(zh0), nsize(nused, nstat), sorted(zbrar, 0, nused), unmodified(adr0, mkznode(rp, zbrar, true, dirty0, nused), iast[adr, ind]), nused ≤ BRANCH_SIZE, dirty0 → dirty, (r = null ⊃ adr0 ∈ as ∧ P(zh);r0 = r ∧ zh0 = zh) ⊦ adr ∈ as, ∃ r1, zh1, zbrar0, dirty1, nused0. (r = null ⊃ ¬ dirty1 ∧ P(zh);r1 = r ∧ zh1 = zh) ∧ (dirty1 → dirty) ∧ (adr0 ∈ as ↔ ¬ dirty1) ∧ nsize(nused0, nstat) ∧ unmodified(adr0, mkznode(rp, zbrar0, true, dirty1, nused0), iast) ∧ nused0 ≤ # zbrar0 ∧ # zbrar0 = BRANCH_SIZE ∧ sorted(zbrar0, 0, nused0) ∧ payload(zbrar, 0, nused) = payload(zbrar0, 0, nused0) ∧ ((P * r1 => mkznode(rp, zbrar0, true, dirty1, nused0)))(zh1) |
Used simplifier rules: ⊦ unmodified (adr0, mkznode(rp0, zbrar, boolvar, true, height), iast[adr, ind]) ↔ unmodified(adr0, mkznode(rp0, zbrar, boolvar, true, height), iast); (s)% ⊦ unmodified(adr, mkznode(rp, zbrar, bv, true, nused), iast); (s)%adr ≠ adr0 ⊦ unmodified(adr0, znd, iast[adr, ind]) ↔ unmodified(adr0, znd, iast); (s) Used terms: r0, zh0, zbrar, dirty0, nused