| # kx = # ax, as ∩ range ri0[kx, ax] = ∅, ax.toSet ∩ log0.toSet = ∅, as ∩ log0.toSet = ∅, as ∩ ax.toSet = ∅, ro.inodes?, fo.inodes?, log-cons(log0, fs0), new(ax, fs0), ri-cons(ri0, fs0), ri-inj(ri0), ri-inj(fi), kx.toSet ⊆ dom ri0 ⊦ dups(kx), dups(ax), log-cons(log0, fs0[ax, fs0[ri0[kx]]] \ as) ∧ ri-cons(ri0[kx, ax], fs0[ax, fs0[ri0[kx]]] \ as) |
⊦ as ∩ range ri = ∅ ∧ ri-cons(ri, fs) → ri-cons(ri, fs \ as)
# kx = # ax, as ∩ ax.toSet = ∅, as ∩ log0.toSet = ∅, ax.toSet ∩ log0.toSet = ∅, as ∩ range ri0[kx, ax] = ∅, fo.inodes?, ro.inodes?, log-cons(log0, fs0), new(ax, fs0), ri-cons(ri0, fs0), ri-cons(ri0[kx, ax], fs0[ax, fs0[ri0[kx]]]), ri-inj(fi), ri-inj(ri0), kx.toSet ⊆ dom ri0 ⊦ dups(ax), dups(kx), log-cons(log0, fs0[ax, fs0[ri0[kx]]] \ as) ∧ true
Used simplifier rules: # ax = # kx ⊦ ri-cons(ri, fs) ∧ kx.toSet ⊆ dom ri ∧ new(ax, fs) ∧ ¬ dups(kx) ∧ ¬ dups(ax) → ri-cons(ri[kx, ax], fs[ax, fs[ri[kx]]]); (ss) Used terms: as, fs0[ax, fs0[ri0[kx]]], ri0[kx, ax]