@@ -615,21 +615,22 @@ end DivisionRing
615
615
616
616
section ZeroRank
617
617
618
- variable [Ring R] [StrongRankCondition R] [AddCommGroup V] [Module R V]
619
-
620
- attribute [local instance] nontrivial_of_invariantBasisNumber
618
+ variable [Ring R] [AddCommGroup V] [Module R V]
621
619
622
620
open FiniteDimensional
623
621
624
622
theorem Module.finite_of_rank_eq_nat [Module.Free R V] {n : ℕ} (h : Module.rank R V = n) :
625
623
Module.Finite R V := by
626
- have := Cardinal.mk_lt_aleph0_iff.mp
627
- (((Free.rank_eq_card_chooseBasisIndex R V).symm.trans h).trans_lt (nat_lt_aleph0 n))
628
- exact Module.Finite.of_basis (Free.chooseBasis R V)
624
+ nontriviality R
625
+ obtain ⟨⟨ι, b⟩⟩ := Module.Free.exists_basis (R := R) (M := V)
626
+ have := mk_lt_aleph0_iff.mp <| cardinal_le_rank_of_linearIndependent
627
+ b.linearIndependent |>.trans_eq h |>.trans_lt <| nat_lt_aleph0 n
628
+ exact Module.Finite.of_basis b
629
629
630
630
theorem Module.finite_of_rank_eq_zero [NoZeroSMulDivisors R V]
631
631
(h : Module.rank R V = 0 ) :
632
632
Module.Finite R V := by
633
+ nontriviality R
633
634
rw [rank_zero_iff] at h
634
635
infer_instance
635
636
@@ -651,12 +652,14 @@ variable {R V}
651
652
652
653
theorem Submodule.bot_eq_top_of_rank_eq_zero [NoZeroSMulDivisors R V] (h : Module.rank R V = 0 ) :
653
654
(⊥ : Submodule R V) = ⊤ := by
655
+ nontriviality R
654
656
rw [rank_zero_iff] at h
655
657
exact Subsingleton.elim _ _
656
658
#align bot_eq_top_of_rank_eq_zero Submodule.bot_eq_top_of_rank_eq_zero
657
659
660
+ /-- See `rank_subsingleton` for the reason that `Nontrivial R` is needed. -/
658
661
@[simp]
659
- theorem Submodule.rank_eq_zero [NoZeroSMulDivisors R V] {S : Submodule R V} :
662
+ theorem Submodule.rank_eq_zero [Nontrivial R] [ NoZeroSMulDivisors R V] {S : Submodule R V} :
660
663
Module.rank R S = 0 ↔ S = ⊥ :=
661
664
⟨fun h =>
662
665
(Submodule.eq_bot_iff _).2 fun x hx =>
@@ -667,7 +670,8 @@ theorem Submodule.rank_eq_zero [NoZeroSMulDivisors R V] {S : Submodule R V} :
667
670
#align rank_eq_zero Submodule.rank_eq_zero
668
671
669
672
@[simp]
670
- theorem Submodule.finrank_eq_zero [NoZeroSMulDivisors R V] {S : Submodule R V} [Module.Finite R S] :
673
+ theorem Submodule.finrank_eq_zero [StrongRankCondition R] [NoZeroSMulDivisors R V]
674
+ {S : Submodule R V} [Module.Finite R S] :
671
675
finrank R S = 0 ↔ S = ⊥ := by
672
676
rw [← Submodule.rank_eq_zero, ← finrank_eq_rank, ← @Nat.cast_zero Cardinal, Cardinal.natCast_inj]
673
677
#align finrank_eq_zero Submodule.finrank_eq_zero
@@ -678,7 +682,7 @@ namespace Submodule
678
682
679
683
open IsNoetherian FiniteDimensional
680
684
681
- variable [AddCommGroup V] [ Ring R] [StrongRankCondition R ] [Module R V]
685
+ variable [Ring R] [AddCommGroup V ] [Module R V]
682
686
683
687
theorem fg_iff_finite (s : Submodule R V) : s.FG ↔ Module.Finite R s :=
684
688
(finite_def.trans (fg_top s)).symm
@@ -714,7 +718,7 @@ end Submodule
714
718
715
719
section
716
720
717
- variable [Ring R] [StrongRankCondition R] [ AddCommGroup V] [Module R V]
721
+ variable [Ring R] [AddCommGroup V] [Module R V]
718
722
719
723
instance Module.Finite.finsupp {ι : Type *} [_root_.Finite ι] [Module.Finite R V] :
720
724
Module.Finite R (ι →₀ V) :=
0 commit comments