| fs[ri[dentrykey(m6, str)]] = dentrynode(key, m), fs[ri[inodekey(m6)]] = inodenode(key0, md2, boolvar, m7, m8, m9), boolvar, dirs = abs-dirs(fs, ri), files = abs-files(fs, ri), new_dent_inode = mkinode(m, md, boolvar3, m0, m1, m2), new_inode = mkinode(m6, md1, true, m7, m8, m9), old_dent1 = mkdentry(str, m), old_dent2 = mkdentry(str, m), old_dent_inode = mkinode(m, md0, boolvar2, m3, m4, m5), old_inode = mkinode(m6, md1, true, m7, m8, m9), fs[ri[inodekey(m6)]].inode?, fo.inodes?, orphans(fs, ri).inodes?, afs-cons(abs-dirs(fs, ri), abs-files(fs, ri)), file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, orphans(fs, ri)), replay-cons-strong(fs, ri, orphans(fs, ri), fi, fo, log), ri-cons(ri, fs), ri-inj(fi), ri-inj(ri), ubifs-cons(fs, ri, orphans(fs, ri), fi, fo, log), dentrykey(m6, str) ∈ ri, ri[dentrykey(m6, str)] ∈ fs, inodekey(m) ∈ ri, ri[inodekey(m6)] ∈ fs, inodekey(m6) ∈ ri, 1 ≤ m9, ⌊err0⌋ , fs[ri[inodekey(m)]].directory → dentrykeys(inodekey(m), ri) = ∅, fs[ri[inodekey(m)]].directory → abs-children(m, fs, ri) = ∅, boolvar4 → boolvar1, m0 = 1 → links(m, fs, ri) = ∅ ++ dentrykey(m6, str), boolvar2 → 1 ≤ m8, fs[ri[inodekey(m)]].directory ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m2 = fs[ri[inodekey(m)]].size ∧ m1 = fs[ri[inodekey(m)]].nsubdirs ∧ boolvar3 ∨ ¬ fs[ri[inodekey(m)]].directory ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m1 = 0 ∧ ¬ boolvar3, fs[ri[inodekey(m)]].directory ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m5 = fs[ri[inodekey(m)]].size ∧ m4 = fs[ri[inodekey(m)]].nsubdirs ∧ boolvar2 ∨ ¬ fs[ri[inodekey(m)]].directory ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m4 = 0 ∧ ¬ boolvar2, ¬ fs[ri[inodekey(m)]].directory ∧ ¬ boolvar3 ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m1 = fs[ri[inodekey(m)]].nsubdirs ∨ fs[ri[inodekey(m)]].directory ∧ boolvar3 ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m1 = fs[ri[inodekey(m)]].nsubdirs ∧ m2 = fs[ri[inodekey(m)]].size, ¬ fs[ri[inodekey(m)]].directory ∧ ¬ boolvar2 ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m4 = fs[ri[inodekey(m)]].nsubdirs ∨ fs[ri[inodekey(m)]].directory ∧ boolvar2 ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m4 = fs[ri[inodekey(m)]].nsubdirs ∧ m5 = fs[ri[inodekey(m)]].size, links(m6, abs-dirs(fs, ri)) ≠ ∅ ∨ m6 = ROOT_INO, m7 ≠ 0 ∨ m6 = ROOT_INO ⊦ ⟨afs_rename#(; old_inode, new_inode, old_dent_inode, new_dent_inode, old_dent1, old_dent2, err1, dirs, files; boolvar4)⟩ ( dirs = abs-dirs(fs, ri) ∧ files = abs-files(fs, ri) ∧ (boolvar4 → boolvar0) ∧ mkinode(m6, md1, true, m7, m8, m9) = old_inode ∧ mkinode(m6, md1, true, m7, m8, m9) = new_inode ∧ mkinode(m, md0, boolvar2, m3, m4, m5) = old_dent_inode ∧ mkinode(m, md, boolvar3, m0, m1, m2) = new_dent_inode ∧ mkdentry(str, m) = old_dent1 ∧ mkdentry(str, m) = old_dent2 ∧ err0 = err1), m = ROOT_INO, m = 0, m0 = 0, m6 = 0, m9 = 0, m7 = 0 ∧ m6 ≠ ROOT_INO |
fs[ri[dentrykey(m6, str)]] = dentrynode(key, m), fs[ri[inodekey(m6)]] = inodenode(key0, md2, true, m7, m8, m9), dirs = abs-dirs(fs, ri), files = abs-files(fs, ri), new_dent_inode = mkinode(m, md, boolvar3, m0, m1, m2), new_inode = mkinode(m6, md1, true, m7, m8, m9), old_dent1 = mkdentry(str, m), old_dent2 = mkdentry(str, m), old_dent_inode = mkinode(m, md0, boolvar2, m3, m4, m5), old_inode = mkinode(m6, md1, true, m7, m8, m9), m ≠ ROOT_INO, m ≠ 0, m0 ≠ 0, m6 ≠ 0, m9 ≠ 0, fo.inodes?, orphans(fs, ri).inodes?, afs-cons(abs-dirs(fs, ri), abs-files(fs, ri)), file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, orphans(fs, ri)), replay-cons-strong(fs, ri, orphans(fs, ri), fi, fo, log), ri-cons(ri, fs), ri-inj(fi), ri-inj(ri), ubifs-cons(fs, ri, orphans(fs, ri), fi, fo, log), dentrykey(m6, str) ∈ ri, ri[dentrykey(m6, str)] ∈ fs, inodekey(m) ∈ ri, ri[inodekey(m6)] ∈ fs, inodekey(m6) ∈ ri, 1 ≤ m9, ⌊err0⌋ , fs[ri[inodekey(m)]].directory → dentrykeys(inodekey(m), ri) = ∅, fs[ri[inodekey(m)]].directory → abs-children(m, fs, ri) = ∅, boolvar4 → boolvar1, m0 = 1 → links(m, fs, ri) = ∅ ++ dentrykey(m6, str), boolvar2 → 1 ≤ m8, fs[ri[inodekey(m)]].directory ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m2 = fs[ri[inodekey(m)]].size ∧ m1 = fs[ri[inodekey(m)]].nsubdirs ∧ boolvar3 ∨ ¬ fs[ri[inodekey(m)]].directory ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m1 = 0 ∧ ¬ boolvar3, fs[ri[inodekey(m)]].directory ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m5 = fs[ri[inodekey(m)]].size ∧ m4 = fs[ri[inodekey(m)]].nsubdirs ∧ boolvar2 ∨ ¬ fs[ri[inodekey(m)]].directory ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m4 = 0 ∧ ¬ boolvar2, ¬ fs[ri[inodekey(m)]].directory ∧ ¬ boolvar3 ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m1 = fs[ri[inodekey(m)]].nsubdirs ∨ fs[ri[inodekey(m)]].directory ∧ boolvar3 ∧ m0 = fs[ri[inodekey(m)]].nlink ∧ m1 = fs[ri[inodekey(m)]].nsubdirs ∧ m2 = fs[ri[inodekey(m)]].size, ¬ fs[ri[inodekey(m)]].directory ∧ ¬ boolvar2 ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m4 = fs[ri[inodekey(m)]].nsubdirs ∨ fs[ri[inodekey(m)]].directory ∧ boolvar2 ∧ m3 = fs[ri[inodekey(m)]].nlink ∧ m4 = fs[ri[inodekey(m)]].nsubdirs ∧ m5 = fs[ri[inodekey(m)]].size, links(m6, abs-dirs(fs, ri)) ≠ ∅ ∨ m6 = ROOT_INO, m7 ≠ 0 ∨ m6 = ROOT_INO ⊦ ⟨afs_rename#(; old_inode, new_inode, old_dent_inode, new_dent_inode, old_dent1, old_dent2, err1, dirs, files; boolvar4)⟩ ( dirs = abs-dirs(fs, ri) ∧ files = abs-files(fs, ri) ∧ (boolvar4 → boolvar0) ∧ mkinode(m6, md1, true, m7, m8, m9) = old_inode ∧ mkinode(m6, md1, true, m7, m8, m9) = new_inode ∧ mkinode(m, md0, boolvar2, m3, m4, m5) = old_dent_inode ∧ mkinode(m, md, boolvar3, m0, m1, m2) = new_dent_inode ∧ mkdentry(str, m) = old_dent1 ∧ mkdentry(str, m) = old_dent2 ∧ err0 = err1), m7 = 0 ∧ m6 ≠ ROOT_INO
Used simplifier rules: ⊦ inodenode(key, md, boolvar, m, m0, m1).inode?; (s)%not-zero: 0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward) from specification nat