Skip to content

Commit 4c9b452

Browse files
committed
1 parent b113092 commit 4c9b452

File tree

15 files changed

+293
-249
lines changed

15 files changed

+293
-249
lines changed

Mathlib/Analysis/Complex/Circle.lean

Lines changed: 99 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -38,105 +38,142 @@ open Complex Metric
3838

3939
open ComplexConjugate
4040

41-
/-- The unit circle in `ℂ`, here given the structure of a submonoid of `ℂ`. -/
41+
/-- The unit circle in `ℂ`, here given the structure of a submonoid of `ℂ`.
42+
43+
Please use `Circle` when referring to the circle as a type. -/
44+
@[deprecated (since := "2024-07-24")]
4245
def circle : Submonoid ℂ :=
4346
Submonoid.unitSphere ℂ
4447

45-
@[simp]
48+
set_option linter.deprecated false in
49+
@[deprecated (since := "2024-07-24")]
4650
theorem mem_circle_iff_abs {z : ℂ} : z ∈ circle ↔ abs z = 1 :=
4751
mem_sphere_zero_iff_norm
4852

49-
theorem circle_def : ↑circle = { z : ℂ | abs z = 1 } :=
50-
Set.ext fun _ => mem_circle_iff_abs
51-
52-
@[simp]
53-
theorem abs_coe_circle (z : circle) : abs z = 1 :=
54-
mem_circle_iff_abs.mp z.2
53+
set_option linter.deprecated false in
54+
@[deprecated (since := "2024-07-24")]
55+
theorem mem_circle_iff_normSq {z : ℂ} : z ∈ circle ↔ normSq z = 1 := by
56+
simp [Complex.abs, mem_circle_iff_abs]
5557

56-
theorem mem_circle_iff_normSq {z : ℂ} : z ∈ circle ↔ normSq z = 1 := by simp [Complex.abs]
58+
/-- The unit circle in `ℂ`. -/
59+
def Circle : Type := Submonoid.unitSphere ℂ
60+
deriving TopologicalSpace
5761

58-
@[simp]
59-
theorem normSq_eq_of_mem_circle (z : circle) : normSq z = 1 := by simp [normSq_eq_abs]
62+
namespace Circle
6063

61-
theorem ne_zero_of_mem_circle (z : circle) : (z : ℂ) ≠ 0 :=
62-
ne_zero_of_mem_unit_sphere z
64+
instance instCoeOut : CoeOut Circle ℂ := subtypeCoe
6365

64-
instance commGroup : CommGroup circle :=
65-
Metric.sphere.commGroup
66+
instance instCommGroup : CommGroup Circle := Metric.sphere.commGroup
67+
instance instMetricSpace : MetricSpace Circle := Subtype.metricSpace
6668

67-
@[simp]
68-
theorem coe_inv_circle (z : circle) : ↑z⁻¹ = (z : ℂ)⁻¹ :=
69-
rfl
69+
@[simp] lemma abs_coe (z : Circle) : abs z = 1 := mem_sphere_zero_iff_norm.1 z.2
70+
@[simp] lemma normSq_coe (z : Circle) : normSq z = 1 := by simp [normSq_eq_abs]
71+
@[simp] lemma coe_ne_zero (z : Circle) : (z : ℂ) ≠ 0 := ne_zero_of_mem_unit_sphere z
72+
@[simp, norm_cast] lemma coe_one : ↑(1 : Circle) = (1 : ℂ) := rfl
73+
@[simp, norm_cast] lemma coe_mul (z w : Circle) : ↑(z * w) = (z : ℂ) * w := rfl
74+
@[simp, norm_cast] lemma coe_inv (z : Circle) : ↑z⁻¹ = (z : ℂ)⁻¹ := rfl
75+
lemma coe_inv_eq_conj (z : Circle) : ↑z⁻¹ = conj (z : ℂ) := by
76+
rw [coe_inv, inv_def, normSq_coe, inv_one, ofReal_one, mul_one]
7077

