@@ -19,19 +19,17 @@ introduce some basic operations on this disc.
1919@[expose] public section
2020
2121open Set Function Metric Filter
22- open scoped Topology
22+ open scoped ComplexConjugate Topology
2323
2424noncomputable section
2525
26- local notation "conj'" => starRingEnd β
27-
2826namespace Complex
2927
3028/-- The complex unit disc, denoted as `π»` withinin the Complex namespace -/
3129def UnitDisc : Type :=
3230 ball (0 : β) 1 deriving TopologicalSpace
3331
34- @[inherit_doc] scoped [UnitDisc] notation "π»" => Complex.UnitDisc
32+ @[inherit_doc] scoped [Complex. UnitDisc] notation "π»" => Complex.UnitDisc
3533open UnitDisc
3634
3735namespace UnitDisc
@@ -45,6 +43,7 @@ instance instIsCancelMulZero : IsCancelMulZero UnitDisc := by unfold UnitDisc; i
4543instance instHasDistribNeg : HasDistribNeg UnitDisc := by unfold UnitDisc; infer_instance
4644instance instCoe : Coe UnitDisc β := β¨UnitDisc.coeβ©
4745
46+ @[ext]
4847theorem coe_injective : Injective ((β) : π» β β) :=
4948 Subtype.coe_injective
5049
@@ -63,9 +62,13 @@ theorem norm_lt_one (z : π») : β(z : β)β < 1 :=
6362theorem norm_ne_one (z : π») : β(z : β)β β 1 :=
6463 z.norm_lt_one.ne
6564
65+ theorem sq_norm_lt_one (z : π») : β(z : β)β ^ 2 < 1 := by
66+ rw [sq_lt_one_iff_abs_lt_one, abs_norm]
67+ exact z.norm_lt_one
68+
6669theorem normSq_lt_one (z : π») : normSq z < 1 := by
67- convert (Real.sqrt_lt' one_pos). 1 z.norm_lt_one
68- exact (one_pow 2 ).symm
70+ rw [β Complex.norm_mul_self_eq_normSq, β sq]
71+ exact z.sq_norm_lt_one
6972
7073theorem coe_ne_one (z : π») : (z : β) β 1 :=
7174 ne_of_apply_ne (βΒ·β) <| by simp [z.norm_ne_one]
@@ -80,11 +83,25 @@ theorem one_add_coe_ne_zero (z : π») : (1 + z : β) β 0 :=
8083theorem coe_mul (z w : π») : β(z * w) = (z * w : β) :=
8184 rfl
8285
86+ @ [simp, norm_cast]
87+ theorem coe_neg (z : π») : β(-z) = (-z : β) := rfl
88+
8389/-- A constructor that assumes `βzβ < 1` instead of `dist z 0 < 1` and returns an element
8490of `π»` instead of `β₯Metric.ball (0 : β) 1`. -/
8591def mk (z : β) (hz : βzβ < 1 ) : π» :=
8692 β¨z, mem_ball_zero_iff.2 hzβ©
8793
94+ /-- A cases eliminator that makes `cases z` use `UnitDisc.mk` instead of `Subtype.mk`. -/
95+ @ [elab_as_elim, cases_eliminator]
96+ protected def casesOn {motive : π» β Sort *} (mk : β z hz, motive (.mk z hz)) (z : π») :
97+ motive z :=
98+ mk z z.norm_lt_one
99+
100+ @[simp]
101+ theorem casesOn_mk {motive : π» β Sort *} (mk' : β z hz, motive (.mk z hz)) {z : β} (hz : βzβ < 1 ) :
102+ (mk z hz).casesOn mk' = mk' z hz :=
103+ rfl
104+
88105@[simp]
89106theorem coe_mk (z : β) (hz : βzβ < 1 ) : (mk z hz : β) = z :=
90107 rfl
@@ -111,39 +128,42 @@ theorem coe_eq_zero {z : π»} : (z : β) = 0 β z = 0 :=
111128instance : Inhabited π» :=
112129 β¨0 β©
113130
114- instance circleAction : MulAction Circle π» :=
131+ instance instMulActionCircle : MulAction Circle π» :=
115132 mulActionSphereBall
116133
117- instance isScalarTower_circle_circle : IsScalarTower Circle Circle π» :=
134+ instance instIsScalarTower_circle_circle : IsScalarTower Circle Circle π» :=
118135 isScalarTower_sphere_sphere_ball
119136
120- instance isScalarTower_circle : IsScalarTower Circle π» π» :=
137+ instance instIsScalarTower_circle : IsScalarTower Circle π» π» :=
121138 isScalarTower_sphere_ball_ball
122139
123- instance instSMulCommClass_circle : SMulCommClass Circle π» π» :=
140+ instance instSMulCommClass_circle_left : SMulCommClass Circle π» π» :=
124141 instSMulCommClass_sphere_ball_ball
125142
126- instance instSMulCommClass_circle' : SMulCommClass π» Circle π» :=
143+ instance instSMulCommClass_circle_right : SMulCommClass π» Circle π» :=
127144 SMulCommClass.symm _ _ _
128145
129146@ [simp, norm_cast]
130- theorem coe_smul_circle (z : Circle) (w : π») : β(z β’ w) = (z * w : β) :=
147+ theorem coe_circle_smul (z : Circle) (w : π») : β(z β’ w) = (z * w : β) :=
131148 rfl
132149
133- instance closedBallAction : MulAction (closedBall (0 : β) 1 ) π» :=
150+ @ [deprecated (since := "2026-01-06" )]
151+ alias coe_smul_circle := coe_circle_smul
152+
153+ instance instMulActionClosedBall : MulAction (closedBall (0 : β) 1 ) π» :=
134154 mulActionClosedBallBall
135155
136- instance isScalarTower_closedBall_closedBall :
156+ instance instIsScalarTower_closedBall_closedBall :
137157 IsScalarTower (closedBall (0 : β) 1 ) (closedBall (0 : β) 1 ) π» :=
138158 isScalarTower_closedBall_closedBall_ball
139159
140- instance isScalarTower_closedBall : IsScalarTower (closedBall (0 : β) 1 ) π» π» :=
160+ instance instIsScalarTower_closedBall : IsScalarTower (closedBall (0 : β) 1 ) π» π» :=
141161 isScalarTower_closedBall_ball_ball
142162
143- instance instSMulCommClass_closedBall : SMulCommClass (closedBall (0 : β) 1 ) π» π» :=
163+ instance instSMulCommClass_closedBall_left : SMulCommClass (closedBall (0 : β) 1 ) π» π» :=
144164 β¨fun _ _ _ => Subtype.ext <| mul_left_comm _ _ _β©
145165
146- instance instSMulCommClass_closedBall' : SMulCommClass π» (closedBall (0 : β) 1 ) π» :=
166+ instance instSMulCommClass_closedBall_right : SMulCommClass π» (closedBall (0 : β) 1 ) π» :=
147167 SMulCommClass.symm _ _ _
148168
149169instance instSMulCommClass_circle_closedBall : SMulCommClass Circle (closedBall (0 : β) 1 ) π» :=
@@ -153,9 +173,12 @@ instance instSMulCommClass_closedBall_circle : SMulCommClass (closedBall (0 :
153173 SMulCommClass.symm _ _ _
154174
155175@ [simp, norm_cast]
156- theorem coe_smul_closedBall (z : closedBall (0 : β) 1 ) (w : π») : β(z β’ w) = (z * w : β) :=
176+ theorem coe_closedBall_smul (z : closedBall (0 : β) 1 ) (w : π») : β(z β’ w) = (z * w : β) :=
157177 rfl
158178
179+ @ [deprecated (since := "2026-01-06" )]
180+ alias coe_smul_closedBall := coe_closedBall_smul
181+
159182instance : Pow UnitDisc β+ where
160183 pow z n := β¨z ^ (n : β), by simp [pow_lt_one_iff_of_nonneg, z.norm_lt_one]β©
161184
@@ -207,36 +230,51 @@ theorem im_neg (z : π») : (-z).im = -z.im :=
207230 rfl
208231
209232/-- Conjugate point of the unit disc. -/
210- def conj (z : π») : π» :=
211- mk (conj' β z) <| (norm_conj z).symm βΈ z.norm_lt_one
233+ instance : Star π» where
234+ star z := mk (conj z) <| (norm_conj z).symm βΈ z.norm_lt_one
212235
213- @[simp]
214- theorem coe_conj (z : π») : (z.conj : β) = conj' βz :=
215- rfl
236+ /-- Conjugate point of the unit disc. Deprecated, use `star` instead. -/
237+ @ [ deprecated star (since := "2026-01-06" )]
238+ protected def Β« conj Β» (z : π») := star z
216239
217- @[simp]
218- theorem conj_zero : conj 0 = 0 :=
219- coe_injective (map_zero conj')
240+ @[simp] theorem coe_star (z : π») : (β(star z) : β) = conj βz := rfl
220241
221- @[simp]
222- theorem conj_conj (z : π») : conj (conj z) = z :=
223- coe_injective <| Complex.conj_conj (z : β)
242+ @ [deprecated (since := "2026-01-06" )]
243+ alias coe_conj := coe_star
224244
225245@[simp]
226- theorem conj_neg ( z : π») : (-z).conj = -z.conj :=
227- rfl
246+ protected theorem star_eq_zero { z : π»} : star z = 0 β z = 0 := by
247+ simp [β coe_eq_zero]
228248
229249@[simp]
230- theorem re_conj (z : π») : z.conj.re = z.re :=
231- rfl
250+ protected theorem star_zero : star (0 : π») = 0 := by simp
232251
233- @[simp]
234- theorem im_conj (z : π») : z.conj.im = -z.im :=
235- rfl
252+ instance : InvolutiveStar π» where
253+ star_involutive z := by ext; simp
236254
237- @[simp]
238- theorem conj_mul (z w : π») : (z * w).conj = z.conj * w.conj :=
239- Subtype.ext <| map_mul _ _ _
255+ @ [deprecated star_star (since := "2026-01-06" )]
256+ theorem conj_conj (z : π») : star (star z) = z := star_star z
257+
258+ @[simp] protected theorem star_neg (z : π») : star (-z) = -(star z) := rfl
259+
260+ @ [deprecated (since := "2026-01-06" )]
261+ alias conj_neg := UnitDisc.star_neg
262+
263+ @[simp] protected theorem re_star (z : π») : (star z).re = z.re := rfl
264+
265+ @ [deprecated (since := "2026-01-06" )]
266+ alias re_conj := UnitDisc.re_star
267+
268+ @[simp] protected theorem im_star (z : π») : (star z).im = -z.im := rfl
269+
270+ @ [deprecated (since := "2026-01-06" )] alias im_conj := UnitDisc.im_star
271+
272+ instance : StarMul π» where
273+ star_mul z w := coe_injective <| by simp [mul_comm]
274+
275+ @ [deprecated star_mul' (since := "2026-01-06" )]
276+ theorem conj_mul (z w : π») : star (z * w) = star z * star w :=
277+ star_mul' z w
240278
241279end UnitDisc
242280
0 commit comments