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