| gstore2[n] = groupblock(gndx, lax, m), elems(nx0 + n ' + nx2) ∩ ginval = ∅, inv(gstore2 \ ginval), inv(groupblock(gndx, lax, m)), n ∈ gstore2, elems(nx0 + n ' + nx2) ⊆ dom gstore2, ¬ n ∈ ginval, err = ESUCCESS → log0 = abs-log(nx0, gstore2 ↓) + prefixn(valid-group-nodes(gndx), lax).to-adr(n), err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪nx := nx2⟫ ((∃ nx1. nx0 + n ' + nx2 = nx1 + nx ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log0 = abs-log(nx1, gstore2 ↓))) ∧ ¬ # nx2 < # nx) |
Used simplifier rules: ⊦ nx + nx0 = nx1 + nx0 ↔ nx = nx1; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]%⊦ abs-log(nx + n ', gstore) = abs-log(nx, gstore) + gstore[n].ladrlist.to-adr(n); (s)% ⊦ n ∈ gstore → gstore ↓[n] = gstore[n] ↓; (s)% ⊦ ¬ n < n; (s)%⊦ groupblock(gndx, lax, m0) ↓ = groupblock (prefixn(valid-group-nodes(gndx), gndx), prefixn(valid-group-nodes(gndx), lax), m0); (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)% ⊦ ax + ax0 = ax + ax1 ↔ ax0 = ax1; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]