Skip to content

Commit f1c7086

Browse files
committed
chore(LinearAlgebra): remove some StrongRankCondition (#9152)
Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>
1 parent 95ddd89 commit f1c7086

File tree

1 file changed

+14
-10
lines changed
  • Mathlib/LinearAlgebra/FreeModule/Finite

1 file changed

+14
-10
lines changed

Mathlib/LinearAlgebra/FreeModule/Finite/Rank.lean

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -615,21 +615,22 @@ end DivisionRing
615615

616616
section ZeroRank
617617

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]
621619

622620
open FiniteDimensional
623621

624622
theorem Module.finite_of_rank_eq_nat [Module.Free R V] {n : ℕ} (h : Module.rank R V = n) :
625623
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
629629

630630
theorem Module.finite_of_rank_eq_zero [NoZeroSMulDivisors R V]
631631
(h : Module.rank R V = 0) :
632632
Module.Finite R V := by
633+
nontriviality R
633634
rw [rank_zero_iff] at h
634635
infer_instance
635636

@@ -651,12 +652,14 @@ variable {R V}
651652

652653
theorem Submodule.bot_eq_top_of_rank_eq_zero [NoZeroSMulDivisors R V] (h : Module.rank R V = 0) :
653654
(⊥ : Submodule R V) = ⊤ := by
655+
nontriviality R
654656
rw [rank_zero_iff] at h
655657
exact Subsingleton.elim _ _
656658
#align bot_eq_top_of_rank_eq_zero Submodule.bot_eq_top_of_rank_eq_zero
657659

660+
/-- See `rank_subsingleton` for the reason that `Nontrivial R` is needed. -/
658661
@[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} :
660663
Module.rank R S = 0 ↔ S = ⊥ :=
661664
fun h =>
662665
(Submodule.eq_bot_iff _).2 fun x hx =>
@@ -667,7 +670,8 @@ theorem Submodule.rank_eq_zero [NoZeroSMulDivisors R V] {S : Submodule R V} :
667670
#align rank_eq_zero Submodule.rank_eq_zero
668671

669672
@[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] :
671675
finrank R S = 0 ↔ S = ⊥ := by
672676
rw [← Submodule.rank_eq_zero, ← finrank_eq_rank, ← @Nat.cast_zero Cardinal, Cardinal.natCast_inj]
673677
#align finrank_eq_zero Submodule.finrank_eq_zero
@@ -678,7 +682,7 @@ namespace Submodule
678682

679683
open IsNoetherian FiniteDimensional
680684

681-
variable [AddCommGroup V] [Ring R] [StrongRankCondition R] [Module R V]
685+
variable [Ring R] [AddCommGroup V] [Module R V]
682686

683687
theorem fg_iff_finite (s : Submodule R V) : s.FG ↔ Module.Finite R s :=
684688
(finite_def.trans (fg_top s)).symm
@@ -714,7 +718,7 @@ end Submodule
714718

715719
section
716720

717-
variable [Ring R] [StrongRankCondition R] [AddCommGroup V] [Module R V]
721+
variable [Ring R] [AddCommGroup V] [Module R V]
718722

719723
instance Module.Finite.finsupp {ι : Type*} [_root_.Finite ι] [Module.Finite R V] :
720724
Module.Finite R (ι →₀ V) :=

0 commit comments

Comments
 (0)