simp[StateT.bind,StateT.pure,StateT.get,StateT.set]
case h.h.e_a.e_fst.e_snd.h.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
inst✝² : SemiInnerProductSpace K X
Y : Type ?u.264984
inst✝¹ : SemiInnerProductSpace K Y
Z : Type ?u.264995
inst✝ : SemiInnerProductSpace K Z
f : X → S → S
ha0 : HasAdjDiff K fun xs => f xs.1 xs.2
x✝³ : X
x✝² : S
x✝¹ : PUnit.{1}
x✝ : S
⊢ pure ((revDeriv K (fun x => f x.1 x.2) (x✝³, x✝²)).2 x✝) =
    StateT.bind StateT.get
      (fun __do_lift =>
        StateT.bind (StateT.set ((revDeriv K (fun x => f x.1 x.2) (x✝³, x✝²)).2 __do_lift).2) fun x =>
          StateT.pure ((revDeriv K (fun x => f x.1 x.2) (x✝³, x✝²)).2 __do_lift).1)
      x✝
no goals