@@ -3,7 +3,7 @@ Copyright (c) 2020 Markus Himmel. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Markus Himmel
5
5
-/
6
- import linear_algebra.finite_dimensional
6
+ import ring_theory.principal_ideal_domain
7
7
import ring_theory.ideal.basic
8
8
9
9
/-!
@@ -14,19 +14,34 @@ notion of the rank of a finitely generated free (left) `R`-module. Since a finit
14
14
module with a basis consisting of `n` elements is linearly equivalent to `fin n → R`, it is
15
15
sufficient that `(fin n → R) ≃ₗ[R] (fin m → R)` implies `n = m`.
16
16
17
+ It is also useful to consider two stronger conditions, namely the rank condition,
18
+ that a surjective linear map `(fin n → R) →ₗ[R] (fin m → R)` implies `m ≤ n` and
19
+ the strong rank condition, that an injective linear map `(fin n → R) →ₗ[R] (fin m → R)`
20
+ implies `n ≤ m`.
21
+
22
+ The strong rank condition implies the rank condition, and the rank condition implies
23
+ the invariant basis number property.
24
+
17
25
## Main definitions
18
26
27
+ `strong_rank_condition R` is a type class stating that `R` satisfies the strong rank condition.
28
+ `rank_condition R` is a type class stating that `R` satisfies the rank condition.
19
29
`invariant_basis_number R` is a type class stating that `R` has the invariant basis number property.
20
30
21
31
## Main results
22
32
23
- We show that every nontrivial commutative ring has the invariant basis number property.
33
+ We show that every nontrivial left-noetherian ring satifies the rank condition,
34
+ (and so in particular every division ring or field),
35
+ and then use this to show every nontrivial commutative ring has the invariant basis number property.
24
36
25
37
## Future work
26
38
39
+ We can improve these results: in fact every nontrivial left-noetherian ring,
40
+ and every commutative rings, satisfies the strong rank condition.
41
+
27
42
So far, there is no API at all for the `invariant_basis_number` class. There are several natural
28
43
ways to formulate that a module `M` is finitely generated and free, for example
29
- `M ≃ₗ[R] (fin n → R)`, `M ≃ₗ[R] (ι → R)`, where `ι` is a fintype, or prividing a basis indexed by
44
+ `M ≃ₗ[R] (fin n → R)`, `M ≃ₗ[R] (ι → R)`, where `ι` is a fintype, or providing a basis indexed by
30
45
a finite type. There should be lemmas applying the invariant basis number property to each
31
46
situation.
32
47
@@ -37,6 +52,7 @@ variants) should be formalized.
37
52
## References
38
53
39
54
* https://en.wikipedia.org/wiki/Invariant_basis_number
55
+ * https://mathoverflow.net/a/2574/
40
56
41
57
## Tags
42
58
@@ -47,18 +63,45 @@ free module, rank, invariant basis number, IBN
47
63
noncomputable theory
48
64
49
65
open_locale classical big_operators
66
+ open function
50
67
51
68
universes u v w
52
69
53
70
section
54
71
variables (R : Type u) [ring R]
55
72
73
+ /-- We say that `R` satisfies the strong rank condition if `(fin n → R) →ₗ[R] (fin m → R)` injective
74
+ implies `n ≤ m`. -/
75
+ class strong_rank_condition : Prop :=
76
+ (le_of_fin_injective : ∀ {n m : ℕ} (f : (fin n → R) →ₗ[R] (fin m → R)), injective f → n ≤ m)
77
+
78
+ lemma le_of_fin_injective [strong_rank_condition R] {n m : ℕ} (f : (fin n → R) →ₗ[R] (fin m → R)) :
79
+ injective f → n ≤ m :=
80
+ strong_rank_condition.le_of_fin_injective f
81
+
82
+ /-- We say that `R` satisfies the rank condition if `(fin n → R) →ₗ[R] (fin m → R)` surjective
83
+ implies `m ≤ n`. -/
84
+ class rank_condition : Prop :=
85
+ (le_of_fin_surjective : ∀ {n m : ℕ} (f : (fin n → R) →ₗ[R] (fin m → R)), surjective f → m ≤ n)
86
+
87
+ lemma le_of_fin_surjective [rank_condition R] {n m : ℕ} (f : (fin n → R) →ₗ[R] (fin m → R)) :
88
+ surjective f → m ≤ n :=
89
+ rank_condition.le_of_fin_surjective f
90
+
91
+ -- TODO the strong rank condition implies the rank condition
92
+
56
93
/-- We say that `R` has the invariant basis number property if `(fin n → R) ≃ₗ[R] (fin m → R)`
57
94
implies `n = m`. This gives rise to a well-defined notion of rank of a finitely generated free
58
95
module. -/
59
96
class invariant_basis_number : Prop :=
60
97
(eq_of_fin_equiv : ∀ {n m : ℕ}, ((fin n → R) ≃ₗ[R] (fin m → R)) → n = m)
61
98
99
+ @[priority 100 ]
100
+ instance invariant_basis_number_of_rank_condition [rank_condition R] : invariant_basis_number R :=
101
+ { eq_of_fin_equiv := λ n m e, le_antisymm
102
+ (le_of_fin_surjective R e.symm.to_linear_map e.symm.surjective)
103
+ (le_of_fin_surjective R e.to_linear_map e.surjective) }
104
+
62
105
end
63
106
64
107
section
79
122
end
80
123
81
124
section
82
- open finite_dimensional
83
-
84
- /-- A field has invariant basis number. This will be superseded below by the fact that any nonzero
85
- commutative ring has invariant basis number. -/
86
- lemma invariant_basis_number_field {K : Type u} [field K] : invariant_basis_number K :=
87
- ⟨λ n m e,
88
- calc n = fintype.card (fin n) : eq.symm $ fintype.card_fin n
89
- ... = finrank K (fin n → K) : eq.symm $ finrank_eq_card_basis (pi.basis_fun K (fin n))
90
- ... = finrank K (fin m → K) : linear_equiv.finrank_eq e
91
- ... = fintype.card (fin m) : finrank_eq_card_basis (pi.basis_fun K (fin m))
92
- ... = m : fintype.card_fin m⟩
125
+ variables (R : Type u) [ring R] [nontrivial R] [is_noetherian_ring R]
126
+
127
+ -- TODO: in fact, any nontrivial noetherian ring satisfies the strong rank condition.
128
+
129
+ /-- Any nontrivial noetherian ring satisfies the rank condition. -/
130
+ -- Note this includes fields,
131
+ -- and we use this below to show any commutative ring has invariant basis number.
132
+ @[priority 100 ]
133
+ instance noetherian_ring_rank_condition : rank_condition R :=
134
+ ⟨begin
135
+ intros n m f fs,
136
+ by_contradiction h,
137
+ rw [not_le, ←nat.add_one_le_iff, le_iff_exists_add] at h,
138
+ obtain ⟨m, rfl⟩ := h,
139
+ -- Let `g` be the projection map discarding the last `n` coordinates.
140
+ let g : (fin ((n + 1 ) + m) → R) →ₗ[R] (fin n → R) :=
141
+ linear_map.fun_left R R ((fin.cast_add 1 ).trans (fin.cast_add m)),
142
+ have gs : function.surjective g :=
143
+ linear_map.fun_left_surjective_of_injective _ _ _
144
+ ((fin.cast_add m).injective.comp (fin.cast_add 1 ).injective),
145
+ -- Since `g` composed with the `f` is a surjective endomorphism of
146
+ -- a noetherian module, it is injective, and so `f` itself is injective.
147
+ have gi : function.injective g :=
148
+ (is_noetherian.injective_of_surjective_endomorphism (f.comp g)
149
+ (function.surjective.comp fs gs)).of_comp,
150
+ -- But this gives an easy contradiction.
151
+ let i : fin (n + 1 + m) := fin.cast_add m (fin.nat_add n 0 ),
152
+ let x : fin (n + 1 + m) → R := finsupp.single i 1 ,
153
+ have z : g x = 0 := begin
154
+ ext j,
155
+ simp only [g, x, i, linear_map.fun_left_apply, pi.zero_apply],
156
+ rw finsupp.single_eq_of_ne,
157
+ refine fin.ne_of_vne _,
158
+ simp only [add_zero, fin.coe_zero, fin.val_eq_coe, fin.coe_nat_add, ne.def, fin.coe_cast_add],
159
+ exact j.2 .ne.symm,
160
+ end ,
161
+ simpa [x] using congr_fun ((g.map_eq_zero_iff gi).mp z) i,
162
+ end ⟩
93
163
94
164
end
95
165
134
204
end
135
205
136
206
section
137
- local attribute [instance] invariant_basis_number_field
138
- local attribute [instance, priority 1 ] ideal.quotient.field
207
+ local attribute [instance] ideal.quotient.field
208
+
209
+ -- TODO: in fact, any nontrivial commutative ring satisfies the strong rank condition.
139
210
140
211
/-- Nontrivial commutative rings have the invariant basis number property. -/
141
212
@[priority 100 ]
0 commit comments