| # gndx1 = # lax1, # gndx = # lax, gstore[n] = groupblock(gndx, lax, m0), adr = @(m, m1, m2), adr ∈ gstore ↓, n ∈ gstore ⊦ m ∈ ginval, adr ∈ gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)] ∧ nodes(gstore ↓, ginval)[adr] = nodes(gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)], ginval)[adr] |
# gndx = # lax, # gndx1 = # lax1, gstore[n] = groupblock(gndx, lax, m0), n ∈ gstore, m ∈ gstore, @(m1, m2) ∈ gstore[m] ↓.ladrlist ⊦ m ∈ ginval, @(m, m1, m2) ∈ gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)] ∧ nodes(gstore ↓, ginval)[@(m, m1, m2)] = nodes(gstore ↓[n, groupblock(gndx + gndx1, lax + lax1, m0)], ginval)[@(m, m1, m2)]
Used simplifier rules: down-store-adr-in-explicit: ⊦ @(m0, m1, m2) ∈ gstore ↓ ↔ m0 ∈ gstore ∧ @(m1, m2) ∈ gstore ↓[m0].ladrlist;%down-store-at: ⊦ n ∈ gstore → gstore ↓[n] = gstore[n] ↓;