| remove-refsize0(gstore)[m] = groupblock(gndx0, lax0, m3), gstore[m] = groupblock(gndx, lax, m2), dom remove-refsize0(gstore) ∩ ginval = ∅ ⊦ (m ∈ remove-refsize0(gstore) ∧ @(m0, m1) ∈ lax0 ↔ @(m, m0, m1) ∈ gstore ∧ ¬ m ∈ ginval ∧ m2 ≠ 0) ∧ ( m ∈ remove-refsize0(gstore) ∧ @(m0, m1) ∈ lax0 → nodes(remove-refsize0(gstore), ∅)[@(m, m0, m1)] = (nodes(gstore, ginval) \ refsize0-addresses(gstore \ ginval))[@(m, m0, m1)]), m ∈ gstore ∧ m2 ≠ 0 |
Used simplifier rules: int-a: ⊦ (ns ∩ ns0) ∩ ns1 = ns ∩ ns0 ∩ ns1; from specification set-union[nat-set]%int-c: ⊦ ns ∩ ns0 = ns0 ∩ ns; from specification set-union[nat-set]% ⊦ ns ∩ dom gstore = ∅ ∧ n ∈ gstore → ¬ n ∈ ns; (s)% ⊦ n ∈ remove-refsize0(gstore) ↔ n ∈ gstore ∧ gstore[n].ref-size ≠ 0; (ws)%⊦ n ∈ gstore ∧ gstore[n].ref-size ≠ 0 → remove-refsize0(gstore)[n] = gstore[n]; (s)%⊦ groupblock(gndx, lax, m) = groupblock(gndx0, lax0, m0) ↔ gndx = gndx0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ groupblock(gndx, lax, m).ref-size = m; (s)% ⊦ ¬ n ∈ gstore → gstore[n] = (∅)[n]; (s)% ⊦ ¬ n ∈ gstore → ¬ @(n, n0, n1) ∈ gstore; (s)