cases ho : rtr[cpt][i] <;> simp [bind, ho, Option.getD] <;> try split
case h
α : Type
inst✝¹ : Accessible α
rtr : α
inst✝ : Finite α
cpt : Component.Valued
vs : ID ⇀ Value
i : Component.idType (Component.val cpt)
⊢ set rtr cpt vs[Component.val cpt][i] = do
    let x ← rtr[Component.val cpt][i]
    some (Option.getD (vs i) x)
case h.none
α : Type
inst✝¹ : Accessible α
rtr : α
inst✝ : Finite α
cpt : Component.Valued
vs : ID ⇀ Value
i : Component.idType (Component.val cpt)
ho : rtr[Component.val cpt][i] = none
⊢ set rtr cpt vs[Component.val cpt][i] = none

case h.some.h_1
α : Type
inst✝¹ : Accessible α
rtr : α
inst✝ : Finite α
cpt : Component.Valued
vs : ID ⇀ Value
i : Component.idType (Component.val cpt)
val✝ : Component.type α (Component.val cpt)
ho : rtr[Component.val cpt][i] = some val✝
opt✝ : Option Value
x✝ : Value
heq✝ : vs i = some x✝
⊢ set rtr cpt vs[Component.val cpt][i] = some x✝

case h.some.h_2
α : Type
inst✝¹ : Accessible α
rtr : α
inst✝ : Finite α
cpt : Component.Valued
vs : ID ⇀ Value
i : Component.idType (Component.val cpt)
val✝ : Component.type α (Component.val cpt)
ho : rtr[Component.val cpt][i] = some val✝
opt✝ : Option Value
heq✝ : vs i = none
⊢ set rtr cpt vs[Component.val cpt][i] = some val✝