| root[parent(path)].dir?, root.dir?, fids-cons(root, fs, ofh), py(user, parent(path), root, fs), parent(path) ∈ root ⊦ fids-cons(root[path, fnode(fid)], fs[fid, mkfile(md, mkbuf(0))], ofh), fid ∈ fs, path ∈ root |
⊦ fids-cons(tree0, fs0, ofh0) → (fids-cons(tree1, fs1, ofh1) ↔ (∀ fid. (fid ∈ fs0 ↔ fid ∈ tree0.fids ∨ fid ∈ ofh0.fids) → (fid ∈ fs1 ↔ fid ∈ tree1.fids ∨ fid ∈ ofh1.fids)))
fid0 ∈ fs ↔ fid0 ∈ root.fids ∨ fid0 ∈ ofh.fids, root.dir?, root[parent(path)].dir?, fids-cons(root, fs, ofh), py(user, parent(path), root, fs), parent(path) ∈ root ⊦ fid0 ∈ fs[fid, mkfile(md, mkbuf(0))] ↔ fid0 ∈ root.fids ∪ {fid} ∨ fid0 ∈ ofh.fids, path ∈ root, fid ∈ fs
Used simplifier rules: fids-cons-reduce: ⊦ fids-cons(tree0, fs0, ofh0) → ( fids-cons(tree1, fs1, ofh1) ↔ (∀ fid. (fid ∈ fs0 ↔ fid ∈ tree0.fids ∨ fid ∈ ofh0.fids) → (fid ∈ fs1 ↔ fid ∈ tree1.fids ∨ fid ∈ ofh1.fids)));% ⊦ fnode(fid).fids = {fid} ; (s)%p ≠ ε ⊦ parent(p) ∈ tree0 ∧ tree0[parent(p)].dir? ∧ ¬ p ∈ tree0 → tree0[p, tree1].fids = tree0.fids ∪ tree1.fids; (s)% ⊦ ε ∈ tree; (s)