| ro.inodes?, fo.inodes?, log-cons(log, fs), node-cons(nd2.key, nd2), node-cons(nd1.key, nd1), ri-cons(ri, fs), ri-inj(ri), ri-inj(fi) ⊦ adr1 = adr2, adr2 ∈ fs, adr1 ∈ fs, log-cons(log, fs[adr1, nd2][adr2, nd1]) ∧ ri-cons(ri, fs[adr1, nd2][adr2, nd1]) |
⊦ ri-cons(ri, fs) → (ri-cons(ri0, fs0) ↔ (∀ key. (key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]])) → key ∈ ri0 → ri0[key] ∈ fs0 ∧ key-cons(key, fs0[ri0[key]])))
fo.inodes?, ro.inodes?, log-cons(log, fs), node-cons(nd1.key, nd1), node-cons(nd2.key, nd2), ri-cons(ri, fs), ri-inj(fi), ri-inj(ri) ⊦ adr1 = adr2, adr1 ∈ fs, adr2 ∈ fs, log-cons(log, fs[adr1, nd2][adr2, nd1]) ∧ (∀ key. (key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]])) → key ∈ ri → ri[key] ∈ fs[adr1, nd2][adr2, nd1] ∧ key-cons(key, fs[adr1, nd2][adr2, nd1][ri[key]]))
Used terms: ri, fs, fs[adr1, nd2][adr2, nd1], ri