funext
K : Type
inst✝⁹ : RCLike K
m : Type → Type
m' : outParam (Type → Type)
inst✝⁸ : Monad m
inst✝⁷ : Monad m'
inst✝⁶ : RevDerivMonad K m m'
inst✝⁵ : LawfulMonad m
inst✝⁴ : LawfulMonad m'
S : Type
inst✝³ : SemiInnerProductSpace K S
X : Type ?u.202023
inst✝² : SemiInnerProductSpace K X
Y : Type ?u.202034
inst✝¹ : SemiInnerProductSpace K Y
Z : Type ?u.202045
inst✝ : SemiInnerProductSpace K Z
⊢ revDerivValM K (getThe S) = do
    let __do_lift ← getThe S
    pure (__do_lift, fun ds => modifyThe S fun ds' => ds + ds')
case h
K : Type
inst✝⁹ : RCLike K
m : Type → Type
m' : outParam (Type → Type)
inst✝⁸ : Monad m
inst✝⁷ : Monad m'
inst✝⁶ : RevDerivMonad K m m'
inst✝⁵ : LawfulMonad m
inst✝⁴ : LawfulMonad m'
S : Type
inst✝³ : SemiInnerProductSpace K S
X : Type ?u.202023
inst✝² : SemiInnerProductSpace K X
Y : Type ?u.202034
inst✝¹ : SemiInnerProductSpace K Y
Z : Type ?u.202045
inst✝ : SemiInnerProductSpace K Z
x✝ : S
⊢ revDerivValM K (getThe S) x✝ =
    (getThe S >>= fun __do_lift => pure (__do_lift, fun ds => modifyThe S fun ds' => ds + ds')) x✝