@@ -537,6 +537,22 @@ lemma exists_fin' [Module.Finite R M] : ∃ (n : ℕ) (f : (Fin n → R) →ₗ[
537
537
refine ⟨n, Basis.constr (Pi.basisFun R _) ℕ s, ?_⟩
538
538
rw [← LinearMap.range_eq_top, Basis.constr_range, hs]
539
539
540
+ variable (R) in
541
+ lemma _root_.Module.finite_of_finite [Finite R] [Module.Finite R M] : Finite M := by
542
+ obtain ⟨n, f, hf⟩ := exists_fin' R M; exact .of_surjective f hf
543
+
544
+ @[deprecated (since := "2024-10-13")]
545
+ alias _root_.FiniteDimensional.finite_of_finite := finite_of_finite
546
+
547
+ -- See note [lower instance priority]
548
+ instance (priority := 100 ) of_finite [Finite M] : Module.Finite R M := by
549
+ cases nonempty_fintype M
550
+ exact ⟨⟨Finset.univ, by rw [Finset.coe_univ]; exact Submodule.span_univ⟩⟩
551
+
552
+ /-- A module over a finite ring has finite dimension iff it is finite. -/
553
+ lemma _root_.Module.finite_iff_finite [Finite R] : Module.Finite R M ↔ Finite M :=
554
+ ⟨fun _ ↦ finite_of_finite R, fun _ ↦ .of_finite⟩
555
+
540
556
theorem of_surjective [hM : Module.Finite R M] (f : M →ₗ[R] N) (hf : Surjective f) :
541
557
Module.Finite R N :=
542
558
⟨by
@@ -620,6 +636,12 @@ instance span_singleton (x : M) : Module.Finite R (R ∙ x) :=
620
636
instance span_finset (s : Finset M) : Module.Finite R (span R (s : Set M)) :=
621
637
⟨(Submodule.fg_top _).mpr ⟨s, rfl⟩⟩
622
638
639
+ lemma _root_.Set.Finite.submoduleSpan [Finite R] {s : Set M} (hs : s.Finite) :
640
+ (Submodule.span R s : Set M).Finite := by
641
+ lift s to Finset M using hs
642
+ rw [Set.Finite, ← Module.finite_iff_finite (R := R)]
643
+ dsimp
644
+ infer_instance
623
645
624
646
theorem Module.End.isNilpotent_iff_of_finite {R M : Type *} [CommSemiring R] [AddCommMonoid M]
625
647
[Module R M] [Module.Finite R M] {f : End R M} :
0 commit comments