| dentries(inodekey(m), ri) ≠ dom abs-children(m, fs, ri), fs[ri[inodekey(m)]].directory, orphans(fs, ri).inodes?, fo.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-inj(ri), ri-inj(fi), ubifs-cons(fs, ri, orphans(fs, ri), fi, fo, log), inodekey(m) ∈ ri, asynced → boolvar ⊦ ∃ strings. ⟨strings0 := strings; fail#(; ; err)⟩ ((asynced → boolvar) ∧ dentries(inodekey(m), ri) = strings0 ∧ ESUCCESS = err) |
⊦ strings = strings0 ↔ (∀ str. str ∈ strings ↔ str ∈ strings0)
Used simplifier rules: ⊦ str ∈ dentries(key, ri) ↔ dentrykey(key.ino, str) ∈ dentrykeys(key, ri); (s)% ⊦ inodekey(m).ino = m; (s)%⊦ key ∈ dentrykeys(key0, ri) ↔ key ∈ ri ∧ key.dentry? ∧ key0.inode? ∧ key.ino = key0.ino; (s)% ⊦ dentrykey(m, str).dentry?; (s)% ⊦ inodekey(m).inode?; (s)% ⊦ dentrykey(m, str).ino = m; (s)% ⊦ str ∈ dom entries ↔ str ∈ entries; (s)% ⊦ str ∈ abs-children(ino, fs, ri) ↔ dentrykey(ino, str) ∈ ri; (s) Used terms: dom abs-children(m, fs, ri), dentries(inodekey(m), ri)