| p ∈ tree, q ∈ tree -- p ⊦ (tree -- p)[q] = (q ⊑ p ⊃ tree[q] -- restn(# q, p);tree[q]), p = ε |
q ∈ tree -- (str + p0), str + p0 ∈ tree, ∀ tree, q. p0 ∈ tree ∧ q ∈ tree -- p0 → (tree -- p0)[q] = (q ⊑ p0 ⊃ tree[q] -- restn(# q, p0);tree[q]) ∨ p0 = ε ⊦ str + p0 = ε, (tree -- (str + p0))[q] = (q ⊑ str + p0 ⊃ tree[q] -- restn(# q, str + p0);tree[q])
Used simplifier rules: path freely generated by ε, +;;