@@ -3,7 +3,6 @@ Copyright (c) 2021 Yury G. Kudryashov. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Yury G. Kudryashov
5
5
-/
6
- import Mathlib.Algebra.Group.AddChar
7
6
import Mathlib.Analysis.Complex.Circle
8
7
import Mathlib.Analysis.SpecialFunctions.Complex.Log
9
8
@@ -155,6 +154,9 @@ theorem toCircle_add (x : AddCircle T) (y : AddCircle T) :
155
154
induction y using QuotientAddGroup.induction_on'
156
155
simp_rw [← coe_add, toCircle_apply_mk, mul_add, expMapCircle_add]
157
156
157
+ lemma toCircle_zero : toCircle (0 : AddCircle T) = 1 := by
158
+ rw [← QuotientAddGroup.mk_zero, toCircle_apply_mk, mul_zero, expMapCircle_zero]
159
+
158
160
theorem continuous_toCircle : Continuous (@toCircle T) :=
159
161
continuous_coinduced_dom.mpr (expMapCircle.continuous.comp <| continuous_const.mul continuous_id')
160
162
@@ -205,52 +207,3 @@ open AddCircle
205
207
lemma isLocalHomeomorph_expMapCircle : IsLocalHomeomorph expMapCircle := by
206
208
have : Fact (0 < 2 * π) := ⟨by positivity⟩
207
209
exact homeomorphCircle'.isLocalHomeomorph.comp (isLocalHomeomorph_coe (2 * π))
208
-
209
- namespace ZMod
210
-
211
- /-!
212
- ### Additive characters valued in the complex circle
213
- -/
214
-
215
- open scoped Real
216
-
217
- variable {N : ℕ} [NeZero N]
218
-
219
- /-- The additive character from `ZMod N` to the unit circle in `ℂ`, sending `j mod N` to
220
- `exp (2 * π * I * j / N)`. -/
221
- noncomputable def toCircle : AddChar (ZMod N) circle where
222
- toFun := fun j ↦ (toAddCircle j).toCircle
223
- map_add_eq_mul' a b := by simp_rw [map_add, AddCircle.toCircle_add]
224
- map_zero_eq_one' := by simp_rw [map_zero, AddCircle.toCircle, ← QuotientAddGroup.mk_zero,
225
- Function.Periodic.lift_coe, mul_zero, expMapCircle_zero]
226
-
227
- lemma toCircle_intCast (j : ℤ) :
228
- toCircle (j : ZMod N) = exp (2 * π * I * j / N) := by
229
- rw [toCircle, AddChar.coe_mk, AddCircle.toCircle, toAddCircle_intCast,
230
- Function.Periodic.lift_coe, expMapCircle_apply]
231
- push_cast
232
- ring_nf
233
-
234
- lemma toCircle_natCast (j : ℕ) :
235
- toCircle (j : ZMod N) = exp (2 * π * I * j / N) := by
236
- simpa using toCircle_intCast (N := N) j
237
-
238
- /--
239
- Explicit formula for `toCircle j`. Note that this is "evil" because it uses `ZMod.val`. Where
240
- possible, it is recommended to lift `j` to `ℤ` and use `toCircle_intCast` instead.
241
- -/
242
- lemma toCircle_apply (j : ZMod N) :
243
- toCircle j = exp (2 * π * I * j.val / N) := by
244
- rw [← toCircle_natCast, natCast_zmod_val]
245
-
246
- /-- The additive character from `ZMod N` to `ℂ`, sending `j mod N` to `exp (2 * π * I * j / N)`. -/
247
- noncomputable def stdAddChar : AddChar (ZMod N) ℂ := circle.subtype.compAddChar toCircle
248
-
249
- lemma stdAddChar_coe (j : ℤ) :
250
- stdAddChar (j : ZMod N) = exp (2 * π * I * j / N) := by
251
- simp only [stdAddChar, MonoidHom.coe_compAddChar, Function.comp_apply,
252
- Submonoid.coe_subtype, toCircle_intCast]
253
-
254
- lemma stdAddChar_apply (j : ZMod N) : stdAddChar j = ↑(toCircle j) := rfl
255
-
256
- end ZMod
0 commit comments