Theorem: ContinuousMap.ker_evalStarAlgHom_inter_adjoin_id
File: Mathlib/Topology/ContinuousFunction/StoneWeierstrass.lean

tactic: ext f
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
⊢ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) =
    ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
state_after: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) ↔
    f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})

tactic: constructor
state_before: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) ↔
    f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
state_after: case h.mp
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) →
    f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})

case h.mpr
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) →
    f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩))

tactic: rintro ⟨hf₁, hf₂⟩
state_before: case h.mp
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) →
    f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
state_after: case h.mp.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf₁ : f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
hf₂ : f ∈ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩))
⊢ f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})

tactic: rw [SetLike.mem_coe] at hf₂ ⊢
state_before: case h.mp.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf₁ : f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
hf₂ : f ∈ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩))
⊢ f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
state_after: case h.mp.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf₁ : f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
hf₂ : f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
⊢ f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}

tactic: simp_rw [adjoin_id_eq_span_one_add, Set.mem_add, SetLike.mem_coe, mem_span_singleton] at hf₁
state_before: case h.mp.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf₁ : f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
hf₂ : f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
⊢ f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
state_after: case h.mp.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf₂ : f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
hf₁ : ∃ x, (∃ a, a • 1 = x) ∧ ∃ y ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}, x + y = f
⊢ f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}

tactic: obtain ⟨-, ⟨r, rfl⟩, f, hf, rfl⟩ := hf₁
state_before: case h.mp.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf₂ : f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
hf₁ : ∃ x, (∃ a, a • 1 = x) ∧ ∃ y ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}, x + y = f
⊢ f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
state_after: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : r • 1 + f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}

tactic: have := nonUnitalStarAlgebraAdjoin_id_subset_ker_evalStarAlgHom h0 hf
state_before: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : r • 1 + f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
state_after: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : r • 1 + f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
this : f ∈ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩))
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}

tactic: simp only [SetLike.mem_coe, RingHom.mem_ker, evalStarAlgHom_apply] at hf₂ this
state_before: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : r • 1 + f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
this : f ∈ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩))
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
state_after: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : (r • 1 + f) ⟨0, h0⟩ = 0
this : f ⟨0, h0⟩ = 0
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}

tactic: rw [add_apply, this, add_zero, smul_apply, one_apply, smul_eq_mul, mul_one] at hf₂
state_before: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : (r • 1 + f) ⟨0, h0⟩ = 0
this : f ⟨0, h0⟩ = 0
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
state_after: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : r = 0
this : f ⟨0, h0⟩ = 0
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}

tactic: rwa [hf₂, zero_smul, zero_add]
state_before: case h.mp.intro.intro.intro.intro.intro.intro
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
r : 𝕜
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
hf₂ : r = 0
this : f ⟨0, h0⟩ = 0
⊢ r • 1 + f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
state_after: no goals

tactic: simp only [Set.mem_inter_iff, SetLike.mem_coe]
state_before: case h.mpr
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) →
    f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩))
state_after: case h.mpr
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)} →
    f ∈ StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)} ∧ f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)

tactic: refine fun hf ↦ ⟨?_, nonUnitalStarAlgebraAdjoin_id_subset_ker_evalStarAlgHom h0 hf⟩
state_before: case h.mpr
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)} →
    f ∈ StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)} ∧ f ∈ RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)
state_after: case h.mpr
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
⊢ f ∈ StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}

tactic: exact adjoin_le_starAlgebra_adjoin _ _ hf
state_before: case h.mpr
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
hf : f ∈ adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
⊢ f ∈ StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}
state_after: no goals