| sdt[str].dir? ↔ sdt0[str].dir?, str ∈ sdt, str ∈ sdt0, (sdt0[str].dir? ⊃ sdt[str].meta = sdt0[str].meta;sdt[str].fid = sdt0[str].fid), ∀ p. (p ∈ dnode(md0, sdt) ↔ p ∈ dnode(md0, sdt0)) ∧ ( p ∈ dnode(md0, sdt) → (dnode(md0, sdt)[p].dir? ↔ dnode(md0, sdt0)[p].dir?) ∧ (dnode(md0, sdt)[p].dir? ⊃ dnode(md0, sdt)[p].meta = dnode(md0, sdt0)[p].meta;dnode(md0, sdt)[p].fid = dnode(md0, sdt0)[p].fid)), ∀ tree2. (∀ p. (p ∈ sdt[str] ↔ p ∈ tree2) ∧ (p ∈ sdt[str] → (sdt[str][p].dir? ↔ tree2[p].dir?) ∧ (sdt[str][p].dir? ⊃ sdt[str][p].meta = tree2[p].meta;sdt[str][p].fid = tree2[p].fid))) → sdt[str] = tree2 ⊦ sdt[str] = sdt0[str], (p ∈ sdt[str] ↔ p ∈ sdt0[str]) ∧ ( p ∈ sdt[str] → (sdt[str][p].dir? ↔ sdt0[str][p].dir?) ∧ (sdt[str][p].dir? ⊃ sdt[str][p].meta = sdt0[str][p].meta;sdt[str][p].fid = sdt0[str][p].fid)) |
⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str]
⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p]
Used simplifier rules: in-dnode: ⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str];%at-dnode: ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p];% ⊦ str + p = str ' + p; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path] Used terms: str + p