Full source
theorem sublist_append_iff {l : List α} :
l <+ r₁ ++ r₂l <+ r₁ ++ r₂ ↔ ∃ l₁ l₂, l = l₁ ++ l₂ ∧ l₁ <+ r₁ ∧ l₂ <+ r₂ := by
induction r₁ generalizing l with
| nil =>
constructor
· intro w
refine ⟨[], l, by simp_all⟩
· rintro ⟨l₁, l₂, rfl, w₁, w₂⟩
simp_all
| cons r r₁ ih =>
constructor
· intro w
simp only [cons_append] at w
cases w with
| cons _ w =>
obtain ⟨l₁, l₂, rfl, w₁, w₂⟩ := ih.1 w
exact ⟨l₁, l₂, rfl, Sublist.cons r w₁, w₂⟩
| cons₂ _ w =>
rename_i l
obtain ⟨l₁, l₂, rfl, w₁, w₂⟩ := ih.1 w
refine ⟨r :: l₁, l₂, by simp, cons_sublist_cons.mpr w₁, w₂⟩
· rintro ⟨l₁, l₂, rfl, w₁, w₂⟩
cases w₁ with
| cons _ w₁ =>
exact Sublist.cons _ (Sublist.append w₁ w₂)
| cons₂ _ w₁ =>
rename_i l
exact Sublist.cons₂ _ (Sublist.append w₁ w₂)