apply xs.recOnList (motive:=λ xs=> xs.boundLeft a → (insertWithAux f KVChain.nil xs _ _ _ _).val=_)
case a
α : Type u
r : α → α → Prop
inst✝¹ : StrictLinearOrder r
inst✝ : DecidableRel r
β : α → Type v
f : (a : α) → β a → β a → Option (β a)
xs : KVChain r β
a : α
b : β a
ys : KVChain r β
hays : boundLeft a ys
⊢ boundLeft a xs →
    (insertWithAux f KVChain.nil xs True.intro a b True.intro).val =
      ({ toList := [{ fst := a, snd := b }],
          ascend := (_ : List.Ascending (Sigma.relOnFst (flip r)) [{ fst := a, snd := b }]) },
        xs)
case a.nil
α : Type u
r : α → α → Prop
inst✝¹ : StrictLinearOrder r
inst✝ : DecidableRel r
β : α → Type v
f : (a : α) → β a → β a → Option (β a)
xs : KVChain r β
a : α
b : β a
ys : KVChain r β
hays : boundLeft a ys
⊢ boundLeft a KVChain.nil →
    (insertWithAux f KVChain.nil KVChain.nil True.intro a b True.intro).val =
      ({ toList := [{ fst := a, snd := b }],
          ascend := (_ : List.Ascending (Sigma.relOnFst (flip r)) [{ fst := a, snd := b }]) },
        KVChain.nil)

case a.cons
α : Type u
r : α → α → Prop
inst✝¹ : StrictLinearOrder r
inst✝ : DecidableRel r
β : α → Type v
f : (a : α) → β a → β a → Option (β a)
xs : KVChain r β
a : α
b : β a
ys : KVChain r β
hays : boundLeft a ys
⊢ ∀ (a_1 : α) (b_1 : β a_1) (xs : KVChain r fun a => β a) (haxs : boundLeft a_1 xs),
    (fun xs =>
          boundLeft a xs →
            (insertWithAux f KVChain.nil xs True.intro a b True.intro).val =
              ({ toList := [{ fst := a, snd := b }],
                  ascend := (_ : List.Ascending (Sigma.relOnFst (flip r)) [{ fst := a, snd := b }]) },
                xs))
        xs →
      (fun xs =>
          boundLeft a xs →
            (insertWithAux f KVChain.nil xs True.intro a b True.intro).val =
              ({ toList := [{ fst := a, snd := b }],
                  ascend := (_ : List.Ascending (Sigma.relOnFst (flip r)) [{ fst := a, snd := b }]) },
                xs))
        (KVChain.cons a_1 b_1 xs haxs)