| ∀ ps1, str. # ps1 < #(ps0 ++ p) → true → #(str + ps1) = # ps1 ⊦ #(str + ps0) + 1 = # ps0 + 1, p ∈ ps0, str ' + p ∈ str + ps0 |
⊦ p ∈ str + ps ↔ p ≠ ε ∧ p.head = str ∧ p.tail ∈ ps
∀ ps1, str. # ps1 < #(ps0 ++ p) → true → #(str + ps1) = # ps1 ⊦ #(str + ps0) = # ps0, p ∈ ps0
Used simplifier rules: in-consp: ⊦ p ∈ str + ps ↔ p ≠ ε ∧ p.head = str ∧ p.tail ∈ ps;% ⊦ (str ' + p).tail = p; (s)% ⊦ (str ' + p).head = str; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ str ' + p ≠ ε; (s)%c: ⊦ m + n = n + m; from specification nat-basic[directory-tree-inst]%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic[directory-tree-inst]% ⊦ m + n = m + n0 ↔ n = n0; (s)