Theorem: ContMDiffWithinAt.prod
File: Mathlib/Geometry/Manifold/Algebra/Monoid.lean

tactic: induction' t using Finset.induction_on with i K iK IH
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
H : Type u_3
inst✝¹¹ : TopologicalSpace H
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G : Type u_5
inst✝⁸ : CommMonoid G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : ChartedSpace H G
inst✝⁵ : SmoothMul I G
E' : Type u_6
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H' M
s : Set M
x x₀ : M
t : Finset ι
f : ι → M → G
n : ℕ∞
p : ι → Prop
h : ∀ i ∈ t, ContMDiffWithinAt I' I n (f i) s x₀
⊢ ContMDiffWithinAt I' I n (fun x => ∏ i ∈ t, f i x) s x₀
state_after: case empty
ι : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
H : Type u_3
inst✝¹¹ : TopologicalSpace H
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G : Type u_5
inst✝⁸ : CommMonoid G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : ChartedSpace H G
inst✝⁵ : SmoothMul I G
E' : Type u_6
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H' M
s : Set M
x x₀ : M
t : Finset ι
f : ι → M → G
n : ℕ∞
p : ι → Prop
h : ∀ i ∈ ∅, ContMDiffWithinAt I' I n (f i) s x₀
⊢ ContMDiffWithinAt I' I n (fun x => ∏ i ∈ ∅, f i x) s x₀

case insert
ι : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
H : Type u_3
inst✝¹¹ : TopologicalSpace H
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G : Type u_5
inst✝⁸ : CommMonoid G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : ChartedSpace H G
inst✝⁵ : SmoothMul I G
E' : Type u_6
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H' M
s : Set M
x x₀ : M
t : Finset ι
f : ι → M → G
n : ℕ∞
p : ι → Prop
i : ι
K : Finset ι
iK : i ∉ K
IH : (∀ i ∈ K, ContMDiffWithinAt I' I n (f i) s x₀) → ContMDiffWithinAt I' I n (fun x => ∏ i ∈ K, f i x) s x₀
h : ∀ i_1 ∈ Insert.insert i K, ContMDiffWithinAt I' I n (f i_1) s x₀
⊢ ContMDiffWithinAt I' I n (fun x => ∏ i ∈ Insert.insert i K, f i x) s x₀

tactic: simp [contMDiffWithinAt_const]
state_before: case empty
ι : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
H : Type u_3
inst✝¹¹ : TopologicalSpace H
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G : Type u_5
inst✝⁸ : CommMonoid G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : ChartedSpace H G
inst✝⁵ : SmoothMul I G
E' : Type u_6
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H' M
s : Set M
x x₀ : M
t : Finset ι
f : ι → M → G
n : ℕ∞
p : ι → Prop
h : ∀ i ∈ ∅, ContMDiffWithinAt I' I n (f i) s x₀
⊢ ContMDiffWithinAt I' I n (fun x => ∏ i ∈ ∅, f i x) s x₀
state_after: no goals

tactic: simp only [iK, Finset.prod_insert, not_false_iff]
state_before: case insert
ι : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
H : Type u_3
inst✝¹¹ : TopologicalSpace H
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G : Type u_5
inst✝⁸ : CommMonoid G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : ChartedSpace H G
inst✝⁵ : SmoothMul I G
E' : Type u_6
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H' M
s : Set M
x x₀ : M
t : Finset ι
f : ι → M → G
n : ℕ∞
p : ι → Prop
i : ι
K : Finset ι
iK : i ∉ K
IH : (∀ i ∈ K, ContMDiffWithinAt I' I n (f i) s x₀) → ContMDiffWithinAt I' I n (fun x => ∏ i ∈ K, f i x) s x₀
h : ∀ i_1 ∈ Insert.insert i K, ContMDiffWithinAt I' I n (f i_1) s x₀
⊢ ContMDiffWithinAt I' I n (fun x => ∏ i ∈ Insert.insert i K, f i x) s x₀
state_after: case insert
ι : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
H : Type u_3
inst✝¹¹ : TopologicalSpace H
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G : Type u_5
inst✝⁸ : CommMonoid G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : ChartedSpace H G
inst✝⁵ : SmoothMul I G
E' : Type u_6
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H' M
s : Set M
x x₀ : M
t : Finset ι
f : ι → M → G
n : ℕ∞
p : ι → Prop
i : ι
K : Finset ι
iK : i ∉ K
IH : (∀ i ∈ K, ContMDiffWithinAt I' I n (f i) s x₀) → ContMDiffWithinAt I' I n (fun x => ∏ i ∈ K, f i x) s x₀
h : ∀ i_1 ∈ Insert.insert i K, ContMDiffWithinAt I' I n (f i_1) s x₀
⊢ ContMDiffWithinAt I' I n (fun x => f i x * ∏ i ∈ K, f i x) s x₀

tactic: exact (h _ (Finset.mem_insert_self i K)).mul (IH fun j hj ↦ h _ <| Finset.mem_insert_of_mem hj)
state_before: case insert
ι : Type u_1
𝕜 : Type u_2
inst✝¹² : NontriviallyNormedField 𝕜
H : Type u_3
inst✝¹¹ : TopologicalSpace H
E : Type u_4
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
I : ModelWithCorners 𝕜 E H
G : Type u_5
inst✝⁸ : CommMonoid G
inst✝⁷ : TopologicalSpace G
inst✝⁶ : ChartedSpace H G
inst✝⁵ : SmoothMul I G
E' : Type u_6
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
H' : Type u_7
inst✝² : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_8
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H' M
s : Set M
x x₀ : M
t : Finset ι
f : ι → M → G
n : ℕ∞
p : ι → Prop
i : ι
K : Finset ι
iK : i ∉ K
IH : (∀ i ∈ K, ContMDiffWithinAt I' I n (f i) s x₀) → ContMDiffWithinAt I' I n (fun x => ∏ i ∈ K, f i x) s x₀
h : ∀ i_1 ∈ Insert.insert i K, ContMDiffWithinAt I' I n (f i_1) s x₀
⊢ ContMDiffWithinAt I' I n (fun x => f i x * ∏ i ∈ K, f i x) s x₀
state_after: no goals