Theorem: ContinuousMap.AlgHom.closure_ker_inter
File: Mathlib/Topology/ContinuousFunction/StoneWeierstrass.lean

tactic: refine subset_antisymm ?_ ?_
state_before: X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
⊢ closure (↑s ∩ ↑(RingHom.ker φ)) = closure ↑s ∩ ↑(RingHom.ker φ)
state_after: case refine_1
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
⊢ closure (↑s ∩ ↑(RingHom.ker φ)) ⊆ closure ↑s ∩ ↑(RingHom.ker φ)

case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
⊢ closure ↑s ∩ ↑(RingHom.ker φ) ⊆ closure (↑s ∩ ↑(RingHom.ker φ))

tactic: simpa only [ker_eq, (isClosed_singleton.preimage hφ).closure_eq]
  using closure_inter_subset_inter_closure s (ker φ : Set A)
state_before: case refine_1
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
⊢ closure (↑s ∩ ↑(RingHom.ker φ)) ⊆ closure ↑s ∩ ↑(RingHom.ker φ)
state_after: no goals

tactic: intro x ⟨hxs, (hxφ : φ x = 0)⟩
state_before: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
⊢ closure ↑s ∩ ↑(RingHom.ker φ) ⊆ closure (↑s ∩ ↑(RingHom.ker φ))
state_after: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : x ∈ closure ↑s
hxφ : φ x = 0
⊢ x ∈ closure (↑s ∩ ↑(RingHom.ker φ))

tactic: rw [mem_closure_iff_clusterPt, ClusterPt] at hxs
state_before: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : x ∈ closure ↑s
hxφ : φ x = 0
⊢ x ∈ closure (↑s ∩ ↑(RingHom.ker φ))
state_after: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
⊢ x ∈ closure (↑s ∩ ↑(RingHom.ker φ))

tactic: have : Tendsto (fun y ↦ y - φ y • 1) (𝓝 x ⊓ 𝓟 s) (𝓝 x) := by
  conv => congr; rfl; rfl; rw [← sub_zero x, ← zero_smul K 1, ← hxφ]
  exact Filter.tendsto_inf_left (Continuous.tendsto (by fun_prop) x)
state_before: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
⊢ x ∈ closure (↑s ∩ ↑(RingHom.ker φ))
state_after: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
this : Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 x)
⊢ x ∈ closure (↑s ∩ ↑(RingHom.ker φ))

tactic: refine mem_closure_of_tendsto this <| eventually_inf_principal.mpr ?_
state_before: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
this : Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 x)
⊢ x ∈ closure (↑s ∩ ↑(RingHom.ker φ))
state_after: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
this : Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 x)
⊢ ∀ᶠ (x : A) in 𝓝 x, x ∈ ↑s → x - φ x • 1 ∈ ↑s ∩ ↑(RingHom.ker φ)

tactic: filter_upwards [] with g hg using
  ⟨sub_mem hg (SMulMemClass.smul_mem _ <| one_mem _), by simp [RingHom.mem_ker]⟩
state_before: case refine_2
X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
this : Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 x)
⊢ ∀ᶠ (x : A) in 𝓝 x, x ∈ ↑s → x - φ x • 1 ∈ ↑s ∩ ↑(RingHom.ker φ)
state_after: no goals

tactic: conv => congr; rfl; rfl; rw [← sub_zero x, ← zero_smul K 1, ← hxφ]
state_before: X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
⊢ Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 x)
state_after: X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
⊢ Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 (x - φ x • 1))

tactic: exact Filter.tendsto_inf_left (Continuous.tendsto (by fun_prop) x)
state_before: X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
⊢ Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 (x - φ x • 1))
state_after: no goals

tactic: fun_prop
state_before: X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
⊢ Continuous fun y => y - φ y • 1
state_after: no goals

tactic: simp [RingHom.mem_ker]
state_before: X : Type u_1
inst✝¹⁵ : TopologicalSpace X
𝕜 : Type u_2
inst✝¹⁴ : RCLike 𝕜
F : Type u_3
S : Type u_4
K : Type u_5
A : Type u_6
inst✝¹³ : CommRing K
inst✝¹² : Ring A
inst✝¹¹ : Algebra K A
inst✝¹⁰ : TopologicalSpace K
inst✝⁹ : T1Space K
inst✝⁸ : TopologicalSpace A
inst✝⁷ : ContinuousSub A
inst✝⁶ : ContinuousSMul K A
inst✝⁵ : FunLike F A K
inst✝⁴ : AlgHomClass F K A K
inst✝³ : SetLike S A
inst✝² : OneMemClass S A
inst✝¹ : AddSubgroupClass S A
inst✝ : SMulMemClass S K A
φ : F
hφ : Continuous ⇑φ
s : S
x : A
hxs : (𝓝 x ⊓ 𝓟 ↑s).NeBot
hxφ : φ x = 0
this : Tendsto (fun y => y - φ y • 1) (𝓝 x ⊓ 𝓟 ↑s) (𝓝 x)
g : A
hg : g ∈ ↑s
⊢ g - φ g • 1 ∈ ↑(RingHom.ker φ)
state_after: no goals