71-
theorem coe_inv_circle_eq_conj (z : circle) : ↑z⁻¹ = conj (z : ℂ) := by
72-
rw [coe_inv_circle, inv_def, normSq_eq_of_mem_circle, inv_one, ofReal_one, mul_one]
78+
@[simp, norm_cast] lemma coe_div (z w : Circle) : ↑(z / w) = (z : ℂ) / w := rfl
7379

74-
@[simp]
75-
theorem coe_div_circle (z w : circle) : ↑(z / w) = (z : ℂ) / w :=
76-
circle.subtype.map_div z w
80+
/-- The coercion `Circle → ℂ` as a monoid homomorphism. -/
81+
@[simps]
82+
def coeHom : Circle →* ℂ where
83+
toFun := (↑)
84+
map_one' := coe_one
85+
map_mul' := coe_mul
86+
87+
@[deprecated (since := "2024-07-24")] alias _root_.abs_coe_circle := abs_coe
88+
@[deprecated (since := "2024-07-24")] alias _root_.normSq_eq_of_mem_circle := normSq_coe
89+
@[deprecated (since := "2024-07-24")] alias _root_.ne_zero_of_mem_circle := coe_ne_zero
90+
@[deprecated (since := "2024-07-24")] alias _root_.coe_inv_circle := coe_inv
91+
@[deprecated (since := "2024-07-24")] alias _root_.coe_inv_circle_eq_conj := coe_inv_eq_conj
92+
@[deprecated (since := "2024-07-24")] alias _root_.coe_div_circle := coe_div
7793

7894
/-- The elements of the circle embed into the units. -/
79-
def circle.toUnits : circle →* Units ℂ :=
80-
unitSphereToUnits ℂ
81-
82-
-- written manually because `@[simps]` was slow and generated the wrong lemma
83-
@[simp]
84-
theorem circle.toUnits_apply (z : circle) :
85-
circle.toUnits z = Units.mk0 ↑z (ne_zero_of_mem_circle z) :=
86-
rfl
87-
88-
instance : CompactSpace circle :=
89-
Metric.sphere.compactSpace _ _
95+
def toUnits : Circle →* Units ℂ := unitSphereToUnits ℂ
9096

91-
instance : TopologicalGroup circle :=
92-
Metric.sphere.topologicalGroup
97+
-- written manually because `@[simps]` generated the wrong lemma
98+
@[simp] lemma toUnits_apply (z : Circle) : toUnits z = Units.mk0 ↑z z.coe_ne_zero := rfl
9399

94-
instance : UniformGroup circle := by
95-
convert topologicalGroup_is_uniform_of_compactSpace circle
100+
instance : CompactSpace Circle := Metric.sphere.compactSpace _ _
101+
instance : TopologicalGroup Circle := Metric.sphere.topologicalGroup
102+
instance instUniformSpace : UniformSpace Circle := instUniformSpaceSubtype
103+
instance : UniformGroup Circle := by
104+
convert topologicalGroup_is_uniform_of_compactSpace Circle
96105
exact unique_uniformity_of_compact rfl rfl
97106

98107
/-- If `z` is a nonzero complex number, then `conj z / z` belongs to the unit circle. -/
99108
@[simps]
100-
def circle.ofConjDivSelf (z : ℂ) (hz : z ≠ 0) : circle :=
101-
⟨conj z / z,
102-
mem_circle_iff_abs.2 <| by rw [map_div₀, abs_conj, div_self]; exact Complex.abs.ne_zero hz⟩
109+
def ofConjDivSelf (z : ℂ) (hz : z ≠ 0) : Circle where
110+
val := conj z / z
111+
property := mem_sphere_zero_iff_norm.2 <| by
112+
rw [norm_div, RCLike.norm_conj, div_self]; exact Complex.abs.ne_zero hz
103113

