unfold insertWith
α : Type u
r : α → α → Prop
inst✝¹ : StrictLinearOrder r
inst✝ : DecidableRel r
β : α → Type v
f : (a : α) → β a → β a → Option (β a)
xs✝ : KVChain r β
a : α
b : β a
a₁ : α
b₁ : β a₁
xs : KVChain r fun a => β a
ha₁xs : boundLeft a₁ xs
a✝ : ∀ (d : α), boundLeft d xs → r d a → boundLeft d (insertWith f xs a b)
d : α
hdxs : boundLeft d (KVChain.cons a₁ b₁ xs ha₁xs)
hda : r d a
⊢ boundLeft d (insertWith f (KVChain.cons a₁ b₁ xs ha₁xs) a b)
α : Type u
r : α → α → Prop
inst✝¹ : StrictLinearOrder r
inst✝ : DecidableRel r
β : α → Type v
f : (a : α) → β a → β a → Option (β a)
xs✝ : KVChain r β
a : α
b : β a
a₁ : α
b₁ : β a₁
xs : KVChain r fun a => β a
ha₁xs : boundLeft a₁ xs
a✝ : ∀ (d : α), boundLeft d xs → r d a → boundLeft d (insertWith f xs a b)
d : α
hdxs : boundLeft d (KVChain.cons a₁ b₁ xs ha₁xs)
hda : r d a
⊢ boundLeft d
    (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)