| tree = dnode(md, sdt), q ∈ tree -- (str ' + p0), p0 ∈ tree[str '], str ' ∈ tree, ∀ tree0, q0. p0 ∈ tree0 ∧ ¬ p0 ⊑ q0 ∧ q0 ∈ tree0 → (tree0 -- p0)[q0] = (q0 ⊑ p0 ⊃ tree0[q0] -- restn(# q0, p0);tree0[q0]) ∨ p0 = ε ⊦ (tree -- (str ' + p0))[q] = (q ⊑ str ' + p0 ⊃ tree[q] -- restn(# q, str ' + p0);tree[q]) |
⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt
str ∈ sdt ⊦ dnode(md, sdt)[str '] = sdt[str]
q ∈ dnode(md, sdt) -- (str ' + p0), str ∈ sdt, p0 ∈ sdt[str], ∀ tree0, q0. p0 ∈ tree0 ∧ ¬ p0 ⊑ q0 ∧ q0 ∈ tree0 → (tree0 -- p0)[q0] = (q0 ⊑ p0 ⊃ tree0[q0] -- restn(# q0, p0);tree0[q0]) ∨ p0 = ε ⊦ (dnode(md, sdt) -- (str ' + p0))[q] = (q ⊑ str ' + p0 ⊃ dnode(md, sdt)[q] -- restn(# q, str ' + p0);dnode(md, sdt)[q])
Used simplifier rules: one-ind: ⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt;%one-at: str ∈ sdt ⊦ dnode(md, sdt)[str '] = sdt[str];