104114
/-- The map `fun t => exp (t * I)` from `ℝ` to the unit circle in `ℂ`. -/
105-
def expMapCircle : C(ℝ, circle) where
106-
toFun t := ⟨exp (t * I), by simp [exp_mul_I, abs_cos_add_sin_mul_I]⟩
115+
def exp : C(ℝ, Circle) where
116+
toFun t := ⟨(t * I).exp, by simp [Submonoid.unitSphere, exp_mul_I, abs_cos_add_sin_mul_I]⟩
117+
continuous_toFun := Continuous.subtype_mk (by fun_prop)
118+
(by simp [Submonoid.unitSphere, exp_mul_I, abs_cos_add_sin_mul_I])
107119

108120
@[simp]
109-
theorem expMapCircle_apply (t : ℝ) : ↑(expMapCircle t) = Complex.exp (t * Complex.I) :=
110-
rfl
121+
theorem exp_apply (t : ℝ) : ↑(exp t) = Complex.exp (t * Complex.I) := rfl
111122

112123
@[simp]
113-
theorem expMapCircle_zero : expMapCircle 0 = 1 :=
114-
Subtype.ext <| by
115-
rw [expMapCircle_apply, ofReal_zero, zero_mul, exp_zero, Submonoid.coe_one]
124+
theorem exp_zero : exp 0 = 1 :=
125+
Subtype.ext <| by rw [exp_apply, ofReal_zero, zero_mul, Complex.exp_zero, coe_one]
116126

117127
@[simp]
118-
theorem expMapCircle_add (x y : ℝ) : expMapCircle (x + y) = expMapCircle x * expMapCircle y :=
128+
theorem exp_add (x y : ℝ) : exp (x + y) = exp x * exp y :=
119129
Subtype.ext <| by
120-
simp only [expMapCircle_apply, Submonoid.coe_mul, ofReal_add, add_mul, Complex.exp_add]
130+
simp only [exp_apply, Submonoid.coe_mul, ofReal_add, add_mul, Complex.exp_add, coe_mul]
121131

122132
/-- The map `fun t => exp (t * I)` from `ℝ` to the unit circle in `ℂ`,
123133
considered as a homomorphism of groups. -/
124134
@[simps]
125-
def expMapCircleHom : ℝ →+ Additive circle where
126-
toFun := Additive.ofMul ∘ expMapCircle
127-
map_zero' := expMapCircle_zero
128-
map_add' := expMapCircle_add
135+
def expHom : ℝ →+ Additive Circle where
136+
toFun := Additive.ofMul ∘ exp
137+
map_zero' := exp_zero
138+
map_add' := exp_add
129139

130-
@[simp]
131-
theorem expMapCircle_sub (x y : ℝ) : expMapCircle (x - y) = expMapCircle x / expMapCircle y :=
132-
expMapCircleHom.map_sub x y
140+
@[simp] lemma exp_sub (x y : ℝ) : exp (x - y) = exp x / exp y := expHom.map_sub x y
141+
@[simp] lemma exp_neg (x : ℝ) : exp (-x) = (exp x)⁻¹ := expHom.map_neg x
133142

