| ((btree(rp, rp0, adr, height0 +1, dirty, ri1, iast, as1, alladrs1, ok) * P1))(zh), ((btree(rp, rp0, adr, height0 +1, dirty, ri0, iast, as0, alladrs0, ok) * P0))(zh), as1 ⊆ dom iast, as1 ⊆ alladrs1, as0 ⊆ dom iast, as0 ⊆ alladrs0, ∀ rp, rp0, adr, dirty, ri0, iast, as0, alladrs0, P0, zh, ri1, as1, alladrs1, P1. ((btree(rp, rp0, adr, height0, dirty, ri0, iast, as0, alladrs0, ok) * P0))(zh) ∧ ((btree(rp, rp0, adr, height0, dirty, ri1, iast, as1, alladrs1, ok) * P1))(zh) ∧ as0 ⊆ alladrs0 ∧ as0 ⊆ dom iast ∧ as1 ⊆ alladrs1 ∧ as1 ⊆ dom iast → ri0 = ri1 ∨ rp0 = null ⊦ ri0 = ri1, rp0 = null |
((btree(rp, rp0, adr, height0 + 1, dirty, ri1, iast, as1, alladrs1, ok) * P1))(zh), ((btree(rp, rp0, adr, height0 + 1, dirty, ri0, iast, as0, alladrs0, ok) * P0))(zh), rp0 ∈ zh, as1 ⊆ dom iast, as1 ⊆ alladrs1, as0 ⊆ dom iast, as0 ⊆ alladrs0, ∀ rp, rp0, adr, dirty, ri0, iast, as0, alladrs0, P0, zh, ri1, as1, alladrs1, P1. ((btree(rp, rp0, adr, height0, dirty, ri0, iast, as0, alladrs0, ok) * P0))(zh) ∧ ((btree(rp, rp0, adr, height0, dirty, ri1, iast, as1, alladrs1, ok) * P1))(zh) ∧ as0 ⊆ alladrs0 ∧ as0 ⊆ dom iast ∧ as1 ⊆ alladrs1 ∧ as1 ⊆ dom iast → ri0 = ri1 ∨ rp0 = null ⊦ ri0 = ri1
Used simplifier rules: btree-root-in-heap: ⊦ r ≠ null ∧ (( btree (rp, r, adr, height, dirty, fi, iast, as, alladrs, nstat) * P) )(zh) → r ∈ zh;% ⊦ r ∈ zh → r ≠ null; (s)%sep-com: ⊦ P * P2 = P2 * P; from specification heap-sep[zheap]%sep-ass: ⊦ (P * P3) * P4 = P * P3 * P4; from specification heap-sep[zheap]% ⊦ m +1 = m + 1; (s)