Theorem: gelfandTransform_bijective
File: Mathlib/Analysis/NormedSpace/Star/GelfandDuality.lean

tactic: refine ⟨(gelfandTransform_isometry A).injective, ?_⟩
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
⊢ Function.Bijective ⇑(gelfandTransform ℂ A)
state_after: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
⊢ Function.Surjective ⇑(gelfandTransform ℂ A)

tactic: let rng : StarSubalgebra ℂ C(characterSpace ℂ A, ℂ) :=
  { toSubalgebra := (gelfandTransform ℂ A).range
    star_mem' := by
      rintro - ⟨a, rfl⟩
      use star a
      ext1 φ
      dsimp
      simp only [map_star, RCLike.star_def] }
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
⊢ Function.Surjective ⇑(gelfandTransform ℂ A)
state_after: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
⊢ Function.Surjective ⇑(gelfandTransform ℂ A)

tactic: suffices rng = ⊤ from
  fun x => show x ∈ rng from this.symm ▸ StarSubalgebra.mem_top
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
⊢ Function.Surjective ⇑(gelfandTransform ℂ A)
state_after: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
⊢ rng = ⊤

tactic: have h : rng.topologicalClosure = rng := le_antisymm
  (StarSubalgebra.topologicalClosure_minimal le_rfl
    (gelfandTransform_isometry A).closedEmbedding.isClosed_range)
  (StarSubalgebra.le_topologicalClosure _)
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
⊢ rng = ⊤
state_after: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
h : rng.topologicalClosure = rng
⊢ rng = ⊤

tactic: refine h ▸ ContinuousMap.starSubalgebra_topologicalClosure_eq_top_of_separatesPoints
  _ (fun _ _ => ?_)
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
h : rng.topologicalClosure = rng
⊢ rng = ⊤
state_after: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
h : rng.topologicalClosure = rng
x✝¹ x✝ : ↑(characterSpace ℂ A)
⊢ x✝¹ ≠ x✝ → ∃ f ∈ (fun f => ⇑f) '' ↑rng.toSubalgebra, f x✝¹ ≠ f x✝

tactic: contrapose!
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
h : rng.topologicalClosure = rng
x✝¹ x✝ : ↑(characterSpace ℂ A)
⊢ x✝¹ ≠ x✝ → ∃ f ∈ (fun f => ⇑f) '' ↑rng.toSubalgebra, f x✝¹ ≠ f x✝
state_after: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
h : rng.topologicalClosure = rng
x✝¹ x✝ : ↑(characterSpace ℂ A)
⊢ (∀ f ∈ (fun f => ⇑f) '' ↑rng.toSubalgebra, f x✝¹ = f x✝) → x✝¹ = x✝

tactic: exact fun h => Subtype.ext (ContinuousLinearMap.ext fun a =>
  h (gelfandTransform ℂ A a) ⟨gelfandTransform ℂ A a, ⟨a, rfl⟩, rfl⟩)
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
rng : StarSubalgebra ℂ C(↑(characterSpace ℂ A), ℂ) := { toSubalgebra := (gelfandTransform ℂ A).range, star_mem' := ⋯ }
h : rng.topologicalClosure = rng
x✝¹ x✝ : ↑(characterSpace ℂ A)
⊢ (∀ f ∈ (fun f => ⇑f) '' ↑rng.toSubalgebra, f x✝¹ = f x✝) → x✝¹ = x✝
state_after: no goals

tactic: rintro - ⟨a, rfl⟩
state_before: A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
⊢ ∀ {a : C(↑(characterSpace ℂ A), ℂ)},
    a ∈ (gelfandTransform ℂ A).range.carrier → star a ∈ (gelfandTransform ℂ A).range.carrier
state_after: case intro
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
⊢ star ((gelfandTransform ℂ A).toRingHom a) ∈ (gelfandTransform ℂ A).range.carrier

tactic: use star a
state_before: case intro
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
⊢ star ((gelfandTransform ℂ A).toRingHom a) ∈ (gelfandTransform ℂ A).range.carrier
state_after: case h
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
⊢ (gelfandTransform ℂ A).toRingHom (star a) = star ((gelfandTransform ℂ A).toRingHom a)

tactic: ext1 φ
state_before: case h
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
⊢ (gelfandTransform ℂ A).toRingHom (star a) = star ((gelfandTransform ℂ A).toRingHom a)
state_after: case h.h
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
φ : ↑(characterSpace ℂ A)
⊢ ((gelfandTransform ℂ A).toRingHom (star a)) φ = (star ((gelfandTransform ℂ A).toRingHom a)) φ

tactic: dsimp
state_before: case h.h
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
φ : ↑(characterSpace ℂ A)
⊢ ((gelfandTransform ℂ A).toRingHom (star a)) φ = (star ((gelfandTransform ℂ A).toRingHom a)) φ
state_after: case h.h
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
φ : ↑(characterSpace ℂ A)
⊢ φ (star a) = (starRingEnd ℂ) (φ a)

tactic: simp only [map_star, RCLike.star_def]
state_before: case h.h
A : Type u_1
inst✝⁵ : NormedCommRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : CompleteSpace A
inst✝² : StarRing A
inst✝¹ : CstarRing A
inst✝ : StarModule ℂ A
a : A
φ : ↑(characterSpace ℂ A)
⊢ φ (star a) = (starRingEnd ℂ) (φ a)
state_after: no goals