| 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) ∈ nodes(gstore, ginval), @(m, m0, m1) ∈ gstore \ ginval ∧ (gstore \ ginval)[m].ref-size = 0 |
remove-refsize0(gstore)[@(m, m0, m1)] = mkgnode(nd, m3, boolvar, boolvar0), gstore[m] = groupblock(gndx, lax, m2), dom remove-refsize0(gstore) ∩ ginval = ∅, m ∈ ginval, m ∈ gstore, @(m0, m1) ∈ lax, @(m, m0, m1) ∈ remove-refsize0(gstore) ⊦ # ginval = 0, ginval = ∅, m2 = 0, nd = (∅)[@(m, m0, m1)], @(m, m0, m1) ∈ gstore \ ginval
Used simplifier rules: nodes-gstore-in: ⊦ adr ∈ nodes(gstore, ginval) ↔ ¬ ¬(adr ∈ gstore ∧ ¬ adr.lnum ∈ ginval);%size-zero-01: ⊦ ns ≠ ∅ → # ns ≠ 0; (forward) from specification set-basic[nat-set]% ⊦ adr ∈ gstore \ ns ↔ adr ∈ gstore ∧ ¬ adr.lnum ∈ ns; (ws)%ne-01: ⊦ n ∈ ns → ns ≠ ∅; (forward) from specification set-basic[nat-set]% ⊦ n ∈ ns → (gstore \ ns)[n] = (∅)[n]; (s)% ⊦ @(m, m0, m1).lnum = m; (s)%⊦ gstore[n] = groupblock(gndx, lax, m0) ∧ n ∈ gstore ∧ @(n0, n1) ∈ lax → @(n, n0, n1) ∈ gstore; (ss)% ⊦ ¬ adr ∈ fs → fs[adr] = (∅)[adr]; (s)