Skip to content

Commit dfe98ef

Browse files
committed
chore(LinearAlgebra/Dimension): split off rank_quotient_eq_of_le_torsion (#18730)
This result doesn't seem to be used in Mathlib and it pulls in many imports such as the theory of the ring `ZMod`, which we should not need to define finite dimensional spaces. Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
1 parent 666dec7 commit dfe98ef

File tree

4 files changed

+33
-15
lines changed

4 files changed

+33
-15
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3159,6 +3159,7 @@ import Mathlib.LinearAlgebra.Dimension.LinearMap
31593159
import Mathlib.LinearAlgebra.Dimension.Localization
31603160
import Mathlib.LinearAlgebra.Dimension.RankNullity
31613161
import Mathlib.LinearAlgebra.Dimension.StrongRankCondition
3162+
import Mathlib.LinearAlgebra.Dimension.Torsion
31623163
import Mathlib.LinearAlgebra.DirectSum.Finsupp
31633164
import Mathlib.LinearAlgebra.DirectSum.TensorProduct
31643165
import Mathlib.LinearAlgebra.Dual

Mathlib/LinearAlgebra/Dimension/Constructions.lean

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Mario Carneiro, Johannes Hölzl, Sander Dahmen, Kim Morrison, Chris Hughes, Anne Baanen
55
-/
66
import Mathlib.LinearAlgebra.Dimension.Free
7-
import Mathlib.Algebra.Module.Torsion
87

98
/-!
109
# Rank of various constructions
@@ -75,20 +74,6 @@ theorem rank_quotient_add_rank_le [Nontrivial R] (M' : Submodule R M) :
7574
theorem rank_quotient_le (p : Submodule R M) : Module.rank R (M ⧸ p) ≤ Module.rank R M :=
7675
(mkQ p).rank_le_of_surjective Quot.mk_surjective
7776

78-
theorem rank_quotient_eq_of_le_torsion {R M} [CommRing R] [AddCommGroup M] [Module R M]
79-
{M' : Submodule R M} (hN : M' ≤ torsion R M) : Module.rank R (M ⧸ M') = Module.rank R M :=
80-
(rank_quotient_le M').antisymm <| by
81-
nontriviality R
82-
rw [Module.rank]
83-
have := nonempty_linearIndependent_set R M
84-
refine ciSup_le fun ⟨s, hs⟩ ↦ LinearIndependent.cardinal_le_rank (v := (M'.mkQ ·)) ?_
85-
rw [linearIndependent_iff'] at hs ⊢
86-
simp_rw [← map_smul, ← map_sum, mkQ_apply, Quotient.mk_eq_zero]
87-
intro t g hg i hi
88-
obtain ⟨r, hg⟩ := hN hg
89-
simp_rw [Finset.smul_sum, Submonoid.smul_def, smul_smul] at hg
90-
exact r.prop _ (mul_comm (g i) r ▸ hs t _ hg i hi)
91-
9277
end Quotient
9378

9479
section ULift
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/-
2+
Copyright (c) 2018 Mario Carneiro. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Andrew Yang
5+
-/
6+
import Mathlib.Algebra.Module.Torsion
7+
import Mathlib.LinearAlgebra.Dimension.Constructions
8+
9+
/-!
10+
# Rank and torsion
11+
12+
## Main statements
13+
14+
- `rank_quotient_eq_of_le_torsion` : `rank M/N = rank M` if `N ≤ torsion M`.
15+
-/
16+
17+
open Submodule
18+
19+
theorem rank_quotient_eq_of_le_torsion {R M : Type*} [CommRing R] [AddCommGroup M] [Module R M]
20+
{M' : Submodule R M} (hN : M' ≤ torsion R M) : Module.rank R (M ⧸ M') = Module.rank R M :=
21+
(rank_quotient_le M').antisymm <| by
22+
nontriviality R
23+
rw [Module.rank]
24+
have := nonempty_linearIndependent_set R M
25+
refine ciSup_le fun ⟨s, hs⟩ ↦ LinearIndependent.cardinal_le_rank (v := (M'.mkQ ·)) ?_
26+
rw [linearIndependent_iff'] at hs ⊢
27+
simp_rw [← map_smul, ← map_sum, mkQ_apply, Quotient.mk_eq_zero]
28+
intro t g hg i hi
29+
obtain ⟨r, hg⟩ := hN hg
30+
simp_rw [Finset.smul_sum, Submonoid.smul_def, smul_smul] at hg
31+
exact r.prop _ (mul_comm (g i) r ▸ hs t _ hg i hi)

Mathlib/LinearAlgebra/FreeModule/IdealQuotient.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Mathlib.LinearAlgebra.FreeModule.StrongRankCondition
99
import Mathlib.LinearAlgebra.Quotient.Pi
1010
import Mathlib.RingTheory.Ideal.Basis
1111
import Mathlib.LinearAlgebra.Dimension.Constructions
12+
import Mathlib.Data.ZMod.Quotient
1213

1314
/-! # Ideals in free modules over PIDs
1415

0 commit comments

Comments
 (0)