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

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