unfold insertWith
α : Type u
r : α → α → Prop
inst✝¹ : StrictLinearOrder r
inst✝ : DecidableRel r
β : α → Type v
f : (a : α) → β a → β a → Option (β a)
a₁ : α
b₁ : β a₁
xs : KVChain r β
ha₁xs : boundLeft a₁ xs
a : α
b : β a
haa₁ : r a a₁
⊢ insertWith f (KVChain.cons a₁ b₁ xs ha₁xs) a b = KVChain.cons a b (KVChain.cons a₁ b₁ xs ha₁xs) haa₁
α : Type u
r : α → α → Prop
inst✝¹ : StrictLinearOrder r
inst✝ : DecidableRel r
β : α → Type v
f : (a : α) → β a → β a → Option (β a)
a₁ : α
b₁ : β a₁
xs : KVChain r β
ha₁xs : boundLeft a₁ xs
a : α
b : β a
haa₁ : r a a₁
⊢ (match insertWithAux f KVChain.nil (KVChain.cons a₁ b₁ xs ha₁xs) True.intro a b True.intro with
    | { val := z, property := hz } => hinge z.fst z.snd hz) =
    KVChain.cons a b (KVChain.cons a₁ b₁ xs ha₁xs) haa₁