| # kx = # ax, as ∩ ax.toSet = ∅, ax.toSet ∩ log0.toSet = ∅, as ∩ range ri0[kx, ax] = ∅, fo.inodes?, ro.inodes?, log-cons(log0, fs0), new(ax, fs0), node-cons(fs0[adr].key, fs0[adr]), ri-cons(ri0, fs0), ri-cons(ri0[kx, ax], fs0[ax, fs0[ri0[kx]]]), ri-inj(fi), ri-inj(ri0), adr ∈ as, adr ∈ fs0, adr ∈ log0, kx.toSet ⊆ dom ri0, ∀ adr0. ¬ adr0 ∈ as ∩ log0.toSet ⊦ # as = 0, as = ∅, dups(ax), dups(kx) |
Used simplifier rules: ⊦ adr ∈ as ∩ as0 ↔ adr ∈ as ∧ adr ∈ as0; (ws)% ⊦ adr ∈ ax.toSet ↔ adr ∈ ax; (s)%int-a: ⊦ (as ∩ as0) ∩ as1 = as ∩ as0 ∩ as1; from specification set-union[node-store]%int-c: ⊦ as ∩ as0 = as0 ∩ as; from specification set-union[node-store] Used terms: adr