| (range ri | m).size = 0, ri[key] = @(m, m0, 0), gstore[m] = groupblock(gndx, lax, m1), inv(gstore \ ginval), key-cons(key, nodes(gstore ↓, ginval)[@(m, m0, 0)]), m ∈ gstore, @(m0, 0) ∈ prefixn(valid-group-nodes(gndx), lax), key ∈ ri ⊦ m ∈ ginval |
(range ri | m).size = 0, gstore[m] = groupblock(gndx, lax, m1), ri[key] = @(m, m0, 0), inv(gstore \ ginval), inv(groupblock(gndx, lax, m1)), key-cons(key, nodes(gstore ↓, ginval)[@(m, m0, 0)]), key ∈ ri, @(m0, 0) ∈ prefixn(valid-group-nodes(gndx), lax), m ∈ gstore ⊦ m ∈ ginval
Used simplifier rules: fwd-inv-gblock-rem: ⊦ inv(gstore \ ginval) ∧ n ∈ gstore ∧ ¬ n ∈ ginval ∧ gstore[n] = gblock → inv(gblock); (forward) from specification apersistence-base