internlm/Lean-Github huggingface dataset:
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
⊢ smulRight (proj i) (∏ j in u, x j) + (proj i) x • ∑ x_1 in u, (∏ j in Finset.erase u x_1, x j) • proj x_1 =
    (∏ j in u, x j) • proj i + ∑ x_1 in u, (∏ j in Finset.erase (insert i u) x_1, x j) • proj x_1
Tactic:
refine congrArg₂ _ ?_ ?_
Proof state after:
case insert.refine_1
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
⊢ smulRight (proj i) (∏ j in u, x j) = (∏ j in u, x j) • proj i

case insert.refine_2
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
⊢ (proj i) x • ∑ x_1 in u, (∏ j in Finset.erase u x_1, x j) • proj x_1 =
    ∑ x_1 in u, (∏ j in Finset.erase (insert i u) x_1, x j) • proj x_1
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_1
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
⊢ smulRight (proj i) (∏ j in u, x j) = (∏ j in u, x j) • proj i
Tactic:
ext m
Proof state after:
case insert.refine_1.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ (smulRight (proj i) (∏ j in u, x j)) m = ((∏ j in u, x j) • proj i) m
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_1.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ (smulRight (proj i) (∏ j in u, x j)) m = ((∏ j in u, x j) • proj i) m
Tactic:
simp only [smulRight_apply (R := 𝕜), smul_apply, smul_eq_mul]
Proof state after:
case insert.refine_1.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ (proj i) m * ∏ j in u, x j = (∏ j in u, x j) * (proj i) m
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_1.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ (proj i) m * ∏ j in u, x j = (∏ j in u, x j) * (proj i) m
Tactic:
exact mul_comm _ _
Proof state after:
no goals
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_2
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
⊢ (proj i) x • ∑ x_1 in u, (∏ j in Finset.erase u x_1, x j) • proj x_1 =
    ∑ x_1 in u, (∏ j in Finset.erase (insert i u) x_1, x j) • proj x_1
Tactic:
ext m
Proof state after:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ ((proj i) x • ∑ x_1 in u, (∏ j in Finset.erase u x_1, x j) • proj x_1) m =
    (∑ x_1 in u, (∏ j in Finset.erase (insert i u) x_1, x j) • proj x_1) m
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ ((proj i) x • ∑ x_1 in u, (∏ j in Finset.erase u x_1, x j) • proj x_1) m =
    (∑ x_1 in u, (∏ j in Finset.erase (insert i u) x_1, x j) • proj x_1) m
Tactic:
simp only [smul_apply (R₁ := 𝕜), sum_apply (R₁ := 𝕜), Finset.smul_sum, smul_smul, proj_apply]
Proof state after:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ ∑ x_1 in u, (x i * ∏ j in Finset.erase u x_1, x j) • m x_1 =
    ∑ x_1 in u, (∏ j in Finset.erase (insert i u) x_1, x j) • m x_1
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ ∑ x_1 in u, (x i * ∏ j in Finset.erase u x_1, x j) • m x_1 =
    ∑ x_1 in u, (∏ j in Finset.erase (insert i u) x_1, x j) • m x_1
Tactic:
refine Finset.sum_congr rfl ?_
Proof state after:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ ∀ x_1 ∈ u, (x i * ∏ j in Finset.erase u x_1, x j) • m x_1 = (∏ j in Finset.erase (insert i u) x_1, x j) • m x_1
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
⊢ ∀ x_1 ∈ u, (x i * ∏ j in Finset.erase u x_1, x j) • m x_1 = (∏ j in Finset.erase (insert i u) x_1, x j) • m x_1
Tactic:
intro k hk
Proof state after:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
k : ι
hk : k ∈ u
⊢ (x i * ∏ j in Finset.erase u k, x j) • m k = (∏ j in Finset.erase (insert i u) k, x j) • m k
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
k : ι
hk : k ∈ u
⊢ (x i * ∏ j in Finset.erase u k, x j) • m k = (∏ j in Finset.erase (insert i u) k, x j) • m k
Tactic:
rw [Finset.erase_insert_of_ne fun hik ↦ hi <| by simpa [hik]]
Proof state after:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
k : ι
hk : k ∈ u
⊢ (x i * ∏ j in Finset.erase u k, x j) • m k = (∏ j in insert i (Finset.erase u k), x j) • m k
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
case insert.refine_2.h
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
k : ι
hk : k ∈ u
⊢ (x i * ∏ j in Finset.erase u k, x j) • m k = (∏ j in insert i (Finset.erase u k), x j) • m k
Tactic:
rw [Finset.prod_insert <| by simp [hi]]
Proof state after:
no goals
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
k : ι
hk : k ∈ u
hik : i = k
⊢ i ∈ u
Tactic:
simpa [hik]
Proof state after:
no goals
Theorem: hasStrictFDerivAt_finset_prod_univ
Proof state before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝¹ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : ι → 𝔸'
i : ι
u : Finset ι
hi : i ∉ u
IH : HasStrictFDerivAt (fun x => ∏ i in u, x i) (∑ i in u, (∏ j in Finset.erase u i, x j) • proj i) x
m : ι → 𝔸'
k : ι
hk : k ∈ u
⊢ i ∉ Finset.erase u k
Tactic:
simp [hi]
Proof state after:
no goals
Theorem: HasFDerivAt.finset_prod_univ
Proof state before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : E
hf : ∀ (i : ι), HasFDerivAt (f i) (f' i) x
⊢ HasFDerivAt (fun x => ∏ i : ι, f i x) (∑ i : ι, (∏ j in Finset.erase Finset.univ i, f j x) • f' i) x
Tactic:
refine (hasFDerivAt_finset_prod_univ.comp x <| hasFDerivAt_pi.mpr hf).congr_fderiv ?_
Proof state after:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹³ : NormedAddCommGroup D
inst✝¹² : NormedSpace 𝕜 D
E : Type uE
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type uF
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
G : Type uG
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁵ : NormedAddCommGroup X
inst✝⁴ : NormedSpace 𝕜 X
s s₁ t u✝ : Set E
f✝ f₁ : E → F
g : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
ι : Type u_3
inst✝³ : DecidableEq ι
𝔸' : Type u_4
inst✝² : NormedCommRing 𝔸'
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u : Finset ι
f : ι → E → 𝔸'
f' : ι → E →L[𝕜] 𝔸'
inst✝ : Fintype ι
x : E
hf : ∀ (i : ι), HasFDerivAt (f i) (f' i) x
⊢ ContinuousLinearMap.comp (∑ i : ι, (∏ j in Finset.erase Finset.univ i, f j x) • proj i) (pi fun i => f' i) =
    ∑ i : ι, (∏ j in Finset.erase Finset.univ i, f j x) • f' i