| root.dir?, root[parent(path)].dir?, fids-cons(root, fs, ofh), py(user, parent(path), root, fs), parent(path) ∈ root, ¬ path ∈ root ⊦ ⟪psynced := ?⟫ fids-cons(root[path, dnode(md, ∅)], fs, ofh) |
⊦ 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)))
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)));% ⊦ ε ∈ tree; (s)%p ≠ ε ⊦ parent(p) ∈ tree0 ∧ tree0[parent(p)].dir? ∧ ¬ p ∈ tree0 → tree0[p, tree1].fids = tree0.fids ∪ tree1.fids; (s)% ⊦ dnode(md, sdt).fids = sdt.fids; (s)% ⊦ ∅.fids = ∅; (s)% ⊦ ∅ ∪ fidb = fidb; (s)%union-ass: ⊦ fidb ∪ fidb0 ∪ fidb1 = (fidb ∪ fidb0) ∪ fidb1; from specification bag-union[fidbag]%union-com: ⊦ fidb ∪ fidb0 = fidb0 ∪ fidb; from specification bag-union[fidbag]