| q0 = str0 + p1, str ' + p0 ⊑ q0, ∀ q0, q1. p0 ⊑ q0 → restn(# p0, q0 + q1) = restn(# p0, q0) + q1 ⊦ q0 = ε, restn(# p0 + 1, q0 + q1) = restn(# p0, p1) + q1 |
p0 ⊑ p1, ∀ q0, q1. p0 ⊑ q0 → restn(# p0, q0 + q1) = restn(# p0, q0) + q1 ⊦ restn(# p0, p1 + q1) = restn(# p0, p1) + q1
Used simplifier rules: ⊦ str ' + p ⊑ str0 ' + p0 ↔ str = str0 ∧ p ⊑ p0; (ws)% ⊦ 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]% ⊦ restn(n + 1, str ' + p) = restn(n, p); (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ str + p = str ' + p; (s)