| gstore[m] = groupblock(gndx, lax, n0), @(m2, m3) ∈ prefixn(valid-group-nodes(gndx), lax), m ∈ gstore, @(m, m2, m3) ∈ nodes(gstore ↓[m, groupblock(prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0)], ginval), valid-group-nodes(gndx) ≤ m0, n0 ≤ m0, valid-group-nodes(gndx) ≤ n0 ⊦ gstore ↓[m, groupblock(prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0)][@(m, m2, m3)].nd = nodes(gstore ↓, ginval)[@(m, m2, m3)], m ∈ ginval |
gstore[m] = groupblock(gndx, lax, n0), m ∈ gstore, @(m2, m3) ∈ prefixn(valid-group-nodes(gndx), lax), valid-group-nodes(gndx) ≤ n0, n0 ≤ m0, valid-group-nodes(gndx) ≤ m0 ⊦ gstore ↓[m, groupblock(prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0)][@(m, m2, m3)].nd = nodes(gstore ↓, ginval)[@(m, m2, m3)], m ∈ ginval
Used simplifier rules: nodes-gstore-in: ⊦ adr ∈ nodes(gstore, ginval) ↔ ¬ ¬(adr ∈ gstore ∧ ¬ adr.lnum ∈ ginval);%down-store-write-same: ⊦ @(n, n0, n1) ∈ gstore ↓[n, gblock] ↔ @(n0, n1) ∈ gblock.ladrlist;% ⊦ @(m, m0, m1).lnum = m; (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)