| 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, height0, false, fi, nodes(istore0), alladrs0, alladrs0, ok) * true))(zh), inv(istore), inv(istore0), refsize-cons(istore0, alladrs0), refsize-cons(istore, alladrs), adr ∈ istore, nodes(istore) | alladrs ⊆ nodes(remove-refsize0(istore)), alladrs0 ⊆ dom nodes(istore), alladrs ⊆ dom nodes(istore), alladrs0 ⊆ dom nodes(istore0), istore0 ⊑ istore, ¬ dirty ∨ rp = null, rp = null ∨ ¬ dirty ⊦ adr ∈ remove-refsize0(istore), adr ∈ alladrs |
⊦ ((btree(rp, r0, adr, height, dirty0, ri, iast, as, alladrs, nstat) * P))(zh0) ↔ (∃ r, zh, zbrar, dirty, nused. (r0 = null ⊃ ¬ dirty ∧ P(zh0);r = r0 ∧ zh = zh0) ∧ (dirty → dirty0) ∧ (adr ∈ as ↔ ¬ dirty) ∧ adr ∈ alladrs ∧ nsize(nused, nstat) ∧ unmodified(adr, mkznode(rp, zbrar, height = 0, dirty, nused), iast) ∧ (( r => mkznode(rp, zbrar, height = 0, dirty, nused) * bnode(r, zbrar, 0, nused, nused, height, dirty, ri, iast, as -- adr, alladrs -- adr) * P) )(zh))
Used terms: zh, true, ok, alladrs, alladrs, nodes(istore), ri, false, height, adr, rp, null