134-
@[simp]
135-
theorem expMapCircle_neg (x : ℝ) : expMapCircle (-x) = (expMapCircle x)⁻¹ :=
136-
expMapCircleHom.map_neg x
143+
variable {α β M : Type*}
144+
145+
instance instSMul [SMul ℂ α] : SMul Circle α := Submonoid.smul _
146+
147+
instance instSMulCommClass_left [SMul ℂ β] [SMul α β] [SMulCommClass ℂ α β] :
148+
SMulCommClass Circle α β := Submonoid.smulCommClass_left _
149+
150+
instance instSMulCommClass_right [SMul ℂ β] [SMul α β] [SMulCommClass α ℂ β] :
151+
SMulCommClass α Circle β := Submonoid.smulCommClass_right _
152+
153+
instance instIsScalarTower [SMul ℂ α] [SMul ℂ β] [SMul α β] [IsScalarTower ℂ α β] :
154+
IsScalarTower Circle α β := Submonoid.isScalarTower _
155+
156+
instance instMulAction [MulAction ℂ α] : MulAction Circle α := Submonoid.mulAction _
157+
158+
instance instDistribMulAction [AddMonoid M] [DistribMulAction ℂ M] :
159+
DistribMulAction Circle M := Submonoid.distribMulAction _
160+
161+
lemma smul_def [SMul ℂ α] (z : Circle) (a : α) : z • a = (z : ℂ) • a := rfl
162+
163+
instance instContinuousSMul [TopologicalSpace α] [MulAction ℂ α] [ContinuousSMul ℂ α] :
164+
ContinuousSMul Circle α := Submonoid.continuousSMul
137165

138166
@[simp]
139-
lemma norm_circle_smul {E : Type*} [SeminormedAddCommGroup E] [NormedSpace ℂ E]
140-
(u : circle) (v : E) :
167+
protected lemma norm_smul {E : Type*} [SeminormedAddCommGroup E] [NormedSpace ℂ E]
168+
(u : Circle) (v : E) :
141169
‖u • v‖ = ‖v‖ := by
142170
rw [Submonoid.smul_def, norm_smul, norm_eq_of_mem_sphere, one_mul]
171+
172+
@[deprecated (since := "2024-07-24")] noncomputable alias _root_.expMapCircle := exp
173+
@[deprecated (since := "2024-07-24")] noncomputable alias _root_.expMapCircle_apply := exp_apply
174+
@[deprecated (since := "2024-07-24")] noncomputable alias _root_.expMapCircle_zero := exp_zero
175+
@[deprecated (since := "2024-07-24")] noncomputable alias _root_.expMapCircle_sub := exp_sub
176+
@[deprecated (since := "2024-07-24")] noncomputable alias _root_.norm_circle_smul :=
177+
Circle.norm_smul
178+
179+
end Circle

Mathlib/Analysis/Complex/Isometry.lean

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,27 +38,27 @@ local notation "|" x "|" => Complex.abs x
3838

