∀ {α : Type u_1} {p : α → Prop} {r : { a // p a } → { a // p a } → Prop} (head : α) (tail : List α)
  (h : ∀ x ∈ head :: tail, p x),
  List.IsChain r ((head :: tail).attachWith p ⋯) =
      ¬List.IsChain (fun a b => ∃ (ha : p a) (hb : p b), r ⟨a, ha⟩ ⟨b, hb⟩) (head :: tail) →
    ¬List.IsChain r ((head :: tail).attachWith p ⋯) →
      List.IsChain (fun a b => ∃ (ha : p a) (hb : p b), r ⟨a, ha⟩ ⟨b, hb⟩) (head :: tail)