| gstore[m] = groupblock(gndx, lax, m2), (m ∈ nx ∨ ¬ m ∈ ginval ⊃ groupblock(gndx, lax, (m ∈ gstore0 ⊃ gstore0[m].ref-size;0));gstore0[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)]) |
⊦ adr ∈ nodes(gstore, ginval) → nodes(gstore, ginval)[adr] = gstore[adr].nd
gstore[m] = groupblock(gndx, lax, m2), (m ∈ nx ∨ ¬ m ∈ ginval ⊃ groupblock(gndx, lax, (m ∈ gstore0 ⊃ gstore0[m].ref-size;0));gstore0[m]) ↓ = groupblock(gndx0, lax0, m3), inv(gstore \ ginval), m ∈ crash(gstore, gstore0, ginval, nx) ⊦ @(m, m0, m1) ∈ nodes(crash(gstore, gstore0, ginval, nx) ↓, 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)])
gstore[m] = groupblock(gndx, lax, m2), (m ∈ nx ∨ ¬ m ∈ ginval ⊃ groupblock(gndx, lax, (m ∈ gstore0 ⊃ gstore0[m].ref-size;0));gstore0[m]) ↓ = groupblock(gndx0, lax0, m3), inv(gstore \ ginval), m ∈ crash(gstore, gstore0, ginval, nx), @(m, m0, m1) ∈ nodes(crash(gstore, gstore0, ginval, nx) ↓, ginval) ⊦ (¬ m ∈ ginval → (m ∈ gstore ∧ @(m0, m1) ∈ prefixn(valid-group-nodes(gndx), lax) ↔ @(m, m0, m1) ∈ gstore ↓)) ∧ (m ∈ gstore ∧ @(m0, m1) ∈ lax0 ∧ ¬ m ∈ ginval → crash(gstore, gstore0, ginval, nx) ↓[@(m, m0, m1)].nd = nodes(gstore ↓, ginval)[@(m, m0, m1)])
Used terms: @(m, m0, m1), ginval, crash(gstore, gstore0, ginval, nx) ↓