Theorem: isSelfAdjoint_iff_isStarNormal_and_spectrumRestricts
File: Mathlib/Analysis/NormedSpace/Star/ContinuousFunctionalCalculus/Instances.lean

tactic: refine ⟨fun ha ↦ ⟨ha.isStarNormal, .of_rightInvOn Complex.ofReal_re fun x hx ↦ ?_⟩, ?_⟩
state_before: A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
⊢ IsSelfAdjoint a ↔ IsStarNormal a ∧ SpectrumRestricts a ⇑Complex.reCLM
state_after: case refine_1
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha : IsSelfAdjoint a
x : ℂ
hx : x ∈ σ ℂ a
⊢ (algebraMap ℝ ℂ) (Complex.reCLM x) = x

case refine_2
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
⊢ IsStarNormal a ∧ SpectrumRestricts a ⇑Complex.reCLM → IsSelfAdjoint a

tactic: have := eqOn_of_cfc_eq_cfc <| (cfc_star (id : ℂ → ℂ) a).symm ▸ (cfc_id ℂ a).symm ▸ ha.star_eq
state_before: case refine_1
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha : IsSelfAdjoint a
x : ℂ
hx : x ∈ σ ℂ a
⊢ (algebraMap ℝ ℂ) (Complex.reCLM x) = x
state_after: case refine_1
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha : IsSelfAdjoint a
x : ℂ
hx : x ∈ σ ℂ a
this : Set.EqOn (fun x => star (id x)) id (σ ℂ a)
⊢ (algebraMap ℝ ℂ) (Complex.reCLM x) = x

tactic: exact Complex.conj_eq_iff_re.mp (by simpa using this hx)
state_before: case refine_1
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha : IsSelfAdjoint a
x : ℂ
hx : x ∈ σ ℂ a
this : Set.EqOn (fun x => star (id x)) id (σ ℂ a)
⊢ (algebraMap ℝ ℂ) (Complex.reCLM x) = x
state_after: no goals

tactic: simpa using this hx
state_before: A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha : IsSelfAdjoint a
x : ℂ
hx : x ∈ σ ℂ a
this : Set.EqOn (fun x => star (id x)) id (σ ℂ a)
⊢ (starRingEnd ℂ) x = x
state_after: no goals

tactic: rintro ⟨ha₁, ha₂⟩
state_before: case refine_2
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
⊢ IsStarNormal a ∧ SpectrumRestricts a ⇑Complex.reCLM → IsSelfAdjoint a
state_after: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ IsSelfAdjoint a

tactic: rw [isSelfAdjoint_iff]
state_before: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ IsSelfAdjoint a
state_after: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ star a = a

tactic: nth_rw 2 [← cfc_id ℂ a]
state_before: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ star a = a
state_after: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ star a = cfc id a

tactic: rw [← cfc_star_id a (R := ℂ)]
state_before: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ star a = cfc id a
state_after: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ cfc (fun x => star x) a = cfc id a

tactic: refine cfc_congr fun x hx ↦ ?_
state_before: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
⊢ cfc (fun x => star x) a = cfc id a
state_after: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
x : ℂ
hx : x ∈ σ ℂ a
⊢ star x = id x

tactic: obtain ⟨x, -, rfl⟩ := ha₂.algebraMap_image.symm ▸ hx
state_before: case refine_2.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
x : ℂ
hx : x ∈ σ ℂ a
⊢ star x = id x
state_after: case refine_2.intro.intro.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
x : ℝ
hx : (algebraMap ℝ ℂ) x ∈ σ ℂ a
⊢ star ((algebraMap ℝ ℂ) x) = id ((algebraMap ℝ ℂ) x)

tactic: exact Complex.conj_ofReal _
state_before: case refine_2.intro.intro.intro
A : Type u_1
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra ℂ A
inst✝¹ : StarModule ℂ A
inst✝ : ContinuousFunctionalCalculus ℂ IsStarNormal
a : A
ha₁ : IsStarNormal a
ha₂ : SpectrumRestricts a ⇑Complex.reCLM
x : ℝ
hx : (algebraMap ℝ ℂ) x ∈ σ ℂ a
⊢ star ((algebraMap ℝ ℂ) x) = id ((algebraMap ℝ ℂ) x)
state_after: no goals