| p ∈ tree ⊦ tree -- (p + q) = tree[p, tree[p] -- q], q = ε |
⊦ tree[ε] = tree
⊦ tree[ε, tree0] = tree0
str + p0 ∈ tree, ∀ tree, q. p0 ∈ tree → tree -- (p0 + q) = tree[p0, tree[p0] -- q] ∨ q = ε ⊦ tree -- ((str + p0) + q) = tree[str + p0, tree[str + p0] -- q], q = ε
Used simplifier rules: nil-at: ⊦ tree[ε] = tree;%nil-put: ⊦ tree[ε, tree0] = tree0;%path freely generated by ε, +;;% ⊦ ε + p = p; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]