fun_trans (disch:=assumption)
R✝ : Type ?u.18049
C : Type ?u.18048
inst✝⁶ : Scalar R✝ C
inst✝⁵ : RealScalar R✝
W✝ : Type ?u.18058
inst✝⁴ : Vec C W✝
U✝ : Type ?u.18081
inst✝³ : SemiInnerProductSpace C U✝
R : Type u_1
inst✝² : RealScalar R
W : Type u_2
inst✝¹ : Vec R W
U : Type ?u.18131
inst✝ : SemiInnerProductSpace R U
x : W → R
hx : CDifferentiable R x
hw : ∀ (w : W), x w ≠ 0
⊢ (fun x_1 dx => ((fun w => log (x w)) x_1, cderiv R (fun w => log (x w)) x_1 dx)) = fun w dw =>
    let xdx := (x w, cderiv R x w dw);
    let l := log xdx.1;
    (l, xdx.2 / abs xdx.1)
R✝ : Type ?u.18049
C : Type ?u.18048
inst✝⁶ : Scalar R✝ C
inst✝⁵ : RealScalar R✝
W✝ : Type ?u.18058
inst✝⁴ : Vec C W✝
U✝ : Type ?u.18081
inst✝³ : SemiInnerProductSpace C U✝
R : Type u_1
inst✝² : RealScalar R
W : Type u_2
inst✝¹ : Vec R W
U : Type ?u.18131
inst✝ : SemiInnerProductSpace R U
x : W → R
hx : CDifferentiable R x
hw : ∀ (w : W), x w ≠ 0
⊢ (fun x_1 dx => (log (x x_1), (fwdDeriv R (fun w => x w) x_1 dx).2 / abs (fwdDeriv R (fun w => x w) x_1 dx).1)) =
    fun w dw => (log (x w), cderiv R x w dw / abs (x w))