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

Proof steps:
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✝
R₁ : Type u_6
R₂ : Type u_7
R₃ : Type u_8
A : Type u_9
inst✝¹³ : Semifield R₁
inst✝¹² : Field R₂
inst✝¹¹ : Field R₃
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : Module R₁ A
inst✝⁸ : Module R₂ A
inst✝⁷ : Module R₃ A
inst✝⁶ : Algebra R₁ R₂
inst✝⁵ : Algebra R₂ R₃
inst✝⁴ : Algebra R₁ R₃
inst✝³ : IsScalarTower R₁ R₂ R₃
inst✝² : IsScalarTower R₂ R₃ A
inst✝¹ : IsScalarTower R₃ A A
inst✝ : SMulCommClass R₃ A A
a : A
f : R₃ → R₂
g : R₂ → R₁
e : R₃ → R₁
hfge : g ∘ f = e
hf : QuasispectrumRestricts a f
hg : QuasispectrumRestricts a g
⊢ Function.LeftInverse e ⇑(algebraMap R₁ R₃)
state_after: case h.e'_4
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✝
R₁ : Type u_6
R₂ : Type u_7
R₃ : Type u_8
A : Type u_9
inst✝¹³ : Semifield R₁
inst✝¹² : Field R₂
inst✝¹¹ : Field R₃
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : Module R₁ A
inst✝⁸ : Module R₂ A
inst✝⁷ : Module R₃ A
inst✝⁶ : Algebra R₁ R₂
inst✝⁵ : Algebra R₂ R₃
inst✝⁴ : Algebra R₁ R₃
inst✝³ : IsScalarTower R₁ R₂ R₃
inst✝² : IsScalarTower R₂ R₃ A
inst✝¹ : IsScalarTower R₃ A A
inst✝ : SMulCommClass R₃ A A
a : A
f : R₃ → R₂
g : R₂ → R₁
e : R₃ → R₁
hfge : g ∘ f = e
hf : QuasispectrumRestricts a f
hg : QuasispectrumRestricts a g
⊢ ⇑(algebraMap R₁ R₃) = ⇑(algebraMap R₂ R₃) ∘ ⇑(algebraMap R₁ R₂)
tactic: convert hfge ▸ hf.left_inv.comp hg.left_inv
state_before: case h.e'_4
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✝
R₁ : Type u_6
R₂ : Type u_7
R₃ : Type u_8
A : Type u_9
inst✝¹³ : Semifield R₁
inst✝¹² : Field R₂
inst✝¹¹ : Field R₃
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : Module R₁ A
inst✝⁸ : Module R₂ A
inst✝⁷ : Module R₃ A
inst✝⁶ : Algebra R₁ R₂
inst✝⁵ : Algebra R₂ R₃
inst✝⁴ : Algebra R₁ R₃
inst✝³ : IsScalarTower R₁ R₂ R₃
inst✝² : IsScalarTower R₂ R₃ A
inst✝¹ : IsScalarTower R₃ A A
inst✝ : SMulCommClass R₃ A A
a : A
f : R₃ → R₂
g : R₂ → R₁
e : R₃ → R₁
hfge : g ∘ f = e
hf : QuasispectrumRestricts a f
hg : QuasispectrumRestricts a g
⊢ ⇑(algebraMap R₁ R₃) = ⇑(algebraMap R₂ R₃) ∘ ⇑(algebraMap R₁ R₂)
state_after: no goals
tactic: congrm(⇑$(IsScalarTower.algebraMap_eq R₁ R₂ R₃))
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✝
R₁ : Type u_6
R₂ : Type u_7
R₃ : Type u_8
A : Type u_9
inst✝¹³ : Semifield R₁
inst✝¹² : Field R₂
inst✝¹¹ : Field R₃
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : Module R₁ A
inst✝⁸ : Module R₂ A
inst✝⁷ : Module R₃ A
inst✝⁶ : Algebra R₁ R₂
inst✝⁵ : Algebra R₂ R₃
inst✝⁴ : Algebra R₁ R₃
inst✝³ : IsScalarTower R₁ R₂ R₃
inst✝² : IsScalarTower R₂ R₃ A
inst✝¹ : IsScalarTower R₃ A A
inst✝ : SMulCommClass R₃ A A
a : A
f : R₃ → R₂
g : R₂ → R₁
e : R₃ → R₁
hfge : g ∘ f = e
hf : QuasispectrumRestricts a f
hg : QuasispectrumRestricts a g
⊢ Set.RightInvOn e (⇑(algebraMap R₁ R₃)) (quasispectrum R₃ a)
state_after: case h.e'_4
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✝
R₁ : Type u_6
R₂ : Type u_7
R₃ : Type u_8
A : Type u_9
inst✝¹³ : Semifield R₁
inst✝¹² : Field R₂
inst✝¹¹ : Field R₃
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : Module R₁ A
inst✝⁸ : Module R₂ A
inst✝⁷ : Module R₃ A
inst✝⁶ : Algebra R₁ R₂
inst✝⁵ : Algebra R₂ R₃
inst✝⁴ : Algebra R₁ R₃
inst✝³ : IsScalarTower R₁ R₂ R₃
inst✝² : IsScalarTower R₂ R₃ A
inst✝¹ : IsScalarTower R₃ A A
inst✝ : SMulCommClass R₃ A A
a : A
f : R₃ → R₂
g : R₂ → R₁
e : R₃ → R₁
hfge : g ∘ f = e
hf : QuasispectrumRestricts a f
hg : QuasispectrumRestricts a g
⊢ ⇑(algebraMap R₁ R₃) = ⇑(algebraMap R₂ R₃) ∘ ⇑(algebraMap R₁ R₂)
tactic: convert hfge ▸ hg.rightInvOn.comp hf.rightInvOn fun _ ↦ hf.apply_mem
state_before: case h.e'_4
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✝
R₁ : Type u_6
R₂ : Type u_7
R₃ : Type u_8
A : Type u_9
inst✝¹³ : Semifield R₁
inst✝¹² : Field R₂
inst✝¹¹ : Field R₃
inst✝¹⁰ : NonUnitalRing A
inst✝⁹ : Module R₁ A
inst✝⁸ : Module R₂ A
inst✝⁷ : Module R₃ A
inst✝⁶ : Algebra R₁ R₂
inst✝⁵ : Algebra R₂ R₃
inst✝⁴ : Algebra R₁ R₃
inst✝³ : IsScalarTower R₁ R₂ R₃
inst✝² : IsScalarTower R₂ R₃ A
inst✝¹ : IsScalarTower R₃ A A
inst✝ : SMulCommClass R₃ A A
a : A
f : R₃ → R₂
g : R₂ → R₁
e : R₃ → R₁
hfge : g ∘ f = e
hf : QuasispectrumRestricts a f
hg : QuasispectrumRestricts a g
⊢ ⇑(algebraMap R₁ R₃) = ⇑(algebraMap R₂ R₃) ∘ ⇑(algebraMap R₁ R₂)
state_after: no goals
tactic: congrm(⇑$(IsScalarTower.algebraMap_eq R₁ R₂ R₃))