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