| zh[rp] = mkznode(r, zbrar, boolvar, boolvar0, m), remove-refsize0(gstore3) = gstore3, remove-refsize0(istore3) = istore3, dom remove-refsize0(gstore4) ∩ ginval0 = ∅, elems nx0 ∩ ginval0 = ∅, dom gstore3 ∪ elems nx0 = dom gstore4 ∪ ginval0, btree-inv(rp, adr3, istore4, istore3, zh, ri, fi), inv(remove-refsize0(gstore4)), inv(gstore4 \ ginval0), inv(gstore3), inv(istore4), inv(istore3), inv(remove-refsize0(istore4)), istore3 ⊑ istore4 ⊦ btree-inv(rp, adr3, remove-refsize0(istore4), remove-refsize0(istore4), zh, ri, ri), dups(nx0), rp ≠ null ∧ boolvar0, (¬ boolvar0 ∨ rp = null) ∧ btree-inv(rp, adr3, istore4, istore4, zh, ri, ri) |
⊦ (rp = null ∨ ¬ zh[rp].dirty) ∧ istore0 ⊑ istore ∧ btree-inv(rp, adr, istore, istore0, zh, ri, fi) → btree-inv(rp, adr, istore, istore, zh, ri, ri)
Used simplifier rules: btree-inv-root-neq-null-fwd: ⊦ rp ≠ null ∧ btree-inv(rp, adr, istore, istore0, zh, fi, fi0) → rp ∈ zh; (forward) from specification btree-inv% ⊦ r ∈ zh → r ≠ null; (s)% ⊦ mkznode(r, zbrar, boolvar, boolvar0, m).dirty ↔ boolvar0; (s) Used terms: istore3, fi, ri, zh, istore4, adr3, rp