Theorem: BumpCovering.exists_finset_toPOUFun_eventuallyEq
File: Mathlib/Topology/PartitionOfUnity.lean

Proof steps:
state_before: ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
⊢ ∃ t, f.toPOUFun i =ᶠ[𝓝 x] ⇑(f i) * ⇑(∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) t, (1 - f j))
state_after: case intro.intro
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
⊢ ∃ t, f.toPOUFun i =ᶠ[𝓝 x] ⇑(f i) * ⇑(∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) t, (1 - f j))
tactic: rcases f.locallyFinite x with ⟨U, hU, hf⟩
state_before: case intro.intro
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
⊢ ∃ t, f.toPOUFun i =ᶠ[𝓝 x] ⇑(f i) * ⇑(∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) t, (1 - f j))
state_after: case h
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
⊢ f.toPOUFun i =ᶠ[𝓝 x] ⇑(f i) * ⇑(∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) hf.toFinset, (1 - f j))
tactic: use hf.toFinset
state_before: case h
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
⊢ f.toPOUFun i =ᶠ[𝓝 x] ⇑(f i) * ⇑(∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) hf.toFinset, (1 - f j))
state_after: case h
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
⊢ f.toPOUFun i y = (⇑(f i) * ⇑(∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) hf.toFinset, (1 - f j))) y
tactic: filter_upwards [hU] with y hyU
state_before: case h
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
⊢ f.toPOUFun i y = (⇑(f i) * ⇑(∏ j ∈ Finset.filter (fun j => WellOrderingRel j i) hf.toFinset, (1 - f j))) y
state_after: case h
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
⊢ f.toPOUFun i y = (f i) y * ∏ c ∈ Finset.filter (fun j => WellOrderingRel j i) hf.toFinset, (1 - f c) y
tactic: simp only [ContinuousMap.coe_prod, Pi.mul_apply, Finset.prod_apply]
state_before: case h
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
⊢ f.toPOUFun i y = (f i) y * ∏ c ∈ Finset.filter (fun j => WellOrderingRel j i) hf.toFinset, (1 - f c) y
state_after: case h.ht
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
⊢ ∀ (j : ι), WellOrderingRel j i → (f j) y ≠ 0 → j ∈ hf.toFinset
tactic: apply toPOUFun_eq_mul_prod
state_before: case h.ht
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
⊢ ∀ (j : ι), WellOrderingRel j i → (f j) y ≠ 0 → j ∈ hf.toFinset
state_after: case h.ht
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
j : ι
a✝ : WellOrderingRel j i
hj : (f j) y ≠ 0
⊢ j ∈ hf.toFinset
tactic: intro j _ hj
state_before: case h.ht
ι : Type u
X : Type v
inst✝ : TopologicalSpace X
s : Set X
f : BumpCovering ι X s
i : ι
x : X
U : Set X
hU : U ∈ 𝓝 x
hf : {i | ((fun i => support ⇑(f i)) i ∩ U).Nonempty}.Finite
y : X
hyU : y ∈ U
j : ι
a✝ : WellOrderingRel j i
hj : (f j) y ≠ 0
⊢ j ∈ hf.toFinset
state_after: no goals
tactic: exact hf.mem_toFinset.2 ⟨y, ⟨hj, hyU⟩⟩