@@ -18,8 +18,8 @@ and `q` is notation for the cardinality of `K`.
18
18
1. Let `f` be a multivariate polynomial in finitely many variables (`X s`, `s : σ`)
19
19
such that the total degree of `f` is less than `(q-1)` times the cardinality of `σ`.
20
20
Then the evaluation of `f` on all points of `σ → K` (aka `K^σ`) sums to `0`.
21
- (`sum_mv_polynomial_eq_zero `)
22
- 2. The Chevalley–Warning theorem (`char_dvd_card_solutions `).
21
+ (`sum_eval_eq_zero `)
22
+ 2. The Chevalley–Warning theorem (`char_dvd_card_solutions_of_sum_lt `).
23
23
Let `f i` be a finite family of multivariate polynomials
24
24
in finitely many variables (`X s`, `s : σ`) such that
25
25
the sum of the total degrees of the `f i` is less than the cardinality of `σ`.
@@ -41,12 +41,12 @@ open_locale big_operators
41
41
section finite_field
42
42
open mv_polynomial function (hiding eval) finset finite_field
43
43
44
- variables {K : Type *} {σ : Type *} [fintype K] [field K] [fintype σ]
44
+ variables {K σ ι : Type *} [fintype K] [field K] [fintype σ] [decidable_eq σ]
45
45
local notation `q ` := fintype.card K
46
46
47
- lemma mv_polynomial.sum_mv_polynomial_eq_zero [decidable_eq σ] (f : mv_polynomial σ K)
47
+ lemma mv_polynomial.sum_eval_eq_zero (f : mv_polynomial σ K)
48
48
(h : f.total_degree < (q - 1 ) * fintype.card σ) :
49
- ( ∑ x, eval x f) = 0 :=
49
+ ∑ x, eval x f = 0 :=
50
50
begin
51
51
haveI : decidable_eq K := classical.dec_eq K,
52
52
calc (∑ x, eval x f)
@@ -86,15 +86,14 @@ begin
86
86
rw equiv.subtype_equiv_codomain_symm_apply_ne, }
87
87
end
88
88
89
- variables [decidable_eq K] [decidable_eq σ ]
89
+ variables [decidable_eq K] (p : ℕ) [char_p K p ]
90
90
91
- /-- The Chevalley–Warning theorem.
91
+ /-- The ** Chevalley–Warning theorem** , finitary version .
92
92
Let `(f i)` be a finite family of multivariate polynomials
93
93
in finitely many variables (`X s`, `s : σ`) over a finite field of characteristic `p`.
94
94
Assume that the sum of the total degrees of the `f i` is less than the cardinality of `σ`.
95
95
Then the number of common solutions of the `f i` is divisible by `p`. -/
96
- theorem char_dvd_card_solutions_family (p : ℕ) [char_p K p]
97
- {ι : Type *} {s : finset ι} {f : ι → mv_polynomial σ K}
96
+ theorem char_dvd_card_solutions_of_sum_lt {s : finset ι} {f : ι → mv_polynomial σ K}
98
97
(h : (∑ i in s, (f i).total_degree) < fintype.card σ) :
99
98
p ∣ fintype.card {x : σ → K // ∀ i ∈ s, eval x (f i) = 0 } :=
100
99
begin
@@ -131,7 +130,7 @@ begin
131
130
rw [← char_p.cast_eq_zero_iff K, ← key],
132
131
show ∑ x, eval x F = 0 ,
133
132
-- We are now ready to apply the main machine, proven before.
134
- apply F.sum_mv_polynomial_eq_zero ,
133
+ apply F.sum_eval_eq_zero ,
135
134
-- It remains to verify the crucial assumption of this machine
136
135
show F.total_degree < (q - 1 ) * fintype.card σ,
137
136
calc F.total_degree ≤ ∑ i in s, (1 - (f i)^(q - 1 )).total_degree : total_degree_finset_prod s _
@@ -147,22 +146,43 @@ begin
147
146
... ≤ (q - 1 ) * (f i).total_degree : total_degree_pow _ _
148
147
end
149
148
150
- /-- The Chevalley–Warning theorem.
149
+ /-- The **Chevalley–Warning theorem** , fintype version.
150
+ Let `(f i)` be a finite family of multivariate polynomials
151
+ in finitely many variables (`X s`, `s : σ`) over a finite field of characteristic `p`.
152
+ Assume that the sum of the total degrees of the `f i` is less than the cardinality of `σ`.
153
+ Then the number of common solutions of the `f i` is divisible by `p`. -/
154
+ theorem char_dvd_card_solutions_of_fintype_sum_lt [fintype ι] {f : ι → mv_polynomial σ K}
155
+ (h : (∑ i, (f i).total_degree) < fintype.card σ) :
156
+ p ∣ fintype.card {x : σ → K // ∀ i, eval x (f i) = 0 } :=
157
+ by simpa using char_dvd_card_solutions_of_sum_lt p h
158
+
159
+ /-- The **Chevalley–Warning theorem** , unary version.
151
160
Let `f` be a multivariate polynomial in finitely many variables (`X s`, `s : σ`)
152
161
over a finite field of characteristic `p`.
153
162
Assume that the total degree of `f` is less than the cardinality of `σ`.
154
163
Then the number of solutions of `f` is divisible by `p`.
155
- See `char_dvd_card_solutions_family` for a version that takes a family of polynomials `f i`. -/
156
- theorem char_dvd_card_solutions (p : ℕ) [char_p K p]
157
- {f : mv_polynomial σ K} (h : f.total_degree < fintype.card σ) :
164
+ See `char_dvd_card_solutions_of_sum_lt` for a version that takes a family of polynomials `f i`. -/
165
+ theorem char_dvd_card_solutions {f : mv_polynomial σ K} (h : f.total_degree < fintype.card σ) :
158
166
p ∣ fintype.card {x : σ → K // eval x f = 0 } :=
159
167
begin
160
168
let F : unit → mv_polynomial σ K := λ _, f,
161
- have : ∑ i : unit, (F i).total_degree < fintype.card σ,
162
- { simpa only [fintype.univ_punit, sum_singleton] using h, },
163
- have key := char_dvd_card_solutions_family p this ,
164
- simp only [F, fintype.univ_punit, forall_eq, mem_singleton] at key,
165
- convert key,
169
+ have : ∑ i : unit, (F i).total_degree < fintype.card σ := h,
170
+ simpa only [F, fintype.univ_punit, forall_eq, mem_singleton] using
171
+ char_dvd_card_solutions_of_sum_lt p this ,
172
+ end
173
+
174
+ /-- The **Chevalley–Warning theorem** , binary version.
175
+ Let `f₁`, `f₂` be two multivariate polynomials in finitely many variables (`X s`, `s : σ`) over a
176
+ finite field of characteristic `p`.
177
+ Assume that the sum of the total degrees of `f₁` and `f₂` is less than the cardinality of `σ`.
178
+ Then the number of common solutions of the `f₁` and `f₂` is divisible by `p`. -/
179
+ theorem char_dvd_card_solutions_of_add_lt {f₁ f₂ : mv_polynomial σ K}
180
+ (h : f₁.total_degree + f₂.total_degree < fintype.card σ) :
181
+ p ∣ fintype.card {x : σ → K // eval x f₁ = 0 ∧ eval x f₂ = 0 } :=
182
+ begin
183
+ let F : bool → mv_polynomial σ K := λ b, cond b f₂ f₁,
184
+ have : ∑ b : bool, (F b).total_degree < fintype.card σ := (add_comm _ _).trans_lt h,
185
+ simpa only [F, bool.forall_bool] using char_dvd_card_solutions_of_fintype_sum_lt p this ,
166
186
end
167
187
168
188
end finite_field
0 commit comments