Theorem: SciLean.semiAdjoint.let_rule (SciLean/Core/FunctionTransformations/SemiAdjoint.lean)

State before:
K : Type u_1
inst✝⁷ : RCLike K
X : Type u_2
inst✝⁶ : SemiInnerProductSpace K X
Y : Type u_3
inst✝⁵ : SemiInnerProductSpace K Y
Z : Type u_4
inst✝⁴ : SemiInnerProductSpace K Z
ι : Type ?u.2103
inst✝³ : IndexType ι
inst✝² : LawfulIndexType ι
inst✝¹ : DecidableEq ι
E : ι → Type ?u.2130
inst✝ : (i : ι) → SemiInnerProductSpace K (E i)
f : X → Y → Z
g : X → Y
hf : HasSemiAdjoint K ↿f
hg : HasSemiAdjoint K g
⊢ (semiAdjoint K fun x =>
      let y := g x;
      f x y) =
    fun z =>
    let xy := semiAdjoint K (fun xy => f xy.1 xy.2) z;
    let x' := semiAdjoint K g xy.2;
    xy.1 + x'
Tactic:
sorry_proof
State after:
no goals