| root[p'].dir? ↔ m ∈ dirs, root.dir?, dom of < ino0, abs(root, ROOT_INO)(dirs), afs-cons(dirs, files), fids-cons(root, abs-files(files), abs-of(of)), ispath(p', ROOT_INO, m, dirs, files), of-cons(of, dirs, files), pw(user, q + str ', root, abs-files(files)), p' ⊑ q, psynced → asynced ⊦ px(user, p', ROOT_INO, dirs, files) |
⊦ pw(user, p, tree, fs) ↔ pw(user, meta(p, tree, fs)) ∧ px-parent(user, p, tree, fs)
⊦ ispath(q, ino, m, dirs, files) ∧ px(user, p, tree, abs-files(files)) ∧ q ⊑ p ∧ abs(tree, ino)(dirs) ∧ fids-cons(tree, abs-files(files), ofh) ∧ afs-cons(dirs, files) → px(user, q, ino, dirs, files)
Used simplifier rules: px-prefix: ⊦ ispath(q, ino, m, dirs, files) ∧ px(user, p, tree, abs-files(files)) ∧ q ⊑ p ∧ abs(tree, ino)(dirs) ∧ fids-cons(tree, abs-files(files), ofh) ∧ afs-cons(dirs, files) → px(user, q, ino, dirs, files);% ⊦ px-parent(user, p + str ', tree, fs) ↔ px(user, p, tree, fs); (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]%tree[p].dir? ⊦ meta(p, tree, fs) = tree[p].meta; (s) Used terms: abs-files(files), root, q + str ', user