| ((range ri | m) -- @(m, m0, m1)).size + @(m, m0, m1).size = 0, ri[key] = @(m, m0, m1), gstore[m] ↓ = groupblock(gndx, lax, m2), inv(gstore \ ginval), key-cons(key, nodes(gstore ↓, ginval)[@(m, m0, m1)]), m ∈ gstore, @(m0, m1) ∈ lax, key ∈ ri ⊦ m ∈ ginval |
(range ri | m).size = 0, ri[key] = @(m, m0, 0), gstore[m] ↓ = groupblock(gndx, lax, m2), inv(gstore \ ginval), key-cons(key, nodes(gstore ↓, ginval)[@(m, m0, 0)]), m ∈ gstore, @(m0, 0) ∈ lax, key ∈ ri ⊦ m ∈ ginval
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m - 0 = m; (s)% ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws)% ⊦ @(m, m0, m1).size = m1; (s)% ⊦ key ∈ ri ∧ ri[key] = adr → adr ∈ ri; (s)% ⊦ adr ∈ range ri ↔ adr ∈ ri; (s)% ⊦ @(m, m0, m1) ∈ as | m ↔ @(m, m0, m1) ∈ as; (s)% ⊦ (as -- adr).size = as.size - (adr ∈ as ⊃ adr.size;0); (s)