∀ {L : FirstOrder.Language} {α : Type u_2} (motive : List (α ⊕ (i : ℕ) × L.Functions i) → Sort u_4) (a : α)
  (l : List (α ⊕ (i : ℕ) × L.Functions i)) (h_1 : Unit → motive [])
  (h_2 : (a : α) → (l : List (α ⊕ (i : ℕ) × L.Functions i)) → motive (Sum.inl a :: l))
  (h_3 : (n : ℕ) → (f : L.Functions n) → (l : List (α ⊕ (i : ℕ) × L.Functions i)) → motive (Sum.inr ⟨n, f⟩ :: l)),
  (match Sum.inl a :: l with
    | [] => h_1 ()
    | Sum.inl a :: l => h_2 a l
    | Sum.inr ⟨n, f⟩ :: l => h_3 n f l) =
    h_2 a l