| ¬ fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].directory ↔ ¬ fs[ri[inodekey(m0)]].directory, fs[ri[dentrykey(m, str)]] = dentrynode(key, m0), fs[ri[dentrykey(m, str)]].dentry?, fs[ri[inodekey(m)]].directory, fs[ri[inodekey(m0)]].inode?, ro.inodes?, fo.inodes?, fs[ri[inodekey(m)]].nsubdirs < (boolvar3 ⊃ 1;0), file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, ro), replay-cons-strong(fs, ri, ro, fi, fo, log), ri-inj(ri), ri-inj(fi), ubifs-cons(fs, ri, ro, fi, fo, log), ri[inodekey(m0)] ∈ fs, ri[dentrykey(m, str)] ∈ fs, inodekey(m) ∈ ri, inodekey(fs[ri[dentrykey(m, str0)]].ino) ∈ ri, dentrykey(m, str0) ∈ ri, inodekey(m0) ∈ ri, dentrykey(m, str) ∈ ri, 1 ≤ fs[ri[inodekey(m)]].size, fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].directory → dentrykeys(inodekey(fs[ri[dentrykey(m, str0)]].ino), ri) = ∅, fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].nlink = 1 → links(fs[ri[dentrykey(m, str0)]].ino, fs, ri) = ∅ ++ dentrykey(m, str0), boolvar3 → 1 ≤ fs[ri[inodekey(m)]].nsubdirs, ¬ fs[ri[inodekey(m0)]].directory ∧ ¬ boolvar2 ∨ fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].directory ∧ boolvar2 ∧ m6 = fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].size, ¬ fs[ri[inodekey(m0)]].directory ∧ ¬ boolvar3 ∨ fs[ri[inodekey(m0)]].directory ∧ boolvar3 ∧ m3 = fs[ri[inodekey(m0)]].size, fs[ri[inodekey(m)]].nlink ≠ 0 ∨ m = ROOT_INO ⊦ fs[ri[dentrykey(m, str0)]].ino = ROOT_INO, fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].nlink = 0, fs[ri[inodekey(m)]].size = 0, mkdentry(str, m0) = mkdentry(str0, fs[ri[dentrykey(m, str0)]].ino), inodekey(m) ∈ ro |
¬ fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].directory ↔ ¬ fs[ri[inodekey(m0)]].directory, fs[ri[dentrykey(m, str)]] = dentrynode(key, m0), fs[ri[inodekey(m)]].directory, fs[ri[inodekey(m0)]].inode?, ro.inodes?, fo.inodes?, fs[ri[inodekey(m)]].nsubdirs < (boolvar3 ⊃ 1;0), file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, ro), replay-cons-strong(fs, ri, ro, fi, fo, log), ri-inj(ri), ri-inj(fi), ubifs-cons(fs, ri, ro, fi, fo, log), ri[inodekey(m0)] ∈ fs, ri[dentrykey(m, str)] ∈ fs, inodekey(m) ∈ ri, inodekey(fs[ri[dentrykey(m, str0)]].ino) ∈ ri, dentrykey(m, str0) ∈ ri, inodekey(m0) ∈ ri, dentrykey(m, str) ∈ ri, 1 ≤ fs[ri[inodekey(m)]].size, fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].directory → dentrykeys(inodekey(fs[ri[dentrykey(m, str0)]].ino), ri) = ∅, fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].nlink = 1 → links(fs[ri[dentrykey(m, str0)]].ino, fs, ri) = ∅ ++ dentrykey(m, str0), boolvar3 → 1 ≤ fs[ri[inodekey(m)]].nsubdirs, ¬ fs[ri[inodekey(m0)]].directory ∧ ¬ boolvar2 ∨ fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].directory ∧ boolvar2 ∧ m6 = fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].size, ¬ fs[ri[inodekey(m0)]].directory ∧ ¬ boolvar3 ∨ fs[ri[inodekey(m0)]].directory ∧ boolvar3 ∧ m3 = fs[ri[inodekey(m0)]].size, fs[ri[inodekey(m)]].nlink ≠ 0 ∨ m = ROOT_INO ⊦ fs[ri[dentrykey(m, str0)]].ino = ROOT_INO, fs[ri[inodekey(fs[ri[dentrykey(m, str0)]].ino)]].nlink = 0, fs[ri[inodekey(m)]].size = 0, mkdentry(str, m0) = mkdentry(str0, fs[ri[dentrykey(m, str0)]].ino), inodekey(m) ∈ ro
Used simplifier rules: ⊦ dentrynode(key, m).dentry?; (s)