funext w w
K : Type
inst✝⁴ : RCLike K
X : Type
inst✝³ : SemiInnerProductSpace K X
Y : Type
inst✝² : SemiInnerProductSpace K Y
Z : Type
inst✝¹ : SemiInnerProductSpace K Z
W : Type
inst✝ : SemiInnerProductSpace K W
f g : W → X → K
hf : HasAdjDiff K fun x => f x.1 x.2
hg : HasAdjDiff K fun x => g x.1 x.2
⊢ (fun w x =>
      (f w x * g w x, fun dy dw' =>
        (dw' +
            ((starRingEnd K) (f w x) • (semiAdjoint K (fun x_1 => cderiv K (fun x => g x.1 x.2) (w, x) x_1) dy).1 +
              (starRingEnd K) (g w x) • (semiAdjoint K (fun x_1 => cderiv K (fun x => f x.1 x.2) (w, x) x_1) dy).1),
          (starRingEnd K) (f w x) • (semiAdjoint K (fun x_1 => cderiv K (fun x => g x.1 x.2) (w, x) x_1) dy).2 +
            (starRingEnd K) (g w x) • (semiAdjoint K (fun x_1 => cderiv K (fun x => f x.1 x.2) (w, x) x_1) dy).2))) =
    fun w x =>
    (f w x * g w x, fun dz dw =>
      (dw + (semiAdjoint K (cderiv K (fun x => f x.1 x.2) (w, x)) ((starRingEnd K) (g w x) * dz)).1,
          (semiAdjoint K (cderiv K (fun x => f x.1 x.2) (w, x)) ((starRingEnd K) (g w x) * dz)).2) +
        semiAdjoint K (fun dx8 => cderiv K (fun x => g x.1 x.2) (w, x) dx8) ((starRingEnd K) (f w x) * dz))
case h.h
K : Type
inst✝⁴ : RCLike K
X : Type
inst✝³ : SemiInnerProductSpace K X
Y : Type
inst✝² : SemiInnerProductSpace K Y
Z : Type
inst✝¹ : SemiInnerProductSpace K Z
W : Type
inst✝ : SemiInnerProductSpace K W
f g : W → X → K
hf : HasAdjDiff K fun x => f x.1 x.2
hg : HasAdjDiff K fun x => g x.1 x.2
w✝ : W
w : X
⊢ (f w✝ w * g w✝ w, fun dy dw' =>
      (dw' +
          ((starRingEnd K) (f w✝ w) • (semiAdjoint K (fun x => cderiv K (fun x => g x.1 x.2) (w✝, w) x) dy).1 +
            (starRingEnd K) (g w✝ w) • (semiAdjoint K (fun x => cderiv K (fun x => f x.1 x.2) (w✝, w) x) dy).1),
        (starRingEnd K) (f w✝ w) • (semiAdjoint K (fun x => cderiv K (fun x => g x.1 x.2) (w✝, w) x) dy).2 +
          (starRingEnd K) (g w✝ w) • (semiAdjoint K (fun x => cderiv K (fun x => f x.1 x.2) (w✝, w) x) dy).2)) =
    (f w✝ w * g w✝ w, fun dz dw =>
      (dw + (semiAdjoint K (cderiv K (fun x => f x.1 x.2) (w✝, w)) ((starRingEnd K) (g w✝ w) * dz)).1,
          (semiAdjoint K (cderiv K (fun x => f x.1 x.2) (w✝, w)) ((starRingEnd K) (g w✝ w) * dz)).2) +
        semiAdjoint K (fun dx8 => cderiv K (fun x => g x.1 x.2) (w✝, w) dx8) ((starRingEnd K) (f w✝ w) * dz))