3939
/-- An element of the unit circle defines a `LinearIsometryEquiv` from `ℂ` to itself, by
4040
rotation. -/
41-
def rotation : circle →* ℂ ≃ₗᵢ[ℝ] ℂ where
41+
def rotation : Circle →* ℂ ≃ₗᵢ[ℝ] ℂ where
4242
toFun a :=
4343
{ DistribMulAction.toLinearEquiv ℝ ℂ a with
44-
norm_map' := fun x => show |a * x| = |x| by rw [map_mul, abs_coe_circle, one_mul] }
45-
map_one' := LinearIsometryEquiv.ext <| one_smul circle
44+
norm_map' := fun x => show |a * x| = |x| by rw [map_mul, Circle.abs_coe, one_mul] }
45+
map_one' := LinearIsometryEquiv.ext <| by simp
4646
map_mul' a b := LinearIsometryEquiv.ext <| mul_smul a b
4747

4848
@[simp]
49-
theorem rotation_apply (a : circle) (z : ℂ) : rotation a z = a * z :=
49+
theorem rotation_apply (a : Circle) (z : ℂ) : rotation a z = a * z :=
5050
rfl
5151

5252
@[simp]
53-
theorem rotation_symm (a : circle) : (rotation a).symm = rotation a⁻¹ :=
53+
theorem rotation_symm (a : Circle) : (rotation a).symm = rotation a⁻¹ :=
5454
LinearIsometryEquiv.ext fun _ => rfl
5555

5656
@[simp]
57-
theorem rotation_trans (a b : circle) : (rotation a).trans (rotation b) = rotation (b * a) := by
57+
theorem rotation_trans (a b : Circle) : (rotation a).trans (rotation b) = rotation (b * a) := by
5858
ext1
5959
simp
6060

61-
theorem rotation_ne_conjLIE (a : circle) : rotation a ≠ conjLIE := by
61+
theorem rotation_ne_conjLIE (a : Circle) : rotation a ≠ conjLIE := by
6262
intro h
6363
have h1 : rotation a 1 = conj 1 := LinearIsometryEquiv.congr_fun h 1
6464
have hI : rotation a I = conj I := LinearIsometryEquiv.congr_fun h I
@@ -69,11 +69,11 @@ theorem rotation_ne_conjLIE (a : circle) : rotation a ≠ conjLIE := by
6969
/-- Takes an element of `ℂ ≃ₗᵢ[ℝ] ℂ` and checks if it is a rotation, returns an element of the
7070
unit circle. -/
7171
@[simps]
72-
def rotationOf (e : ℂ ≃ₗᵢ[ℝ] ℂ) : circle :=
73-
⟨e 1 / Complex.abs (e 1), by simp⟩
72+
def rotationOf (e : ℂ ≃ₗᵢ[ℝ] ℂ) : Circle :=
73+
⟨e 1 / Complex.abs (e 1), by simp [Submonoid.unitSphere, ← Complex.norm_eq_abs]
7474

7575
@[simp]
76-
theorem rotationOf_rotation (a : circle) : rotationOf (rotation a) = a :=
76+
theorem rotationOf_rotation (a : Circle) : rotationOf (rotation a) = a :=
7777
Subtype.ext <| by simp
7878

7979
theorem rotation_injective : Function.Injective rotation :=
@@ -127,8 +127,8 @@ theorem linear_isometry_complex_aux {f : ℂ ≃ₗᵢ[ℝ] ℂ} (h : f 1 = 1) :
127127
fin_cases i <;> simp [h, h']
128128

129129
theorem linear_isometry_complex (f : ℂ ≃ₗᵢ[ℝ] ℂ) :
130-
∃ a : circle, f = rotation a ∨ f = conjLIE.trans (rotation a) := by
131-
let a : circle := ⟨f 1, by rw [mem_circle_iff_abs, ← Complex.norm_eq_abs, f.norm_map, norm_one]⟩
130+
∃ a : Circle, f = rotation a ∨ f = conjLIE.trans (rotation a) := by
131+
let a : Circle := ⟨f 1, by simp [Submonoid.unitSphere, ← Complex.norm_eq_abs, f.norm_map]⟩
132132
use a
133133
have : (f.trans (rotation a).symm) 1 = 1 := by simpa using rotation_apply a⁻¹ (f 1)
134134
refine (linear_isometry_complex_aux this).imp (fun h₁ => ?_) fun h₂ => ?_
@@ -137,7 +137,7 @@ theorem linear_isometry_complex (f : ℂ ≃ₗᵢ[ℝ] ℂ) :
137137

138138
/-- The matrix representation of `rotation a` is equal to the conformal matrix
139139
`!![re a, -im a; im a, re a]`. -/
140-
theorem toMatrix_rotation (a : circle) :
140+
theorem toMatrix_rotation (a : Circle) :
141141
LinearMap.toMatrix basisOneI basisOneI (rotation a).toLinearEquiv =
142142
Matrix.planeConformalMatrix (re a) (im a) (by simp [pow_two, ← normSq_apply]) := by
143143
ext i j
@@ -149,11 +149,11 @@ theorem toMatrix_rotation (a : circle) :
149149

150150
/-- The determinant of `rotation` (as a linear map) is equal to `1`. -/
151151
@[simp]
152-
theorem det_rotation (a : circle) : LinearMap.det ((rotation a).toLinearEquiv : ℂ →ₗ[ℝ] ℂ) = 1 := by
152+
theorem det_rotation (a : Circle) : LinearMap.det ((rotation a).toLinearEquiv : ℂ →ₗ[ℝ] ℂ) = 1 := by
153153
rw [← LinearMap.det_toMatrix basisOneI, toMatrix_rotation, Matrix.det_fin_two]
154154
simp [← normSq_apply]
155155

156156
/-- The determinant of `rotation` (as a linear equiv) is equal to `1`. -/
157157
@[simp]
158-
theorem linearEquiv_det_rotation (a : circle) : LinearEquiv.det (rotation a).toLinearEquiv = 1 := by
158+
theorem linearEquiv_det_rotation (a : Circle) : LinearEquiv.det (rotation a).toLinearEquiv = 1 := by
159159
rw [← Units.eq_iff, LinearEquiv.coe_det, det_rotation, Units.val_one]

Mathlib/Analysis/Complex/UnitDisc/Basic.lean

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,23 @@ theorem coe_eq_zero {z : 𝔻} : (z : ℂ) = 0 ↔ z = 0 :=
9797
instance : Inhabited 𝔻 :=
9898
0
9999

100-
instance circleAction : MulAction circle 𝔻 :=
100+
instance circleAction : MulAction Circle 𝔻 :=
101101
mulActionSphereBall
102102

103-
instance isScalarTower_circle_circle : IsScalarTower circle circle 𝔻 :=
103+
instance isScalarTower_circle_circle : IsScalarTower Circle Circle 𝔻 :=
104104
isScalarTower_sphere_sphere_ball
105105

106-
instance isScalarTower_circle : IsScalarTower circle 𝔻 𝔻 :=
106+
instance isScalarTower_circle : IsScalarTower Circle 𝔻 𝔻 :=
107107
isScalarTower_sphere_ball_ball
108108

109-
instance instSMulCommClass_circle : SMulCommClass circle 𝔻 𝔻 :=
109+
instance instSMulCommClass_circle : SMulCommClass Circle 𝔻 𝔻 :=
110110
instSMulCommClass_sphere_ball_ball
111111

112-
instance instSMulCommClass_circle' : SMulCommClass 𝔻 circle 𝔻 :=
112+
instance instSMulCommClass_circle' : SMulCommClass 𝔻 Circle 𝔻 :=
113113
SMulCommClass.symm _ _ _
114114

115115
@[simp, norm_cast]
116-
theorem coe_smul_circle (z : circle) (w : 𝔻) : ↑(z • w) = (z * w : ℂ) :=
116+
theorem coe_smul_circle (z : Circle) (w : 𝔻) : ↑(z • w) = (z * w : ℂ) :=
117117
rfl
118118

119119
instance closedBallAction : MulAction (closedBall (0 : ℂ) 1) 𝔻 :=
@@ -132,10 +132,10 @@ instance instSMulCommClass_closedBall : SMulCommClass (closedBall (0 : ℂ) 1)
132132
instance instSMulCommClass_closedBall' : SMulCommClass 𝔻 (closedBall (0 : ℂ) 1) 𝔻 :=
133133
SMulCommClass.symm _ _ _
134134

135-
instance instSMulCommClass_circle_closedBall : SMulCommClass circle (closedBall (0 : ℂ) 1) 𝔻 :=
135+
instance instSMulCommClass_circle_closedBall : SMulCommClass Circle (closedBall (0 : ℂ) 1) 𝔻 :=
136136
instSMulCommClass_sphere_closedBall_ball
137137

138-
instance instSMulCommClass_closedBall_circle : SMulCommClass (closedBall (0 : ℂ) 1) circle 𝔻 :=
138+
instance instSMulCommClass_closedBall_circle : SMulCommClass (closedBall (0 : ℂ) 1) Circle 𝔻 :=
139139
SMulCommClass.symm _ _ _
140140

141141
@[simp, norm_cast]

Mathlib/Analysis/Fourier/AddCircle.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ theorem fourier_apply {n : ℤ} {x : AddCircle T} : fourier n x = toCircle (n
111111
theorem fourier_coe_apply {n : ℤ} {x : ℝ} :
112112
fourier n (x : AddCircle T) = Complex.exp (2 * π * Complex.I * n * x / T) := by
113113
rw [fourier_apply, ← QuotientAddGroup.mk_zsmul, toCircle, Function.Periodic.lift_coe,
114-
expMapCircle_apply, Complex.ofReal_mul, Complex.ofReal_div, Complex.ofReal_mul, zsmul_eq_mul,
114+
Circle.exp_apply, Complex.ofReal_mul, Complex.ofReal_div, Complex.ofReal_mul, zsmul_eq_mul,
115115
Complex.ofReal_mul, Complex.ofReal_intCast]
116116
norm_num
117117
congr 1; ring
@@ -145,7 +145,7 @@ theorem fourier_neg {n : ℤ} {x : AddCircle T} : fourier (-n) x = conj (fourier
145145
induction x using QuotientAddGroup.induction_on
146146
simp_rw [fourier_apply, toCircle]
147147
rw [← QuotientAddGroup.mk_zsmul, ← QuotientAddGroup.mk_zsmul]
148-
simp_rw [Function.Periodic.lift_coe, ← coe_inv_circle_eq_conj, ← expMapCircle_neg,
148+
simp_rw [Function.Periodic.lift_coe, ← Circle.coe_inv_eq_conj, ← Circle.exp_neg,
149149
neg_smul, mul_neg]
150150

151151
@[simp]
@@ -154,7 +154,7 @@ theorem fourier_neg' {n : ℤ} {x : AddCircle T} : @toCircle T (-(n • x)) = co
154154

155155
-- @[simp] -- Porting note: simp normal form is `fourier_add'`
156156
theorem fourier_add {m n : ℤ} {x : AddCircle T} : fourier (m+n) x = fourier m x * fourier n x := by
157-
simp_rw [fourier_apply, add_zsmul, toCircle_add, coe_mul_unitSphere]
157+
simp_rw [fourier_apply, add_zsmul, toCircle_add, Circle.coe_mul]
158158

159159
@[simp]
160160
theorem fourier_add' {m n : ℤ} {x : AddCircle T} :
@@ -163,7 +163,7 @@ theorem fourier_add' {m n : ℤ} {x : AddCircle T} :
163163

164164
theorem fourier_norm [Fact (0 < T)] (n : ℤ) : ‖@fourier T n‖ = 1 := by
165165
rw [ContinuousMap.norm_eq_iSup_norm]
166-
have : ∀ x : AddCircle T, ‖fourier n x‖ = 1 := fun x => abs_coe_circle _
166+
have : ∀ x : AddCircle T, ‖fourier n x‖ = 1 := fun x => Circle.abs_coe _
167167
simp_rw [this]
168168
exact @ciSup_const _ _ _ Zero.instNonempty _
169169

@@ -173,7 +173,7 @@ theorem fourier_add_half_inv_index {n : ℤ} (hn : n ≠ 0) (hT : 0 < T) (x : Ad
173173
rw [fourier_apply, zsmul_add, ← QuotientAddGroup.mk_zsmul, toCircle_add, coe_mul_unitSphere]
174174
have : (n : ℂ) ≠ 0 := by simpa using hn
175175
have : (@toCircle T (n • (T / 2 / n) : ℝ) : ℂ) = -1 := by
176-
rw [zsmul_eq_mul, toCircle, Function.Periodic.lift_coe, expMapCircle_apply]
176+
rw [zsmul_eq_mul, toCircle, Function.Periodic.lift_coe, Circle.exp_apply]
177177
replace hT := Complex.ofReal_ne_zero.mpr hT.ne'
178178
convert Complex.exp_pi_mul_I using 3
179179
field_simp; ring

0 commit comments

Comments
 (0)