| root0[path'] = dnode(md0, ∅), dnode(md, sdt) = root0[path], root0[parent(path')].dir?, (root0 -- path)[parent(path')].dir?, fids-cons(root0, fs, ofh), pw(user, path, root0, fs), py(user, parent(path'), root0, fs), py(user, parent(path), root0, fs), parent(path') ∈ root0, path ∈ root0, path' ∈ root0, fid ∈ fs, fid ∈ root0.fids ∨ fid ∈ ofh.fids ⊦ fid ∈ fs ↔ fid ∈ ((root0.fids \ sdt.fids) \ (path' ⊑ path ⊃ dnode(md0, ∅) -- restn(# path', path);dnode(md0, ∅)).fids) ∪ sdt.fids ∨ fid ∈ ofh.fids, path' = ε, path ⊑ path' |
root0[path'] = dnode(md0, ∅), dnode(md, sdt) = root0[path], (root0 -- path)[parent(path')].dir?, root0[parent(path')].dir?, fids-cons(root0, fs, ofh), pw(user, path, root0, fs), py(user, parent(path), root0, fs), py(user, parent(path'), root0, fs), fid ∈ fs, path' ∈ root0, path ∈ root0, parent(path') ∈ root0, fid ∈ root0.fids ⊦ path' = ε, fid ∈ ofh.fids, fid ∈ (root0.fids \ sdt.fids) \ (path' ⊑ path ⊃ dnode(md0, ∅) -- restn(# path', path);dnode(md0, ∅)).fids, fid ∈ sdt.fids, path ⊑ path'
Used simplifier rules: ⊦ fid ∈ fidb ∪ fidb0 ↔ fid ∈ fidb ∨ fid ∈ fidb0; (ws)%union-com: ⊦ fidb ∪ fidb0 = fidb0 ∪ fidb; from specification bag-union[fidbag]%union-ass: ⊦ fidb ∪ fidb0 ∪ fidb1 = (fidb ∪ fidb0) ∪ fidb1; from specification bag-union[fidbag]% ⊦ (fidb ∪ fidb0) \ fidb0 = fidb; (s)%fidb ⊆ fidb0 ⊦ (fidb0 \ fidb) ∪ fidb1 = (fidb0 ∪ fidb1) \ fidb; (s)% ⊦ fidb \ ∅ = fidb; (s)% ⊦ ∅.fids = ∅; (s)% ⊦ dnode(md, sdt).fids = sdt.fids; (s)