| zh[r] = mkznode(rp0, zbrar, boolvar, false, height0), ((btree(rp, r, adr, height, false, ri, iast, alladrs, alladrs, nstat) * P))(zh), r ∈ zh, adr ∈ alladrs, adr ∈ iast, alladrs ⊆ dom iast, height = 0 → alladrs = ∅ ++ adr ⊦ # alladrs = 0, alladrs = ∅, ((btree(rp, r, adr, height, true, ri, iast, alladrs -- adr, alladrs, nstat) * P))(zh[r, mkznode(rp0, zbrar, boolvar, true, height0)]) |
zh[r] = mkznode(rp0, zbrar, boolvar, false, height0), ((btree(rp, r, adr, 0, false, ri, iast, alladrs, alladrs, nstat) * P))(zh), adr ∈ iast, adr ∈ alladrs, r ∈ zh, alladrs ⊆ dom iast, 0 = 0 → alladrs = ∅ ++ adr ⊦ # alladrs = 0, alladrs = ∅, ((btree(rp, r, adr, 0, true, ri, iast, alladrs -- adr, alladrs, nstat) * P))(zh[r, mkznode(rp0, zbrar, boolvar, true, height0)])
zh[r] = mkznode(rp0, zbrar, boolvar, false, height0), ((btree(rp, r, adr, height1 +1, false, ri, iast, alladrs, alladrs, nstat) * P))(zh), adr ∈ iast, adr ∈ alladrs, r ∈ zh, alladrs ⊆ dom iast, height1 +1 = 0 → alladrs = ∅ ++ adr, ∀ zh, r, rp0, zbrar, boolvar, height0, rp, adr, ri, iast, alladrs, nstat, P. zh[r] = mkznode(rp0, zbrar, boolvar, false, height0) ∧ ((btree(rp, r, adr, height1, false, ri, iast, alladrs, alladrs, nstat) * P))(zh) ∧ r ∈ zh ∧ adr ∈ alladrs ∧ adr ∈ iast ∧ alladrs ⊆ dom iast ∧ (height1 = 0 → alladrs = ∅ ++ adr) → # alladrs = 0 ∨ alladrs = ∅ ∨ ((btree(rp, r, adr, height1, true, ri, iast, alladrs -- adr, alladrs, nstat) * P))(zh[r, mkznode(rp0, zbrar, boolvar, true, height0)]) ⊦ # alladrs = 0, alladrs = ∅, ((btree(rp, r, adr, height1 +1, true, ri, iast, alladrs -- adr, alladrs, nstat) * P))(zh[r, mkznode(rp0, zbrar, boolvar, true, height0)])
Used simplifier rules: nat freely generated by 0, +1;;