simp at hf hg
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
g : W → X → Y
f : W → X → Z
hg :
  HasAdjDiff K fun x =>
    match x with
    | (w, x) => g w x
hf :
  HasAdjDiff K fun x =>
    match x with
    | (w, x) => f w x
⊢ (revDeriv2 K fun w x => (g w x, f w x)) = fun w x =>
    let ydg := revDeriv2 K g w x;
    let zdf :=
      revDeriv2 K
        (fun x x_1 =>
          match x with
          | (w, x) => f w x)
        (w, x) ();
    ((ydg.1, zdf.1), fun dyz dw =>
      let dwx := ydg.2 dyz.1 dw;
      (zdf.2 dyz.2 dwx).1)
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
g : W → X → Y
f : W → X → Z
hg : HasAdjDiff K fun x => g x.1 x.2
hf : HasAdjDiff K fun x => f x.1 x.2
⊢ (revDeriv2 K fun w x => (g w x, f w x)) = fun w x =>
    let ydg := revDeriv2 K g w x;
    let zdf :=
      revDeriv2 K
        (fun x x_1 =>
          match x with
          | (w, x) => f w x)
        (w, x) ();
    ((ydg.1, zdf.1), fun dyz dw =>
      let dwx := ydg.2 dyz.1 dw;
      (zdf.2 dyz.2 dwx).1)