| elems(lnum + nx0) ∩ ginval = ∅, new(ax, nodes(gstore, ginval)), elems(lnum + nx0) ⊆ dom gstore, ∀ ginval, ax, gstore. elems nx0 ∩ ginval = ∅ ∧ new(ax, nodes(gstore, ginval)) ∧ elems nx0 ⊆ dom gstore → ax.toSet ∩ abs-log(nx0, gstore).toSet = ∅ ⊦ ax.toSet ∩ abs-log(lnum + nx0, gstore).toSet = ∅ |
ginval ∩ elems nx0 = ∅, new(ax, nodes(gstore, ginval)), lnum ∈ gstore, elems nx0 ⊆ dom gstore, ∀ ginval, ax, gstore. elems nx0 ∩ ginval = ∅ ∧ new(ax, nodes(gstore, ginval)) ∧ elems nx0 ⊆ dom gstore → ax.toSet ∩ abs-log(nx0, gstore).toSet = ∅ ⊦ #(ax.toSet ∩ ((gstore[lnum].ladrlist.to-adr(lnum)).toSet ∪ abs-log(nx0, gstore).toSet)) = 0, ax.toSet ∩ ((gstore[lnum].ladrlist.to-adr(lnum)).toSet ∪ abs-log(nx0, gstore).toSet) = ∅, lnum ∈ ginval
Used simplifier rules: abs-log-rec: ⊦ abs-log(n ' + nx, gstore) = gstore[n].ladrlist.to-adr(n) + abs-log(nx, gstore);%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]% ⊦ n ∈ dom gstore ↔ n ∈ gstore; (s)% ⊦ ns ++ n ⊆ ns0 ↔ ns ⊆ ns0 ∧ n ∈ ns0; (ws)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ (ax + ax0).toSet = ax.toSet ∪ ax0.toSet; (s)%int-c: ⊦ ns ∩ ns0 = ns0 ∩ ns; from specification set-union[nat-set]%int-a: ⊦ (ns ∩ ns0) ∩ ns1 = ns ∩ ns0 ∩ ns1; from specification set-union[nat-set]% ⊦ ns ∩ (ns0 ++ n) = ∅ ↔ ns ∩ ns0 = ∅ ∧ ¬ n ∈ ns; (ws)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ elems(n ' + nx0) = elems nx0 ++ n; (s)% ⊦ n + nx = n ' + nx; (s)