| 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, (adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr]) → adr ∈ log → node-cons(fs[adr1, nd2][adr2, nd1][adr].key, fs[adr1, nd2][adr2, nd1][adr])) ∧ (ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) → key ∈ ri → key-cons(key, fs[adr1, nd2][adr2, nd1][ri[key]])) |
⊦ adr ≠ adr0 → fs[adr0, nd][adr] = fs[adr]
adr = adr2, 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, (adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr]) → adr ∈ log → node-cons(fs[adr1, nd2][adr2, nd1][adr].key, fs[adr1, nd2][adr2, nd1][adr])) ∧ (ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) → key ∈ ri → key-cons(key, fs[adr1, nd2][adr2, nd1][ri[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) ⊦ adr = adr2, adr1 = adr2, adr1 ∈ fs, adr2 ∈ fs, (adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr]) → adr ∈ log → node-cons(fs[adr1, nd2][adr].key, fs[adr1, nd2][adr])) ∧ (ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) → key ∈ ri → key-cons(key, fs[adr1, nd2][adr2, nd1][ri[key]]))
Used terms: adr, nd1, adr2, fs[adr1, nd2]