Theorem: SciLean.DistribDiffrentiable.comp_rule (SciLean/Core/Distribution/ParametricDistribDeriv.lean)

State before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
⊢ DistribDifferentiable fun x => f (g x)
Tactic:
intro x
State after:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
⊢ DistribDifferentiableAt (fun x => f (g x)) x

State before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
⊢ DistribDifferentiableAt (fun x => f (g x)) x
Tactic:
unfold DistribDifferentiableAt
State after:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
⊢ ∀ (φ : X → 𝒟 Z), CDifferentiableAt R φ x → CDifferentiableAt R (fun x => ((fun x => f (g x)) x) (φ x)) x

State before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
⊢ ∀ (φ : X → 𝒟 Z), CDifferentiableAt R φ x → CDifferentiableAt R (fun x => ((fun x => f (g x)) x) (φ x)) x
Tactic:
intro φ hφ
State after:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiableAt R (fun x => ((fun x => f (g x)) x) (φ x)) x

State before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiableAt R (fun x => ((fun x => f (g x)) x) (φ x)) x
Tactic:
apply CDifferentiable.comp_rule (K:=R) (f:=fun xy : X×Y => f xy.2 (φ xy.1)) (g:=fun x => (x, g x))
  (hg:=by fun_prop)
State after:
case hf
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiable R fun xy => (f xy.2) (φ xy.1)

State before:
case hf
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiable R fun xy => (f xy.2) (φ xy.1)
Tactic:
intro x
State after:
case hf
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x✝ : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x✝
x : X × Y
⊢ CDifferentiableAt R (fun xy => (f xy.2) (φ xy.1)) x

State before:
case hf
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x✝ : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x✝
x : X × Y
⊢ CDifferentiableAt R (fun xy => (f xy.2) (φ xy.1)) x
Tactic:
sorry_proof
State after:
no goals

State before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.64347
inst✝⁸ : Vec R W
X : Type u_5
inst✝⁷ : Vec R X
inst✝⁶ : MeasureSpace X
Y : Type u_4
inst✝⁵ : Vec R Y
inst✝⁴ : Module ℝ Y
Z : Type u_2
inst✝³ : Vec R Z
inst✝² : Module ℝ Z
U : Type u_3
inst✝¹ : Vec R U
V : Type ?u.66001
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf✝ : DistribDifferentiable f
hg : CDifferentiable R g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
hf : CDifferentiable R fun xy => (f xy.2) (φ xy.1)
⊢ CDifferentiable R fun x => (x, g x)
Tactic:
fun_prop
State after:
no goals