Theorem: UniqueDiffWithinAt.univ_pi
File: Mathlib/Analysis/Calculus/TangentCone.lean

tactic: classical
simp only [uniqueDiffWithinAt_iff, closure_pi_set] at h⊢
refine' ⟨(dense_pi univ fun i _ => (h i).1).mono _, fun i _ => (h i).2⟩
norm_cast
simp only [← Submodule.iSup_map_single, iSup_le_iff, LinearMap.map_span, Submodule.span_le,
  ← mapsTo']
exact fun i => (mapsTo_tangentCone_pi fun j _ => (h j).2).mono Subset.rfl Submodule.subset_span
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.136559
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.136654
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.136744
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
h : ∀ (i : ι), UniqueDiffWithinAt 𝕜 (s i) (x i)
⊢ UniqueDiffWithinAt 𝕜 (Set.pi univ s) x

tactic: simp only [uniqueDiffWithinAt_iff, closure_pi_set] at h⊢
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.136559
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.136654
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.136744
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
h : ∀ (i : ι), UniqueDiffWithinAt 𝕜 (s i) (x i)
⊢ UniqueDiffWithinAt 𝕜 (Set.pi univ s) x

tactic: refine' ⟨(dense_pi univ fun i _ => (h i).1).mono _, fun i _ => (h i).2⟩
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.136559
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.136654
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.136744
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
h : ∀ (i : ι), Dense ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (s i) (x i))) ∧ x i ∈ closure (s i)
⊢ Dense ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (Set.pi univ s) x)) ∧ x ∈ Set.pi univ fun i => closure (s i)

tactic: norm_cast
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.136559
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.136654
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.136744
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
h : ∀ (i : ι), Dense ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (s i) (x i))) ∧ x i ∈ closure (s i)
⊢ (Set.pi univ fun i => ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (s i) (x i)))) ⊆
    ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (Set.pi univ s) x))

tactic: simp only [← Submodule.iSup_map_single, iSup_le_iff, LinearMap.map_span, Submodule.span_le,
  ← mapsTo']
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.136559
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.136654
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.136744
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
h : ∀ (i : ι), Dense ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (s i) (x i))) ∧ x i ∈ closure (s i)
⊢ (Submodule.pi univ fun i => Submodule.span 𝕜 (tangentConeAt 𝕜 (s i) (x i))) ≤
    Submodule.span 𝕜 (tangentConeAt 𝕜 (Set.pi univ s) x)

tactic: exact fun i => (mapsTo_tangentCone_pi fun j _ => (h j).2).mono Subset.rfl Submodule.subset_span
state_before: 𝕜 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕜
E✝ : Type ?u.136559
inst✝⁸ : NormedAddCommGroup E✝
inst✝⁷ : NormedSpace 𝕜 E✝
F : Type ?u.136654
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
G : Type ?u.136744
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
x✝ y : E✝
s✝ t : Set E✝
ι : Type u_1
inst✝² : Finite ι
E : ι → Type u_2
inst✝¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝ : (i : ι) → NormedSpace 𝕜 (E i)
s : (i : ι) → Set (E i)
x : (i : ι) → E i
h : ∀ (i : ι), Dense ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (s i) (x i))) ∧ x i ∈ closure (s i)
⊢ ∀ (i : ι),
    MapsTo (fun a => ↑(LinearMap.single i) a) (tangentConeAt 𝕜 (s i) (x i))
      ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 (Set.pi univ s) x))