| zh[rp] = mkznode(rp0, zbrar, boolvar, dirty, nused), ((btree(null, null, adr, height, false, ri, nodes(istore0), alladrs, alladrs, ok) * true))(zh), ((btree(null, rp, adr, height, false, ri, nodes(istore), alladrs, alladrs, ok) * true))(zh), inv(istore), inv(istore0), refsize-cons(istore0, alladrs), refsize-cons(istore, alladrs), adr ∈ istore, alladrs ⊆ dom nodes(istore0), alladrs ⊆ dom nodes(istore), istore0 ⊑ istore, ¬ dirty ∨ rp = null, rp = null ∨ ¬ dirty ⊦ ((btree(null, null, adr, height, false, ri, nodes(remove-refsize0(istore)), alladrs, alladrs, ok) * true))(zh), nodes(istore) | alladrs ⊆ nodes(remove-refsize0(istore)) ∧ ((btree(null, null, adr, height, false, ri, nodes(istore), alladrs, alladrs, ok) * true))(zh) |
zh[rp] = mkznode(rp0, zbrar, boolvar, dirty, nused), ((btree(null, rp, adr, height, false, ri, nodes(istore), alladrs, alladrs, ok) * true))(zh), ((btree(null, null, adr, height, false, ri, nodes(istore0), alladrs, alladrs, ok) * true))(zh), inv(istore0), inv(istore), refsize-cons(istore, alladrs), refsize-cons(istore0, alladrs), adr ∈ istore, alladrs ⊆ dom nodes(istore), alladrs ⊆ dom nodes(istore0), istore0 ⊑ istore, rp = null ∨ ¬ dirty, ¬ dirty ∨ rp = null ⊦ ((btree(null, null, adr, height, false, ri, nodes(remove-refsize0(istore)), alladrs, alladrs, ok) * true))(zh), nodes(istore) | alladrs ⊆ nodes(remove-refsize0(istore))
Used simplifier rules: btree-reset-root: ⊦ (( btree(rp, r, adr, height, false, ri, iast, as, alladrs, ok) * true) )(zh) → (( btree(rp, null, adr, height, false, ri, iast, as, alladrs, ok) * true) )(zh);%sep-com: ⊦ P * P2 = P2 * P; from specification heap-sep[zheap]%sep-ass: ⊦ (P * P3) * P4 = P * P3 * P4; from specification heap-sep[zheap]