| gstore[m] = groupblock(gndx, lax, m2), remove-refsize0(gstore)[@(m, m0, m1)] = mkgnode(nd, m3, boolvar, boolvar0), dom remove-refsize0(gstore) ∩ ginval = ∅, @(m, m0, m1) ∈ remove-refsize0(gstore), @(m0, m1) ∈ lax, m ∈ gstore ⊦ m2 = 0, nd = (nodes(gstore, ginval) \ refsize0-addresses(gstore \ ginval))[@(m, m0, m1)] |
⊦ ¬ adr ∈ as → (fs \ as)[adr] = fs[adr]
remove-refsize0(gstore)[@(m, m0, m1)] = mkgnode(nd, m3, boolvar, boolvar0), gstore[m] = groupblock(gndx, lax, m2), dom remove-refsize0(gstore) ∩ ginval = ∅, m ∈ gstore, @(m0, m1) ∈ lax, @(m, m0, m1) ∈ remove-refsize0(gstore) ⊦ m2 = 0, nd = nodes(gstore, ginval)[@(m, m0, m1)], @(m, m0, m1) ∈ refsize0-addresses(gstore \ ginval)
Used simplifier rules: refsize0-addresses: ⊦ adr ∈ refsize0-addresses(gstore) ↔ ¬ ¬(adr ∈ gstore ∧ gstore[adr.lnum].ref-size = 0);% ⊦ adr ∈ as → (fs \ as)[adr] = (∅)[adr]; (s)% ⊦ @(m, m0, m1).lnum = m; (s)% ⊦ adr ∈ gstore \ ns ↔ adr ∈ gstore ∧ ¬ adr.lnum ∈ ns; (ws)% ⊦ ¬ n ∈ ns → (gstore \ ns)[n] = gstore[n]; (s)% ⊦ groupblock(gndx, lax, m).ref-size = m; (s) Used terms: @(m, m0, m1), refsize0-addresses(gstore \ ginval), nodes(gstore, ginval)