Theorem: Submodule.fg_ker_comp
File: Mathlib/RingTheory/Finiteness.lean

tactic: rw [LinearMap.ker_comp]
state_before: R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type u_3
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup P
inst✝ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
hf1 : (LinearMap.ker f).FG
hf2 : (LinearMap.ker g).FG
hsur : Surjective ⇑f
⊢ (LinearMap.ker (g ∘ₗ f)).FG
state_after: R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type u_3
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup P
inst✝ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
hf1 : (LinearMap.ker f).FG
hf2 : (LinearMap.ker g).FG
hsur : Surjective ⇑f
⊢ (comap f (LinearMap.ker g)).FG

tactic: apply fg_of_fg_map_of_fg_inf_ker f
state_before: R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type u_3
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup P
inst✝ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
hf1 : (LinearMap.ker f).FG
hf2 : (LinearMap.ker g).FG
hsur : Surjective ⇑f
⊢ (comap f (LinearMap.ker g)).FG
state_after: case hs1
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type u_3
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup P
inst✝ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
hf1 : (LinearMap.ker f).FG
hf2 : (LinearMap.ker g).FG
hsur : Surjective ⇑f
⊢ (map f (comap f (LinearMap.ker g))).FG

case hs2
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type u_3
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup P
inst✝ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
hf1 : (LinearMap.ker f).FG
hf2 : (LinearMap.ker g).FG
hsur : Surjective ⇑f
⊢ (comap f (LinearMap.ker g) ⊓ LinearMap.ker f).FG

tactic: rwa [Submodule.map_comap_eq, LinearMap.range_eq_top.2 hsur, top_inf_eq]
state_before: case hs1
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type u_3
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup P
inst✝ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
hf1 : (LinearMap.ker f).FG
hf2 : (LinearMap.ker g).FG
hsur : Surjective ⇑f
⊢ (map f (comap f (LinearMap.ker g))).FG
state_after: no goals

tactic: rwa [inf_of_le_right (show (LinearMap.ker f) ≤
  (LinearMap.ker g).comap f from comap_mono bot_le)]
state_before: case hs2
R✝ : Type u_1
M✝ : Type u_2
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type u_3
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup P
inst✝ : Module R P
f : M →ₗ[R] N
g : N →ₗ[R] P
hf1 : (LinearMap.ker f).FG
hf2 : (LinearMap.ker g).FG
hsur : Surjective ⇑f
⊢ (comap f (LinearMap.ker g) ⊓ LinearMap.ker f).FG
state_after: no goals