| gstore[m] = groupblock(gndx, lax, m2), crash(gstore, gstore0, ginval, nx) ↓[m] = groupblock(gndx0, lax0, m3), inv(gstore \ ginval) ⊦ (¬ m ∈ ginval → (m ∈ gstore ∧ @(m0, m1) ∈ prefixn(valid-group-nodes(gndx), lax) ↔ @(m, m0, m1) ∈ gstore ↓)) ∧ ( m ∈ gstore ∧ @(m0, m1) ∈ lax0 ∧ ¬ m ∈ ginval → nodes(crash(gstore, gstore0, ginval, nx) ↓, ginval)[@(m, m0, m1)] = nodes(gstore ↓, ginval)[@(m, m0, m1)]) |
⊦ n ∈ gstore → gstore ↓[n] = gstore[n] ↓
gstore[m] = groupblock(gndx, lax, m2), crash(gstore, gstore0, ginval, nx)[m] ↓ = groupblock(gndx0, lax0, m3), inv(gstore \ ginval), m ∈ crash(gstore, gstore0, ginval, nx) ⊦ (¬ m ∈ ginval → (m ∈ gstore ∧ @(m0, m1) ∈ prefixn(valid-group-nodes(gndx), lax) ↔ @(m, m0, m1) ∈ gstore ↓)) ∧ ( m ∈ gstore ∧ @(m0, m1) ∈ lax0 ∧ ¬ m ∈ ginval → nodes(crash(gstore, gstore0, ginval, nx) ↓, ginval)[@(m, m0, m1)] = nodes(gstore ↓, ginval)[@(m, m0, m1)])
Used simplifier rules: down-store-adr-in-explicit: ⊦ @(m0, m1, m2) ∈ gstore ↓ ↔ m0 ∈ gstore ∧ @(m1, m2) ∈ gstore ↓[m0].ladrlist;% ⊦ n ∈ crash(gstore, gstore0, ginval, nx) ↔ n ∈ gstore ∨ n ∈ ginval; (ws)% ⊦ ¬ n ∈ gstore → gstore[n] = (∅)[n]; (s) Used terms: m, crash(gstore, gstore0, ginval, nx)