| gstore[lnum] = groupblock(gndx, lax, m), ginval ∩ elems nx0 = ∅, new(ax, nodes(gstore, ginval)), lnum ∈ gstore, elems nx0 ⊆ dom gstore, elems nx0 ∩ ginval = ∅ ∧ new(ax, nodes(gstore, ginval)) ∧ elems nx0 ⊆ dom gstore → ax.toSet ∩ abs-log(nx0, gstore).toSet = ∅ ⊦ #(ax.toSet ∩ ((lax.to-adr(lnum)).toSet ∪ abs-log(nx0, gstore).toSet)) = 0, ax.toSet ∩ ((lax.to-adr(lnum)).toSet ∪ abs-log(nx0, gstore).toSet) = ∅, lnum ∈ ginval |
gstore[lnum] = groupblock(gndx, lax, m), ax.toSet ∩ abs-log(nx0, gstore).toSet = ∅, ginval ∩ elems nx0 = ∅, new(ax, nodes(gstore, ginval)), lnum ∈ gstore, elems nx0 ⊆ dom gstore ⊦ #(ax.toSet ∩ (lax.to-adr(lnum)).toSet) = 0, #(ax.toSet ∩ ((lax.to-adr(lnum)).toSet ∪ abs-log(nx0, gstore).toSet)) = 0, ax.toSet ∩ (lax.to-adr(lnum)).toSet = ∅, lnum ∈ ginval
Used simplifier rules: size-zero: ⊦ # as ≠ 0 → as ≠ ∅; (forward) from specification set-basic[node-store]%size-zero-01: ⊦ as ≠ ∅ → # as ≠ 0; (forward) from specification set-basic[node-store]%unc: ⊦ as ∪ as0 = as0 ∪ as; from specification set-union[node-store]%una: ⊦ (as ∪ as0) ∪ as1 = as ∪ as0 ∪ as1; from specification set-union[node-store]% ⊦ as ∩ (as0 ∪ as1) = ∅ ↔ as ∩ as0 = ∅ ∧ as ∩ as1 = ∅; (ws)%int-c: ⊦ as ∩ as0 = as0 ∩ as; from specification set-union[node-store]%int-a: ⊦ (as ∩ as0) ∩ as1 = as ∩ as0 ∩ as1; from specification set-union[node-store]%int-c: ⊦ ns ∩ ns0 = ns0 ∩ ns; from specification set-union[nat-set]