| ∀ p. (p ∈ tree0 ↔ p ∈ tree1) ∧ (p ∈ tree0 → (tree0[p].dir? ↔ tree1[p].dir?) ∧ (tree0[p].dir? ⊃ tree0[p].meta = tree1[p].meta;tree0[p].fid = tree1[p].fid)) ⊦ tree0 = tree1 |
∀ fid. Ptree(fnode(fid)), ∀ md, sdt. (∀ str. str ∈ sdt → Ptree(sdt[str])) → Ptree(dnode(md, sdt)) ⊦ Ptree(tree)
⊦ (∀ fid. ∀ tree0, tree1. fnode(fid) = tree0 ∧ (∀ p. (p ∈ tree0 ↔ p ∈ tree1) ∧ (p ∈ tree0 → (tree0[p].dir? ↔ tree1[p].dir?) ∧ (tree0[p].dir? ⊃ tree0[p].meta = tree1[p].meta;tree0[p].fid = tree1[p].fid))) → tree0 = tree1) ∧ (∀ md, sdt. (∀ str. str ∈ sdt → (∀ tree0, tree1. sdt[str] = tree0 ∧ (∀ p. (p ∈ tree0 ↔ p ∈ tree1) ∧ (p ∈ tree0 → (tree0[p].dir? ↔ tree1[p].dir?) ∧ (tree0[p].dir? ⊃ tree0[p].meta = tree1[p].meta;tree0[p].fid = tree1[p].fid))) → tree0 = tree1)) → (∀ tree0, tree1. dnode(md, sdt) = tree0 ∧ (∀ p. (p ∈ tree0 ↔ p ∈ tree1) ∧ (p ∈ tree0 → (tree0[p].dir? ↔ tree1[p].dir?) ∧ (tree0[p].dir? ⊃ tree0[p].meta = tree1[p].meta;tree0[p].fid = tree1[p].fid))) → tree0 = tree1))
Used terms: λ tree. ∀ tree0, tree1. tree = tree0 ∧ (∀ p. (p ∈ tree0 ↔ p ∈ tree1) ∧ ( p ∈ tree0 → (tree0[p].dir? ↔ tree1[p].dir?) ∧ (tree0[p].dir? ⊃ tree0[p].meta = tree1[p].meta ;tree0[p].fid = tree1[p].fid ))) → tree0 = tree1, tree0