internlm/Lean-Github huggingface dataset:
Theorem: SciLean.DistribDiffrentiable.comp_rule
Proof 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
Proof 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
Theorem: SciLean.DistribDiffrentiable.comp_rule
Proof 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
Proof state after:
no goals
Theorem: SciLean.DistribDiffrentiable.comp_rule
Proof 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
Proof state after:
no goals
Theorem: SciLean.parDistribDeriv.comp_rule
Proof state before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
⊢ (parDistribDeriv fun x => f (g x)) = fun x dx =>
    let ydy := ∂> g x dx;
    parDistribDeriv f ydy.1 ydy.2
Tactic:
funext x dx
Proof state after:
case h.h
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
⊢ parDistribDeriv (fun x => f (g x)) x dx =
    let ydy := ∂> g x dx;
    parDistribDeriv f ydy.1 ydy.2
Theorem: SciLean.parDistribDeriv.comp_rule
Proof state before:
case h.h
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
⊢ parDistribDeriv (fun x => f (g x)) x dx =
    let ydy := ∂> g x dx;
    parDistribDeriv f ydy.1 ydy.2
Tactic:
ext φ
Proof state after:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
φ : 𝒟 Z
⊢ (parDistribDeriv (fun x => f (g x)) x dx) φ =
    (let ydy := ∂> g x dx;
      parDistribDeriv f ydy.1 ydy.2)
      φ
Theorem: SciLean.parDistribDeriv.comp_rule
Proof state before:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
φ : 𝒟 Z
⊢ (parDistribDeriv (fun x => f (g x)) x dx) φ =
    (let ydy := ∂> g x dx;
      parDistribDeriv f ydy.1 ydy.2)
      φ
Tactic:
unfold parDistribDeriv
Proof state after:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
φ : 𝒟 Z
⊢ (fun φ ⊸ ∂ (x':=x;dx), ((fun x => f (g x)) x') φ) φ =
    (let ydy := ∂> g x dx;
      fun φ ⊸ ∂ (x':=ydy.1;ydy.2), (f x') φ)
      φ
Theorem: SciLean.parDistribDeriv.comp_rule
Proof state before:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
φ : 𝒟 Z
⊢ (fun φ ⊸ ∂ (x':=x;dx), ((fun x => f (g x)) x') φ) φ =
    (let ydy := ∂> g x dx;
      fun φ ⊸ ∂ (x':=ydy.1;ydy.2), (f x') φ)
      φ
Tactic:
simp[hg]
Proof state after:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
φ : 𝒟 Z
⊢ ∂ (x':=x;dx), (f (g x')) φ = ∂ (x':=(∂> g x dx).1;(∂> g x dx).2), (f x') φ
Theorem: SciLean.parDistribDeriv.comp_rule
Proof state before:
case h.h.a
R : Type u_1
inst✝⁹ : RealScalar R
W : Type ?u.67507
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.69161
inst✝ : Vec R V
f : Y → 𝒟'(Z, U)
g : X → Y
hf : DistribDifferentiable f
hg : CDifferentiable R g
x dx : X
φ : 𝒟 Z
⊢ ∂ (x':=x;dx), (f (g x')) φ = ∂ (x':=(∂> g x dx).1;(∂> g x dx).2), (f x') φ
Tactic:
sorry_proof
Proof state after:
no goals
Theorem: SciLean.Bind.bind.arg_fx.DistribDifferentiable_rule
Proof state before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
⊢ DistribDifferentiable fun x => Distribution.bind (g x) (f x) L
Tactic:
intro x
Proof state after:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
⊢ DistribDifferentiableAt (fun x => Distribution.bind (g x) (f x) L) x
Theorem: SciLean.Bind.bind.arg_fx.DistribDifferentiable_rule
Proof state before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
⊢ DistribDifferentiableAt (fun x => Distribution.bind (g x) (f x) L) x
Tactic:
unfold DistribDifferentiableAt
Proof state after:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
⊢ ∀ (φ : X → 𝒟 Z),
    CDifferentiableAt R φ x → CDifferentiableAt R (fun x => ((fun x => Distribution.bind (g x) (f x) L) x) (φ x)) x
Theorem: SciLean.Bind.bind.arg_fx.DistribDifferentiable_rule
Proof state before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
⊢ ∀ (φ : X → 𝒟 Z),
    CDifferentiableAt R φ x → CDifferentiableAt R (fun x => ((fun x => Distribution.bind (g x) (f x) L) x) (φ x)) x
