| a = (y + z).head, x0 ⊑ (y + z).tail, ∀ y, z. x0 ⊑ y + z → x0 ⊑ y ∨ (∃ x1. x0 = y + x1 ∧ x1 ⊑ z) ⊦ y + z = [], y = [], a ' + x0 ⊑ y, ∃ x. a ' + x0 = y + x ∧ x ⊑ z |
x0 ⊑ y.tail + z, ∀ y, z. x0 ⊑ y + z → x0 ⊑ y ∨ (∃ x1. x0 = y + x1 ∧ x1 ⊑ z) ⊦ y + z = [], y = [], y.head ' + x0 ⊑ y, ∃ x. y.head ' + x0 = y + x ∧ x ⊑ z
Used simplifier rules: ⊦ x ≠ [] → (x + y).head = x.head; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ x ≠ [] → (x + y).tail = x.tail + y; (s)