Skip to content

Commit 9df78dd

Browse files
committed
feat(RingTheory/Finiteness): fg_iff_exists_fin_addMonoidHom (leanprover-community#29032)
which are simple corollaries of `Submodule.fg_iff_exists_fin_linearMap`.
1 parent 447bd0e commit 9df78dd

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

Mathlib/RingTheory/Finiteness/Cardinality.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,22 @@ theorem Submodule.fg_iff_exists_fin_linearMap {N : Submodule R M} :
2929
simp_rw [fg_iff_exists_fin_generating_family, ← ((Pi.basisFun R _).constr ℕ).exists_congr_right]
3030
simp [Basis.constr_range]
3131

32+
theorem AddSubmonoid.fg_iff_exists_fin_addMonoidHom {M : Type*} [AddCommMonoid M]
33+
{S : AddSubmonoid M} : S.FG ↔ ∃ (n : ℕ) (f : (Fin n → ℕ) →+ M), AddMonoidHom.mrange f = S := by
34+
rw [← S.toNatSubmodule_toAddSubmonoid, ← Submodule.fg_iff_addSubmonoid_fg,
35+
Submodule.fg_iff_exists_fin_linearMap]
36+
exact exists_congr fun n => ⟨fun ⟨f, hf⟩ => ⟨f, hf ▸ LinearMap.range_toAddSubmonoid _⟩,
37+
fun ⟨f, hf⟩ => ⟨f.toNatLinearMap, Submodule.toAddSubmonoid_inj.mp <|
38+
hf ▸ LinearMap.range_toAddSubmonoid _⟩⟩
39+
40+
theorem AddSubgroup.fg_iff_exists_fin_addMonoidHom {M : Type*} [AddCommGroup M]
41+
{H : AddSubgroup M} : H.FG ↔ ∃ (n : ℕ) (f : (Fin n → ℤ) →+ M), AddMonoidHom.range f = H := by
42+
rw [← H.toIntSubmodule_toAddSubgroup, ← Submodule.fg_iff_addSubgroup_fg,
43+
Submodule.fg_iff_exists_fin_linearMap]
44+
refine exists_congr fun n => ⟨fun ⟨f, hf⟩ => ⟨f, hf ▸ LinearMap.range_toAddSubgroup _⟩,
45+
fun ⟨f, hf⟩ => ⟨f.toIntLinearMap, Submodule.toAddSubmonoid_inj.mp ?_⟩⟩
46+
simp [hf]
47+
3248
namespace Module
3349

3450
namespace Finite

0 commit comments

Comments
 (0)