Tactic:
intro φ hφ
Proof state after:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiableAt R (fun x => ((fun x => Distribution.bind (g x) (f x) L) x) (φ x)) x
Theorem: SciLean.Bind.bind.arg_fx.DistribDifferentiable_rule
Proof state before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiableAt R (fun x => ((fun x => Distribution.bind (g x) (f x) L) x) (φ x)) x
Tactic:
simp
Proof state after:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiableAt R (fun x => ⟪g x, fun x' => extAction' (f x x') ⇑(φ x)⟫[L]) x
Theorem: SciLean.Bind.bind.arg_fx.DistribDifferentiable_rule
Proof state before:
R : Type u_1
inst✝⁹ : RealScalar R
W : Type u_6
inst✝⁸ : Vec R W
X : Type u_7
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_5
inst✝¹ : Vec R U
V : Type u_3
inst✝ : Vec R V
f : X → Y → 𝒟'(Z, V)
g : X → 𝒟'(Y, U)
L : U ⊸[R] V ⊸[R] W
hf :
  DistribDifferentiable fun x =>
    match x with
    | (x, y) => f x y
hg : DistribDifferentiable g
x : X
φ : X → 𝒟 Z
hφ : CDifferentiableAt R φ x
⊢ CDifferentiableAt R (fun x => ⟪g x, fun x' => extAction' (f x x') ⇑(φ x)⟫[L]) x
Tactic:
sorry_proof
Proof state after:
no goals
Theorem: SciLean.toDistribution.linear_parDistribDeriv_rule
Proof 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
Proof 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)
Theorem: SciLean.toDistribution.linear_parDistribDeriv_rule
Proof 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
Proof 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') φ) φ)
Theorem: SciLean.toDistribution.linear_parDistribDeriv_rule
Proof 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 φ
Proof 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') φ) φ))
      φ
Theorem: SciLean.toDistribution.linear_parDistribDeriv_rule
Proof 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]
Proof 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)
Theorem: SciLean.toDistribution.linear_parDistribDeriv_rule
Proof 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
Proof state after:
no goals
Theorem: SciLean.cintegral.arg_f.parDistribDeriv_rule
Proof state before:
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
⊢ (parDistribDeriv fun w => ↑fun x => ∫' y, f w x y) = fun w dw =>
    let Tf := fun w => ↑fun x => ↑fun y => f w x y;
    postComp (parDistribDeriv Tf w dw) (fun T ⊸[R] ⟪T, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z])
Tactic:
funext w dw
Proof state after:
case h.h
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
w dw : W
⊢ parDistribDeriv (fun w => ↑fun x => ∫' y, f w x y) w dw =
    let Tf := fun w => ↑fun x => ↑fun y => f w x y;
    postComp (parDistribDeriv Tf w dw) (fun T ⊸[R] ⟪T, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z])
Theorem: SciLean.cintegral.arg_f.parDistribDeriv_rule
Proof state before:
case h.h
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
w dw : W
⊢ parDistribDeriv (fun w => ↑fun x => ∫' y, f w x y) w dw =
    let Tf := fun w => ↑fun x => ↑fun y => f w x y;
    postComp (parDistribDeriv Tf w dw) (fun T ⊸[R] ⟪T, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z])
Tactic:
unfold parDistribDeriv postComp Function.toDistribution
Proof state after:
case h.h
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
w dw : W
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => ∫' y, f w x y) x) x') φ) =
    let Tf := fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => fun φ ⊸[R] ∫' x_1, φ x_1 • (fun y => f w x y) x_1) x;
    fun φ ⊸[R] (fun T ⊸[R] ⟪T, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z]) ((fun φ ⊸ ∂ (x':=w;dw), (Tf x') φ) φ)
Theorem: SciLean.cintegral.arg_f.parDistribDeriv_rule
Proof state before:
case h.h
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
w dw : W
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => ∫' y, f w x y) x) x') φ) =
    let Tf := fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => fun φ ⊸[R] ∫' x_1, φ x_1 • (fun y => f w x y) x_1) x;
    fun φ ⊸[R] (fun T ⊸[R] ⟪T, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z]) ((fun φ ⊸ ∂ (x':=w;dw), (Tf x') φ) φ)
Tactic:
ext φ
Proof state after:
case h.h.a
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
w dw : W
φ : 𝒟 X
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => ∫' y, f w x y) x) x') φ) φ =
    (let Tf := fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => fun φ ⊸[R] ∫' x_1, φ x_1 • (fun y => f w x y) x_1) x;
      fun φ ⊸[R] (fun T ⊸[R] ⟪T, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z]) ((fun φ ⊸ ∂ (x':=w;dw), (Tf x') φ) φ))
      φ
Theorem: SciLean.cintegral.arg_f.parDistribDeriv_rule
Proof state before:
case h.h.a
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
w dw : W
φ : 𝒟 X
⊢ (fun φ ⊸ ∂ (x':=w;dw), ((fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => ∫' y, f w x y) x) x') φ) φ =
    (let Tf := fun w => fun φ ⊸[R] ∫' x, φ x • (fun x => fun φ ⊸[R] ∫' x_1, φ x_1 • (fun y => f w x y) x_1) x;
      fun φ ⊸[R] (fun T ⊸[R] ⟪T, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z]) ((fun φ ⊸ ∂ (x':=w;dw), (Tf x') φ) φ))
      φ
Tactic:
simp [ftrans_simp]
Proof state after:
case h.h.a
R : Type u_1
inst✝¹² : RealScalar R
W : Type u_2
inst✝¹¹ : Vec R W
X : Type u_3
inst✝¹⁰ : Vec R X
inst✝⁹ : MeasureSpace X
Y : Type u_5
inst✝⁸ : Vec R Y
inst✝⁷ : Module ℝ Y
Z : Type u_4
inst✝⁶ : Vec R Z
inst✝⁵ : Module ℝ Z
U : Type ?u.142717
inst✝⁴ : Vec R U
V : Type ?u.142738
inst✝³ : Vec R V
inst✝² : MeasureSpace X
inst✝¹ : MeasureSpace Y
inst✝ : MeasureSpace (X × Y)
f : W → X → Y → Z
w dw : W
φ : 𝒟 X
⊢ ∂ (x':=w;dw), ∫' x, φ x • ∫' y, f x' x y =
    ⟪∂ (x':=w;dw), ∫' x, φ x • fun φ ⊸[R] ∫' x_1, φ x_1 • f x' x x_1, fun x => 1⟫[fun z ⊸[R] fun r ⊸[R] r • z]