| (range ri | m).size = 0, ri[key] = @(m, m0, m1), inv(gstore \ ginval), key ∈ ri, key ∈ ri → ri[key] ∈ gstore ↓ ∧ ¬ ri[key].lnum ∈ ginval ∧ key-cons(key, nodes(gstore ↓, ginval)[ri[key]]) ⊦ |
(range ri | m).size = 0, ri[key] = @(m, m0, m1), inv(gstore \ ginval), key-cons(key, nodes(gstore ↓, ginval)[@(m, m0, m1)]), key ∈ ri, m ∈ gstore, @(m0, m1) ∈ gstore[m] ↓.ladrlist ⊦ m ∈ ginval
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] ↓;% ⊦ @(m, m0, m1).lnum = m; (s)