Theorem: quasispectrumRestricts_iff_spectrumRestricts
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

tactic: rw [quasispectrumRestricts_iff, spectrumRestricts_iff, quasispectrum_eq_spectrum_union_zero]
state_before: R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
⊢ QuasispectrumRestricts a f ↔ SpectrumRestricts a f
state_after: R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
⊢ Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a ∪ {0}) ∧ Function.LeftInverse f ⇑(algebraMap R S) ↔
    Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a) ∧ Function.LeftInverse f ⇑(algebraMap R S)

tactic: refine and_congr_left fun h ↦ ?_
state_before: R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
⊢ Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a ∪ {0}) ∧ Function.LeftInverse f ⇑(algebraMap R S) ↔
    Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a) ∧ Function.LeftInverse f ⇑(algebraMap R S)
state_after: R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
⊢ Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a ∪ {0}) ↔ Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)

tactic: simp only [Set.union_singleton, Set.mem_insert_iff] at hx
state_before: R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
h' : Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)
x : S
hx : x ∈ spectrum S a ∪ {0}
⊢ (algebraMap R S) (f x) = x
state_after: R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
h' : Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)
x : S
hx : x = 0 ∨ x ∈ spectrum S a
⊢ (algebraMap R S) (f x) = x

tactic: obtain (rfl | hx) := hx
state_before: R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
h' : Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)
x : S
hx : x = 0 ∨ x ∈ spectrum S a
⊢ (algebraMap R S) (f x) = x
state_after: case inl
R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
h' : Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)
⊢ (algebraMap R S) (f 0) = 0

case inr
R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
h' : Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)
x : S
hx : x ∈ spectrum S a
⊢ (algebraMap R S) (f x) = x

tactic: simpa using h 0
state_before: case inl
R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
h' : Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)
⊢ (algebraMap R S) (f 0) = 0
state_after: no goals

tactic: exact h' hx
state_before: case inr
R✝ : Type u_1
A✝ : Type u_2
inst✝¹⁰ : CommSemiring R✝
inst✝⁹ : NonUnitalRing A✝
inst✝⁸ : Module R✝ A✝
inst✝⁷ : IsScalarTower R✝ A✝ A✝
inst✝⁶ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁵ : Semifield R
inst✝⁴ : Semifield S
inst✝³ : Ring A
inst✝² : Algebra R S
inst✝¹ : Algebra R A
inst✝ : Algebra S A
a : A
f : S → R
h : Function.LeftInverse f ⇑(algebraMap R S)
h' : Set.RightInvOn f (⇑(algebraMap R S)) (spectrum S a)
x : S
hx : x ∈ spectrum S a
⊢ (algebraMap R S) (f x) = x
state_after: no goals