Theorem: Algebra.lift_rank_le_of_surjective_injective
File: Mathlib/LinearAlgebra/Dimension/Basic.lean

Proof steps:
state_before: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁵ : Ring R✝
inst✝¹⁴ : Ring R'✝
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup M'
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R✝ M
inst✝⁹ : Module R✝ M'
inst✝⁸ : Module R✝ M₁
inst✝⁷ : Module R'✝ M'
inst✝⁶ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Ring S
inst✝³ : Algebra R S
R' : Type w'
S' : Type v'
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R →+* R'
j : S →+* S'
hi : Surjective ⇑i
hj : Injective ⇑j
hc : (algebraMap R' S').comp i = j.comp (algebraMap R S)
⊢ lift.{v', v} (Module.rank R S) ≤ lift.{v, v'} (Module.rank R' S')
state_after: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁵ : Ring R✝
inst✝¹⁴ : Ring R'✝
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup M'
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R✝ M
inst✝⁹ : Module R✝ M'
inst✝⁸ : Module R✝ M₁
inst✝⁷ : Module R'✝ M'
inst✝⁶ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Ring S
inst✝³ : Algebra R S
R' : Type w'
S' : Type v'
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R →+* R'
j : S →+* S'
hi : Surjective ⇑i
hj : Injective ⇑j
hc : (algebraMap R' S').comp i = j.comp (algebraMap R S)
r : R
x✝ : S
⊢ ↑j (r • x✝) = ↑i r • ↑j x✝
tactic: refine _root_.lift_rank_le_of_surjective_injective i j hi hj fun r _ ↦ ?_
state_before: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁵ : Ring R✝
inst✝¹⁴ : Ring R'✝
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup M'
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R✝ M
inst✝⁹ : Module R✝ M'
inst✝⁸ : Module R✝ M₁
inst✝⁷ : Module R'✝ M'
inst✝⁶ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Ring S
inst✝³ : Algebra R S
R' : Type w'
S' : Type v'
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R →+* R'
j : S →+* S'
hi : Surjective ⇑i
hj : Injective ⇑j
hc : (algebraMap R' S').comp i = j.comp (algebraMap R S)
r : R
x✝ : S
⊢ ↑j (r • x✝) = ↑i r • ↑j x✝
state_after: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁵ : Ring R✝
inst✝¹⁴ : Ring R'✝
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup M'
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R✝ M
inst✝⁹ : Module R✝ M'
inst✝⁸ : Module R✝ M₁
inst✝⁷ : Module R'✝ M'
inst✝⁶ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Ring S
inst✝³ : Algebra R S
R' : Type w'
S' : Type v'
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R →+* R'
j : S →+* S'
hi : Surjective ⇑i
hj : Injective ⇑j
hc : (algebraMap R' S').comp i = j.comp (algebraMap R S)
r : R
x✝ : S
this : ((algebraMap R' S').comp i) r = (j.comp (algebraMap R S)) r
⊢ ↑j (r • x✝) = ↑i r • ↑j x✝
tactic: have := congr($hc r)
state_before: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁵ : Ring R✝
inst✝¹⁴ : Ring R'✝
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup M'
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R✝ M
inst✝⁹ : Module R✝ M'
inst✝⁸ : Module R✝ M₁
inst✝⁷ : Module R'✝ M'
inst✝⁶ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Ring S
inst✝³ : Algebra R S
R' : Type w'
S' : Type v'
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R →+* R'
j : S →+* S'
hi : Surjective ⇑i
hj : Injective ⇑j
hc : (algebraMap R' S').comp i = j.comp (algebraMap R S)
r : R
x✝ : S
this : ((algebraMap R' S').comp i) r = (j.comp (algebraMap R S)) r
⊢ ↑j (r • x✝) = ↑i r • ↑j x✝
state_after: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁵ : Ring R✝
inst✝¹⁴ : Ring R'✝
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup M'
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R✝ M
inst✝⁹ : Module R✝ M'
inst✝⁸ : Module R✝ M₁
inst✝⁷ : Module R'✝ M'
inst✝⁶ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Ring S
inst✝³ : Algebra R S
R' : Type w'
S' : Type v'
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R →+* R'
j : S →+* S'
hi : Surjective ⇑i
hj : Injective ⇑j
hc : (algebraMap R' S').comp i = j.comp (algebraMap R S)
r : R
x✝ : S
this : (algebraMap R' S') (i r) = j ((algebraMap R S) r)
⊢ ↑j (r • x✝) = ↑i r • ↑j x✝
tactic: simp only [RingHom.coe_comp, comp_apply] at this
state_before: R✝ : Type u
R'✝ : Type u'
M M₁ : Type v
M' : Type v'
inst✝¹⁵ : Ring R✝
inst✝¹⁴ : Ring R'✝
inst✝¹³ : AddCommGroup M
inst✝¹² : AddCommGroup M'
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R✝ M
inst✝⁹ : Module R✝ M'
inst✝⁸ : Module R✝ M₁
inst✝⁷ : Module R'✝ M'
inst✝⁶ : Module R'✝ M₁
R : Type w
S : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Ring S
inst✝³ : Algebra R S
R' : Type w'
S' : Type v'
inst✝² : CommRing R'
inst✝¹ : Ring S'
inst✝ : Algebra R' S'
i : R →+* R'
j : S →+* S'
hi : Surjective ⇑i
hj : Injective ⇑j
hc : (algebraMap R' S').comp i = j.comp (algebraMap R S)
r : R
x✝ : S
this : (algebraMap R' S') (i r) = j ((algebraMap R S) r)
⊢ ↑j (r • x✝) = ↑i r • ↑j x✝
state_after: no goals
tactic: simp only [smul_def, AddMonoidHom.coe_coe, map_mul, ZeroHom.coe_coe, this]