Theorem: Algebra.lift_rank_le_of_injective_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 : Injective ⇑i
hj : Injective ⇑j
hc : (j.comp (algebraMap R S)).comp i = 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 : Injective ⇑i
hj : Injective ⇑j
hc : (j.comp (algebraMap R S)).comp i = algebraMap R' S'
r : R'
x✝ : S
⊢ ↑j (i r • x✝) = r • ↑j x✝
tactic: refine _root_.lift_rank_le_of_injective_injective i j
    (fun _ _ ↦ hi <| by rwa [i.map_zero]) 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 : Injective ⇑i
hj : Injective ⇑j
hc : (j.comp (algebraMap R S)).comp i = algebraMap R' S'
r : R'
x✝ : S
⊢ ↑j (i r • x✝) = 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 : Injective ⇑i
hj : Injective ⇑j
hc : (j.comp (algebraMap R S)).comp i = algebraMap R' S'
r : R'
x✝ : S
this : ((j.comp (algebraMap R S)).comp i) r = (algebraMap R' S') r
⊢ ↑j (i r • x✝) = 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 : Injective ⇑i
hj : Injective ⇑j
hc : (j.comp (algebraMap R S)).comp i = algebraMap R' S'
r : R'
x✝ : S
this : ((j.comp (algebraMap R S)).comp i) r = (algebraMap R' S') r
⊢ ↑j (i r • x✝) = 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 : Injective ⇑i
hj : Injective ⇑j
hc : (j.comp (algebraMap R S)).comp i = algebraMap R' S'
r : R'
x✝ : S
this : j ((algebraMap R S) (i r)) = (algebraMap R' S') r
⊢ ↑j (i r • x✝) = 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 : Injective ⇑i
hj : Injective ⇑j
hc : (j.comp (algebraMap R S)).comp i = algebraMap R' S'
r : R'
x✝ : S
this : j ((algebraMap R S) (i r)) = (algebraMap R' S') r
⊢ ↑j (i r • x✝) = r • ↑j x✝
state_after: no goals
tactic: simp_rw [smul_def, AddMonoidHom.coe_coe, map_mul, this]