| ⊦ (@(m, m0, m1) ∈ gstore ∧ m ≠ n ∧ ¬ m ∈ ginval ↔ @(m, m0, m1) ∈ nodes(gstore, ginval) \ (dom nodes(gstore, ginval) | n)) ∧ ( (@(m, m0, m1).lnum ∈ gstore -- n ∧ @(@(m, m0, m1).pos, @(m, m0, m1).size) ∈ (gstore -- n)[@(m, m0, m1).lnum].ladrlist) ∧ m ≠ n ∧ ¬ m ∈ ginval → nodes(gstore -- n, ginval ++ n)[@(m, m0, m1)] = (nodes(gstore, ginval) \ (dom nodes(gstore, ginval) | n))[@(m, m0, m1)]) |
⊦ (@(m, m0, m1) ∈ gstore ∧ m ≠ n ∧ ¬ m ∈ ginval ↔ @(m, m0, m1) ∈ nodes(gstore, ginval) \ (dom nodes(gstore, ginval) | n)) ∧ ( m ∈ gstore ∧ @(m0, m1) ∈ gstore[m].ladrlist ∧ 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: ⊦ n ≠ n0 → (gstore -- n0)[n] = gstore[n]; (s)% ⊦ @(m, m0, m1).size = m1; (s)% ⊦ @(m, m0, m1).pos = m0; (s)% ⊦ n ∈ gstore -- n0 ↔ n ≠ n0 ∧ n ∈ gstore; (s)% ⊦ @(m, m0, m1).lnum = m; (s)