Theorem: SciLean.toDistribution.linear_parDistribDeriv_rule (SciLean/Core/Distribution/ParametricDistribDeriv.lean)

State before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
⊢ (parDistribDeriv fun w => ↑fun x => L (f w x)) = fun w dw =>
    postComp (parDistribDeriv (fun w => ↑fun x => f w x) w dw) (fun y ⊸[R] L y)
Tactic:
funext w dw
State after:
case h.h
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
⊢ parDistribDeriv (fun w => ↑fun x => L (f w x)) w dw =
    postComp (parDistribDeriv (fun w => ↑fun x => f w x) w dw) (fun y ⊸[R] L y)

State before:
case h.h
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
⊢ parDistribDeriv (fun w => ↑fun x => L (f w x)) w dw =
    postComp (parDistribDeriv (fun w => ↑fun x => f w x) w dw) (fun y ⊸[R] L y)
Tactic:
unfold parDistribDeriv Distribution.postComp Function.toDistribution
State after:
case h.h
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => L (f w x)) x) x') φ) =
    fun φ ⊸[R] (fun y ⊸[R] L y) ((fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => f w x) x) x') φ) φ)

State before:
case h.h
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => L (f w x)) x) x') φ) =
    fun φ ⊸[R] (fun y ⊸[R] L y) ((fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => f w x) x) x') φ) φ)
Tactic:
ext φ
State after:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
φ : 𝒟 X
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => L (f w x)) x) x') φ) φ =
    (fun φ ⊸[R]
        (fun y ⊸[R] L y) ((fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => f w x) x) x') φ) φ))
      φ

State before:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
φ : 𝒟 X
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => L (f w x)) x) x') φ) φ =
    (fun φ ⊸[R]
        (fun y ⊸[R] L y) ((fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => f w x) x) x') φ) φ))
      φ
Tactic:
simp [ftrans_simp]
State after:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
φ : 𝒟 X
⊢ ∂ (x':=w;dw), ∫' x, φ x • L (f x' x) = L (∂ (x':=w;dw), ∫' x, φ x • f x' x)

State before:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_4
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_2
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_3
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type ?u.105081
inst✝¹ : Vec R U
V : Type ?u.105102
inst✝ : Vec R V
f : W → X → Y
L : Y → Z
hL : IsSmoothLinearMap R L
w dw : W
φ : 𝒟 X
⊢ ∂ (x':=w;dw), ∫' x, φ x • L (f x' x) = L (∂ (x':=w;dw), ∫' x, φ x • f x' x)
Tactic:
sorry_proof
State after:
no goals