∀ {α : Type u} {β : Type v} {R : α → α → Prop} {S : β → β → Prop} {p : α → Prop} (f : (a : α) → p a → β) {l : List α}
  (hl₁ : ∀ a ∈ l, p a) {a : α} (ha : p a),
  List.IsChain S (f a ha :: List.pmap f l hl₁) →
    (∀ (a b : α) (ha : p a) (hb : p b), S (f a ha) (f b hb) → R a b) → List.IsChain R (a :: l)