| istore[m] = indexblock(indx, lax, m0), remove-refsize0(istore0) = istore0, remove-refsize0(gstore1) = gstore1, elems nx ∩ ginval2 = ∅, dom gstore1 ∪ elems nx = dom gstore2 ∪ ginval2, inv(indexblock(indx, lax, m0)), inv(istore0), inv(istore), inv(gstore1), inv(gstore2 \ ginval2), m ∈ istore, istore0 ⊑ istore ⊦ dups(nx), inv(indexblock(indx + ind ', lax + @(maxino, ind.flashsize) ', m0)), @(m, maxino, ind.flashsize) ∈ istore0, @(m, maxino, ind.flashsize) ∈ istore |
⊦ inv(indexblock(indx, lax, m0)) ∧ ladr.size = ind.flashsize ∧ ¬ ladr ∈ lax → inv(indexblock(indx + ind ', lax + ladr ', n1))
Used simplifier rules: ⊦ inv(indexblock(indx, lax, m0)) → inv(indexblock(indx, lax, n0)); (s)% ⊦ @(m, m0).size = m0; (s)%⊦ istore[n] = indexblock(indx, lax, m0) ∧ n ∈ istore ∧ @(n0, n1) ∈ lax → @(n, n0, n1) ∈ istore; (ss) Used terms: m0, m0, @(maxino, ind.flashsize), lax, ind, indx