|
| 1 | +/- |
| 2 | +Copyright (c) 2021 Heather Macbeth. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Heather Macbeth |
| 5 | +-/ |
| 6 | +import geometry.manifold.instances.sphere |
| 7 | + |
| 8 | +/-! |
| 9 | +# The circle |
| 10 | +
|
| 11 | +This file defines `circle` to be the metric sphere (`metric.sphere`) in `ℂ` centred at `0` of |
| 12 | +radius `1`. We equip it with the following structure: |
| 13 | +
|
| 14 | +* a submonoid of `ℂ` |
| 15 | +* a group |
| 16 | +* a topological group |
| 17 | +* a charted space with model space `euclidean_space ℝ (fin 1)` (inherited from `metric.sphere`) |
| 18 | +* a Lie group with model with corners `𝓡 1` |
| 19 | +
|
| 20 | +We furthermore define `exp_map_circle` to be the natural map `λ t, exp (t * I)` from `ℝ` to |
| 21 | +`circle`, and show that this map is a group homomorphism and is smooth. |
| 22 | +
|
| 23 | +## Implementation notes |
| 24 | +
|
| 25 | +To borrow the smooth manifold structure cleanly, the circle needs to be defined using |
| 26 | +`metric.sphere`, and therefore the underlying set is `{z : ℂ | abs (z - 0) = 1}`. This prevents |
| 27 | +certain algebraic facts from working definitionally -- for example, the circle is not defeq to |
| 28 | +`{z : ℂ | abs z = 1}`, which is the kernel of `complex.abs` considered as a homomorphism from `ℂ` |
| 29 | +to `ℝ`, nor is it defeq to `{z : ℂ | norm_sq z = 1}`, which is the kernel of the homomorphism |
| 30 | +`complex.norm_sq` from `ℂ` to `ℝ`. |
| 31 | +
|
| 32 | +-/ |
| 33 | + |
| 34 | +noncomputable theory |
| 35 | + |
| 36 | +open complex finite_dimensional metric |
| 37 | +open_locale manifold |
| 38 | + |
| 39 | +local attribute [instance] findim_real_complex_fact |
| 40 | + |
| 41 | +/-- The unit circle in `ℂ`, here given the structure of a submonoid of `ℂ`. -/ |
| 42 | +def circle : submonoid ℂ := |
| 43 | +{ carrier := sphere (0:ℂ) 1, |
| 44 | + one_mem' := by simp, |
| 45 | + mul_mem' := λ a b, begin |
| 46 | + simp only [norm_eq_abs, mem_sphere_zero_iff_norm], |
| 47 | + intros ha hb, |
| 48 | + simp [ha, hb], |
| 49 | + end } |
| 50 | + |
| 51 | +@[simp] lemma mem_circle_iff_abs (z : ℂ) : z ∈ circle ↔ abs z = 1 := mem_sphere_zero_iff_norm |
| 52 | + |
| 53 | +lemma circle_def : ↑circle = {z : ℂ | abs z = 1} := by { ext, simp } |
| 54 | + |
| 55 | +@[simp] lemma abs_eq_of_mem_circle (z : circle) : abs z = 1 := by { convert z.2, simp } |
| 56 | + |
| 57 | +instance : group circle := |
| 58 | +{ inv := λ z, ⟨conj z, by simp⟩, |
| 59 | + mul_left_inv := λ z, subtype.ext $ by { simp [has_inv.inv, ← norm_sq_eq_conj_mul_self, |
| 60 | + ← mul_self_abs] }, |
| 61 | + .. circle.to_monoid } |
| 62 | + |
| 63 | +@[simp] lemma coe_inv_circle (z : circle) : ↑(z⁻¹) = conj z := rfl |
| 64 | +@[simp] lemma coe_div_circle (z w : circle) : ↑(z / w) = ↑z * conj w := rfl |
| 65 | + |
| 66 | +-- the following result could instead be deduced from the Lie group structure on the circle using |
| 67 | +-- `topological_group_of_lie_group`, but that seems a little awkward since one has to first provide |
| 68 | +-- and then forget the model space |
| 69 | +instance : topological_group circle := |
| 70 | +{ continuous_mul := let h : continuous (λ x : circle, (x : ℂ)) := continuous_subtype_coe in |
| 71 | + continuous_induced_rng (continuous_mul.comp (h.prod_map h)), |
| 72 | + continuous_inv := continuous_induced_rng $ |
| 73 | + complex.conj_clm.continuous.comp continuous_subtype_coe } |
| 74 | + |
| 75 | +/-- The unit circle in `ℂ` is a charted space modelled on `euclidean_space ℝ (fin 1)`. This |
| 76 | +follows by definition from the corresponding result for `metric.sphere`. -/ |
| 77 | +instance : charted_space (euclidean_space ℝ (fin 1)) circle := metric.sphere.charted_space |
| 78 | + |
| 79 | +/-- The unit circle in `ℂ` is a Lie group. -/ |
| 80 | +instance : lie_group (𝓡 1) circle := |
| 81 | +{ smooth_mul := begin |
| 82 | + let c : circle → ℂ := coe, |
| 83 | + have h₁ : times_cont_mdiff _ _ _ (prod.map c c) := |
| 84 | + times_cont_mdiff_coe_sphere.prod_map times_cont_mdiff_coe_sphere, |
| 85 | + have h₂ : times_cont_mdiff (𝓘(ℝ, ℂ).prod 𝓘(ℝ, ℂ)) 𝓘(ℝ, ℂ) ∞ (λ (z : ℂ × ℂ), z.fst * z.snd), |
| 86 | + { rw times_cont_mdiff_iff, |
| 87 | + exact ⟨continuous_mul, λ x y, (times_cont_diff_mul.restrict_scalars ℝ).times_cont_diff_on⟩ }, |
| 88 | + convert (h₂.comp h₁).cod_restrict_sphere _, |
| 89 | + convert smooth_manifold_with_corners.prod circle circle, |
| 90 | + { exact metric.sphere.smooth_manifold_with_corners }, |
| 91 | + { exact metric.sphere.smooth_manifold_with_corners } |
| 92 | + end, |
| 93 | + smooth_inv := (complex.conj_clm.times_cont_diff.times_cont_mdiff.comp |
| 94 | + times_cont_mdiff_coe_sphere).cod_restrict_sphere _, |
| 95 | + .. metric.sphere.smooth_manifold_with_corners } |
| 96 | + |
| 97 | +/-- The map `λ t, exp (t * I)` from `ℝ` to the unit circle in `ℂ`. -/ |
| 98 | +def exp_map_circle (t : ℝ) : circle := |
| 99 | +⟨exp (t * I), by simp [exp_mul_I, abs_cos_add_sin_mul_I]⟩ |
| 100 | + |
| 101 | +/-- The map `λ t, exp (t * I)` from `ℝ` to the unit circle in `ℂ`, considered as a homomorphism of |
| 102 | +groups. -/ |
| 103 | +def exp_map_circle_hom : ℝ →+ (additive circle) := |
| 104 | +{ to_fun := exp_map_circle, |
| 105 | + map_zero' := by { rw exp_map_circle, convert of_mul_one, simp }, |
| 106 | + map_add' := λ x y, show exp_map_circle (x + y) = (exp_map_circle x) * (exp_map_circle y), |
| 107 | + from subtype.ext $ by simp [exp_map_circle, exp_add, add_mul] } |
| 108 | + |
| 109 | +/-- The map `λ t, exp (t * I)` from `ℝ` to the unit circle in `ℂ` is smooth. -/ |
| 110 | +lemma times_cont_mdiff_exp_map_circle : times_cont_mdiff 𝓘(ℝ, ℝ) (𝓡 1) ∞ exp_map_circle := |
| 111 | +(((times_cont_diff_exp.restrict_scalars ℝ).comp |
| 112 | + (times_cont_diff_id.smul times_cont_diff_const)).times_cont_mdiff).cod_restrict_sphere _ |
0 commit comments