| gstore[m] = groupblock(gndx, lax, m2) ⊦ (@(m, m0, m1) ∈ gstore ∧ m ≠ n ∧ ¬ m ∈ ginval ↔ @(m, m0, m1) ∈ nodes(gstore, ginval) ∧ ¬ @(m, m0, m1) ∈ dom nodes(gstore, ginval) | n) ∧ ( m ∈ gstore ∧ @(m0, m1) ∈ lax ∧ m ≠ n ∧ ¬ m ∈ ginval → nodes(gstore -- n, ginval ++ n)[@(m, m0, m1)] = (nodes(gstore, ginval) \ (dom nodes(gstore, ginval) | n))[@(m, m0, m1)]) |
gstore[m] = groupblock(gndx, lax, m2) ⊦ (@(m, m0, m1) ∈ gstore ∧ m ≠ n ∧ ¬ m ∈ ginval → ¬ @(m, m0, m1) ∈ dom nodes(gstore, ginval) | n) ∧ ( m ∈ gstore ∧ @(m0, m1) ∈ lax ∧ m ≠ n ∧ ¬ m ∈ ginval → nodes(gstore -- n, ginval ++ n)[@(m, m0, m1)] = (nodes(gstore, ginval) \ (dom nodes(gstore, ginval) | n))[@(m, m0, m1)])
Used simplifier rules: nodes-gstore-in: ⊦ adr ∈ nodes(gstore, ginval) ↔ ¬ ¬(adr ∈ gstore ∧ ¬ adr.lnum ∈ ginval);% ⊦ adr ∈ dom fs ↔ adr ∈ fs; (s)% ⊦ @(m, m0, m1) ∈ as | m ↔ @(m, m0, m1) ∈ as; (s)% ⊦ @(m, m0, m1).lnum = m; (s)