| gstore[lnum] = groupblock(gndx, lax, m), ginval ∩ elems nx0 = ∅, ax.toSet ∩ abs-log(nx0, gstore).toSet = ∅, new(ax, nodes(gstore, ginval)), lnum ∈ gstore, elems nx0 ⊆ dom gstore ⊦ #(ax.toSet ∩ ((lax.to-adr(lnum)).toSet ∪ abs-log(nx0, gstore).toSet)) = 0, #(ax.toSet ∩ (lax.to-adr(lnum)).toSet) = 0, lnum ∈ ginval, ∀ adr. adr ∈ ax.toSet ∩ (lax.to-adr(lnum)).toSet ↔ adr ∈ ∅ |
gstore[lnum] = groupblock(gndx, lax, m), ax.toSet ∩ abs-log(nx0, gstore).toSet = ∅, ginval ∩ elems nx0 = ∅, new(ax, nodes(gstore, ginval)), lnum ∈ gstore, adr ∈ ax, adr ∈ lax.to-adr(lnum), 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, lnum ∈ ginval
Used simplifier rules: 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]% ⊦ adr ∈ ax.toSet ↔ adr ∈ ax; (s)% ⊦ adr ∈ as ∩ as0 ↔ adr ∈ as ∧ adr ∈ as0; (ws)% ⊦ ¬ adr ∈ ∅; (s)