R✝ : Type ?u.275341
M✝ : Type ?u.275344
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type ?u.275380
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
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 : FG (LinearMap.ker f)
hf2 : FG (LinearMap.ker g)
hsur : Surjective ↑f
⊢ FG (comap f (LinearMap.ker g))
R✝ : Type ?u.275341
M✝ : Type ?u.275344
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type ?u.275380
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
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 : FG (LinearMap.ker f)
hf2 : FG (LinearMap.ker g)
hsur : Surjective ↑f
⊢ FG (LinearMap.ker (LinearMap.comp g f))
rw [LinearMap.ker_comp]
case hs1
R✝ : Type ?u.275341
M✝ : Type ?u.275344
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type ?u.275380
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
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 : FG (LinearMap.ker f)
hf2 : FG (LinearMap.ker g)
hsur : Surjective ↑f
⊢ FG (map f (comap f (LinearMap.ker g)))

case hs2
R✝ : Type ?u.275341
M✝ : Type ?u.275344
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type ?u.275380
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
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 : FG (LinearMap.ker f)
hf2 : FG (LinearMap.ker g)
hsur : Surjective ↑f
⊢ FG (comap f (LinearMap.ker g) ⊓ LinearMap.ker f)
R✝ : Type ?u.275341
M✝ : Type ?u.275344
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type ?u.275380
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
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 : FG (LinearMap.ker f)
hf2 : FG (LinearMap.ker g)
hsur : Surjective ↑f
⊢ FG (comap f (LinearMap.ker g))
apply fg_of_fg_map_of_fg_inf_ker f
no goals
case hs1
R✝ : Type ?u.275341
M✝ : Type ?u.275344
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type ?u.275380
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
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 : FG (LinearMap.ker f)
hf2 : FG (LinearMap.ker g)
hsur : Surjective ↑f
⊢ FG (map f (comap f (LinearMap.ker g)))
rwa [Submodule.map_comap_eq, LinearMap.range_eq_top.2 hsur, top_inf_eq]
no goals
case hs2
R✝ : Type ?u.275341
M✝ : Type ?u.275344
inst✝¹¹ : Semiring R✝
inst✝¹⁰ : AddCommMonoid M✝
inst✝⁹ : Module R✝ M✝
P✝ : Type ?u.275380
inst✝⁸ : AddCommMonoid P✝
inst✝⁷ : Module R✝ P✝
f✝ : M✝ →ₗ[R✝] P✝
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
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 : FG (LinearMap.ker f)
hf2 : FG (LinearMap.ker g)
hsur : Surjective ↑f
⊢ FG (comap f (LinearMap.ker g) ⊓ LinearMap.ker f)
rwa [inf_of_le_right (show (LinearMap.ker f) ≤
  (LinearMap.ker g).comap f from comap_mono bot_le)]