Theorem: QuasispectrumRestricts.algebraMap_image
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

tactic: refine Set.eq_of_subset_of_subset ?_ fun s hs => ⟨f s, ?_⟩
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✝⁷ : Field S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Module R A
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Algebra R S
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : QuasispectrumRestricts a f
⊢ ⇑(algebraMap R S) '' quasispectrum R a = quasispectrum S a
state_after: case refine_1
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✝⁷ : Field S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Module R A
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Algebra R S
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : QuasispectrumRestricts a f
⊢ ⇑(algebraMap R S) '' quasispectrum R a ⊆ quasispectrum S a

case refine_2
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✝⁷ : Field S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Module R A
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Algebra R S
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : QuasispectrumRestricts a f
s : S
hs : s ∈ quasispectrum S a
⊢ f s ∈ quasispectrum R a ∧ (algebraMap R S) (f s) = s

tactic: exact ⟨quasispectrum.of_algebraMap_mem S ((h.rightInvOn hs).symm ▸ hs), h.rightInvOn hs⟩
state_before: case refine_2
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✝⁷ : Field S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Module R A
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Algebra R S
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : QuasispectrumRestricts a f
s : S
hs : s ∈ quasispectrum S a
⊢ f s ∈ quasispectrum R a ∧ (algebraMap R S) (f s) = s
state_after: no goals

tactic: simpa only [quasispectrum.preimage_algebraMap] using
  (quasispectrum S a).image_preimage_subset (algebraMap R S)
state_before: case refine_1
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✝⁷ : Field S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Module R A
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Algebra R S
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : QuasispectrumRestricts a f
⊢ ⇑(algebraMap R S) '' quasispectrum R a ⊆ quasispectrum S a
state_after: no goals