Theorem: nonneg_iff_isSelfAdjoint_and_quasispectrumRestricts
File: Mathlib/Analysis/CstarAlgebra/ContinuousFunctionalCalculus/Instances.lean

Proof steps:
state_before: A : Type u_1
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : PartialOrder A
inst✝⁸ : StarRing A
inst✝⁷ : StarOrderedRing A
inst✝⁶ : TopologicalSpace A
inst✝⁵ : Module ℝ A
inst✝⁴ : IsScalarTower ℝ A A
inst✝³ : SMulCommClass ℝ A A
inst✝² : NonUnitalContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : NonnegSpectrumClass ℝ A
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus ℝ A
a : A
⊢ 0 ≤ a ↔ IsSelfAdjoint a ∧ QuasispectrumRestricts a ⇑ContinuousMap.realToNNReal
state_after: A : Type u_1
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : PartialOrder A
inst✝⁸ : StarRing A
inst✝⁷ : StarOrderedRing A
inst✝⁶ : TopologicalSpace A
inst✝⁵ : Module ℝ A
inst✝⁴ : IsScalarTower ℝ A A
inst✝³ : SMulCommClass ℝ A A
inst✝² : NonUnitalContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : NonnegSpectrumClass ℝ A
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus ℝ A
a : A
⊢ IsSelfAdjoint a ∧ QuasispectrumRestricts a ⇑ContinuousMap.realToNNReal → 0 ≤ a
tactic: refine ⟨fun ha ↦ ⟨.of_nonneg ha, .nnreal_of_nonneg ha⟩, ?_⟩
state_before: A : Type u_1
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : PartialOrder A
inst✝⁸ : StarRing A
inst✝⁷ : StarOrderedRing A
inst✝⁶ : TopologicalSpace A
inst✝⁵ : Module ℝ A
inst✝⁴ : IsScalarTower ℝ A A
inst✝³ : SMulCommClass ℝ A A
inst✝² : NonUnitalContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : NonnegSpectrumClass ℝ A
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus ℝ A
a : A
⊢ IsSelfAdjoint a ∧ QuasispectrumRestricts a ⇑ContinuousMap.realToNNReal → 0 ≤ a
state_after: case intro
A : Type u_1
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : PartialOrder A
inst✝⁸ : StarRing A
inst✝⁷ : StarOrderedRing A
inst✝⁶ : TopologicalSpace A
inst✝⁵ : Module ℝ A
inst✝⁴ : IsScalarTower ℝ A A
inst✝³ : SMulCommClass ℝ A A
inst✝² : NonUnitalContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : NonnegSpectrumClass ℝ A
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus ℝ A
a : A
ha₁ : IsSelfAdjoint a
ha₂ : QuasispectrumRestricts a ⇑ContinuousMap.realToNNReal
⊢ 0 ≤ a
tactic: rintro ⟨ha₁, ha₂⟩
state_before: case intro
A : Type u_1
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : PartialOrder A
inst✝⁸ : StarRing A
inst✝⁷ : StarOrderedRing A
inst✝⁶ : TopologicalSpace A
inst✝⁵ : Module ℝ A
inst✝⁴ : IsScalarTower ℝ A A
inst✝³ : SMulCommClass ℝ A A
inst✝² : NonUnitalContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : NonnegSpectrumClass ℝ A
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus ℝ A
a : A
ha₁ : IsSelfAdjoint a
ha₂ : QuasispectrumRestricts a ⇑ContinuousMap.realToNNReal
⊢ 0 ≤ a
state_after: case intro.intro.intro.intro
A : Type u_1
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : PartialOrder A
inst✝⁸ : StarRing A
inst✝⁷ : StarOrderedRing A
inst✝⁶ : TopologicalSpace A
inst✝⁵ : Module ℝ A
inst✝⁴ : IsScalarTower ℝ A A
inst✝³ : SMulCommClass ℝ A A
inst✝² : NonUnitalContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : NonnegSpectrumClass ℝ A
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus ℝ A
x : A
hx : IsSelfAdjoint x
ha₁ : IsSelfAdjoint (x * x)
ha₂ : QuasispectrumRestricts (x * x) ⇑ContinuousMap.realToNNReal
⊢ 0 ≤ x * x
tactic: obtain ⟨x, hx, -, rfl⟩ := CFC.exists_sqrt_of_isSelfAdjoint_of_quasispectrumRestricts ha₁ ha₂
state_before: case intro.intro.intro.intro
A : Type u_1
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : PartialOrder A
inst✝⁸ : StarRing A
inst✝⁷ : StarOrderedRing A
inst✝⁶ : TopologicalSpace A
inst✝⁵ : Module ℝ A
inst✝⁴ : IsScalarTower ℝ A A
inst✝³ : SMulCommClass ℝ A A
inst✝² : NonUnitalContinuousFunctionalCalculus ℝ IsSelfAdjoint
inst✝¹ : NonnegSpectrumClass ℝ A
inst✝ : UniqueNonUnitalContinuousFunctionalCalculus ℝ A
x : A
hx : IsSelfAdjoint x
ha₁ : IsSelfAdjoint (x * x)
ha₂ : QuasispectrumRestricts (x * x) ⇑ContinuousMap.realToNNReal
⊢ 0 ≤ x * x
state_after: no goals
tactic: simpa [sq, hx.star_eq] using star_mul_self_nonneg x