144
144
ext_iff.2 $ by simp
145
145
@[simp, norm_cast, priority 900 ] lemma of_real_mul (r s : ℝ) : ((r * s : ℝ) : K) = r * s :=
146
146
ext_iff.2 $ by simp
147
+ @[simp, norm_cast] lemma of_real_smul (r x : ℝ) : r • (x : K) = (r : K) * (x : K) :=
148
+ by { simp_rw [← smul_eq_mul, of_real_alg r], simp, }
149
+
147
150
lemma of_real_mul_re (r : ℝ) (z : K) : re (↑r * z) = r * re z :=
148
151
by simp only [mul_re, of_real_im, zero_mul, of_real_re, sub_zero]
149
152
lemma of_real_mul_im (r : ℝ) (z : K) : im (↑r * z) = r * (im z) :=
@@ -154,12 +157,6 @@ lemma smul_re : ∀ (r : ℝ) (z : K), re (r • z) = r * (re z) :=
154
157
lemma smul_im : ∀ (r : ℝ) (z : K), im (r • z) = r * (im z) :=
155
158
λ r z, by { rw algebra.smul_def, apply of_real_mul_im }
156
159
157
- /-- The real part in a `is_R_or_C` field, as a linear map. -/
158
- noncomputable def re_lm : K →ₗ[ℝ] ℝ :=
159
- { map_smul' := smul_re, .. re }
160
-
161
- @[simp] lemma re_lm_coe : (re_lm : K → ℝ) = re := rfl
162
-
163
160
/-! ### The imaginary unit, `I` -/
164
161
165
162
/-- The imaginary unit. -/
@@ -195,6 +192,17 @@ lemma conj_inj (z w : K) : conj z = conj w ↔ z = w := conj_bijective.1.eq_iff
195
192
lemma conj_eq_zero {z : K} : conj z = 0 ↔ z = 0 :=
196
193
ring_hom.map_eq_zero conj
197
194
195
+ lemma conj_eq_re_sub_im (z : K) : conj z = re z - (im z) * I := by { rw ext_iff, simp, }
196
+
197
+ lemma conj_smul (r : ℝ) (z : K) : conj (r • z) = r • conj z :=
198
+ begin
199
+ simp_rw conj_eq_re_sub_im,
200
+ simp only [smul_re, smul_im, of_real_mul],
201
+ rw smul_sub,
202
+ simp_rw of_real_alg,
203
+ simp,
204
+ end
205
+
198
206
lemma eq_conj_iff_real {z : K} : conj z = z ↔ ∃ r : ℝ, z = (r : K) :=
199
207
begin
200
208
split,
@@ -563,21 +571,6 @@ begin
563
571
simp [of_real_im, mul_im, conj_im, conj_re, mul_comm],
564
572
end
565
573
566
- /-- The real part in a `is_R_or_C` field, as a continuous linear map. -/
567
- noncomputable def re_clm : K →L[ℝ] ℝ :=
568
- re_lm.mk_continuous 1 $ by { simp only [norm_eq_abs, re_lm_coe, one_mul], exact abs_re_le_abs }
569
-
570
- @[simp] lemma norm_re_clm : ∥(re_clm : K →L[ℝ] ℝ)∥ = 1 :=
571
- begin
572
- apply le_antisymm (linear_map.mk_continuous_norm_le _ zero_le_one _),
573
- convert continuous_linear_map.ratio_le_op_norm _ (1 : K),
574
- simp,
575
- end
576
-
577
- @[simp, norm_cast] lemma re_clm_coe : ((re_clm : K →L[ℝ] ℝ) : K →ₗ[ℝ] ℝ) = re_lm := rfl
578
-
579
- @[simp] lemma re_clm_apply : ((re_clm : K →L[ℝ] ℝ) : K → ℝ) = re := rfl
580
-
581
574
/-! ### Cauchy sequences -/
582
575
583
576
theorem is_cau_seq_re (f : cau_seq K abs) : is_cau_seq abs' (λ n, re (f n)) :=
@@ -707,6 +700,100 @@ by simp [is_R_or_C.abs, abs, real.sqrt_mul_self_eq_abs]
707
700
708
701
end cleanup_lemmas
709
702
703
+ section linear_maps
704
+
705
+ variables {K : Type *} [is_R_or_C K]
706
+
707
+ /-- The real part in a `is_R_or_C` field, as a linear map. -/
708
+ noncomputable def re_lm : K →ₗ[ℝ] ℝ :=
709
+ { map_smul' := smul_re, .. re }
710
+
711
+ @[simp] lemma re_lm_coe : (re_lm : K → ℝ) = re := rfl
712
+
713
+ /-- The real part in a `is_R_or_C` field, as a continuous linear map. -/
714
+ noncomputable def re_clm : K →L[ℝ] ℝ :=
715
+ re_lm.mk_continuous 1 $ by
716
+ { simp only [norm_eq_abs, re_lm_coe, one_mul, abs_to_real], exact abs_re_le_abs, }
717
+
718
+ @[simp] lemma re_clm_norm : ∥(re_clm : K →L[ℝ] ℝ)∥ = 1 :=
719
+ begin
720
+ apply le_antisymm (linear_map.mk_continuous_norm_le _ zero_le_one _),
721
+ convert continuous_linear_map.ratio_le_op_norm _ (1 : K),
722
+ simp,
723
+ end
724
+
725
+ @[simp, norm_cast] lemma re_clm_coe : ((re_clm : K →L[ℝ] ℝ) : K →ₗ[ℝ] ℝ) = re_lm := rfl
726
+
727
+ @[simp] lemma re_clm_apply : ((re_clm : K →L[ℝ] ℝ) : K → ℝ) = re := rfl
728
+
729
+ @[continuity] lemma continuous_re : continuous (re : K → ℝ) := re_clm.continuous
730
+
731
+ /-- The imaginary part in a `is_R_or_C` field, as a linear map. -/
732
+ noncomputable def im_lm : K →ₗ[ℝ] ℝ :=
733
+ { map_smul' := smul_im, .. im }
734
+
735
+ @[simp] lemma im_lm_coe : (im_lm : K → ℝ) = im := rfl
736
+
737
+ /-- The imaginary part in a `is_R_or_C` field, as a continuous linear map. -/
738
+ noncomputable def im_clm : K →L[ℝ] ℝ :=
739
+ im_lm.mk_continuous 1 $ by
740
+ { simp only [norm_eq_abs, re_lm_coe, one_mul, abs_to_real], exact abs_im_le_abs, }
741
+
742
+ @[simp, norm_cast] lemma im_clm_coe : ((im_clm : K →L[ℝ] ℝ) : K →ₗ[ℝ] ℝ) = im_lm := rfl
743
+
744
+ @[simp] lemma im_clm_apply : ((im_clm : K →L[ℝ] ℝ) : K → ℝ) = im := rfl
745
+
746
+ @[continuity] lemma continuous_im : continuous (im : K → ℝ) := im_clm.continuous
747
+
748
+ /-- Conjugate as a linear map -/
749
+ noncomputable def conj_lm : K →ₗ[ℝ] K :=
750
+ { to_fun := λ x, conj x, map_add' := by simp, map_smul' := conj_smul, }
751
+
752
+ @[simp] lemma conj_lm_coe : (conj_lm : K → K) = conj := rfl
753
+
754
+ /-- Conjugate as a linear isometry -/
755
+ noncomputable def conj_li : K →ₗᵢ[ℝ] K :=
756
+ { to_linear_map := conj_lm, norm_map' := by simp [norm_eq_abs] }
757
+
758
+ @[simp] lemma conj_li_apply : (conj_li : K → K) = conj := rfl
759
+
760
+ /-- Conjugate as a continuous linear map -/
761
+ noncomputable def conj_clm : K →L[ℝ] K := conj_li.to_continuous_linear_map
762
+
763
+ @[simp] lemma conj_clm_coe : ((conj_clm : K →L[ℝ] K) : K →ₗ[ℝ] K) = conj_lm := rfl
764
+
765
+ @[simp] lemma conj_clm_apply : (conj_clm : K → K) = conj := rfl
766
+
767
+ @[simp] lemma conj_clm_norm : ∥(conj_clm : K →L[ℝ] K)∥ = 1 := conj_li.norm_to_continuous_linear_map
768
+
769
+ @[continuity] lemma continuous_conj : continuous (conj : K → K) := conj_li.continuous
770
+
771
+ /-- The `ℝ → K` coercion, as a linear map -/
772
+ noncomputable def of_real_lm : ℝ →ₗ[ℝ] K :=
773
+ { to_fun := λ x, (x : K), map_add' := by simp, map_smul' := by simp, }
774
+
775
+ @[simp] lemma of_real_lm_coe : (of_real_lm : ℝ → K) = coe := rfl
776
+
777
+ /-- The ℝ → K coercion, as a linear isometry -/
778
+ noncomputable def of_real_li : ℝ →ₗᵢ[ℝ] K :=
779
+ { to_linear_map := of_real_lm, norm_map' := by simp [norm_eq_abs] }
780
+
781
+ @[simp] lemma of_real_li_apply : ((of_real_li : ℝ →ₗᵢ[ℝ] K) : ℝ → K) = coe := rfl
782
+
783
+ /-- The `ℝ → K` coercion, as a continuous linear map -/
784
+ noncomputable def of_real_clm : ℝ →L[ℝ] K := of_real_li.to_continuous_linear_map
785
+
786
+ @[simp] lemma of_real_clm_coe : ((of_real_clm : ℝ →L[ℝ] K) : ℝ →ₗ[ℝ] K) = of_real_lm := rfl
787
+
788
+ @[simp] lemma of_real_clm_apply : (of_real_clm : ℝ → K) = coe := rfl
789
+
790
+ @[simp] lemma of_real_clm_norm : ∥(of_real_clm : ℝ →L[ℝ] K)∥ = 1 :=
791
+ of_real_li.norm_to_continuous_linear_map
792
+
793
+ @[continuity] lemma continuous_of_real : continuous (coe : ℝ → K) := of_real_li.continuous
794
+
795
+ end linear_maps
796
+
710
797
end is_R_or_C
711
798
712
799
section normalization
0 commit comments