analysis.quaternion
⟷
Mathlib.Analysis.Quaternion
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -217,7 +217,7 @@ theorem norm_piLp_equiv_symm_equivTuple (x : ℍ) :
by
rw [norm_eq_sqrt_real_inner, norm_eq_sqrt_real_inner, inner_self, norm_sq_def', PiLp.inner_apply,
Fin.sum_univ_four]
- simp_rw [IsROrC.inner_apply, starRingEnd_apply, star_trivial, ← sq]
+ simp_rw [RCLike.inner_apply, starRingEnd_apply, star_trivial, ← sq]
rfl
#align quaternion.norm_pi_Lp_equiv_symm_equiv_tuple Quaternion.norm_piLp_equiv_symm_equivTuple
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2020 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
-/
-import Mathbin.Algebra.Quaternion
-import Mathbin.Analysis.InnerProductSpace.Basic
-import Mathbin.Analysis.InnerProductSpace.PiL2
-import Mathbin.Topology.Algebra.Algebra
+import Algebra.Quaternion
+import Analysis.InnerProductSpace.Basic
+import Analysis.InnerProductSpace.PiL2
+import Topology.Algebra.Algebra
#align_import analysis.quaternion from "leanprover-community/mathlib"@"599fffe78f0e11eb6a034e834ec51882167b9688"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -119,7 +119,7 @@ instance : NormedAlgebra ℝ ℍ where
toAlgebra := (Quaternion.algebra : Algebra ℝ ℍ)
instance : CstarRing ℍ
- where norm_star_mul_self x := (norm_mul _ _).trans <| congr_arg (· * ‖x‖) (norm_star x)
+ where norm_star_hMul_self x := (norm_mul _ _).trans <| congr_arg (· * ‖x‖) (norm_star x)
instance : Coe ℂ ℍ :=
⟨fun z => ⟨z.re, z.im, 0, 0⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2020 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
-
-! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit 599fffe78f0e11eb6a034e834ec51882167b9688
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Quaternion
import Mathbin.Analysis.InnerProductSpace.Basic
import Mathbin.Analysis.InnerProductSpace.PiL2
import Mathbin.Topology.Algebra.Algebra
+#align_import analysis.quaternion from "leanprover-community/mathlib"@"599fffe78f0e11eb6a034e834ec51882167b9688"
+
/-!
# Quaternions as a normed algebra
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -39,7 +39,6 @@ quaternion, normed ring, normed space, normed algebra
-/
--- mathport name: quaternion.real
scoped[Quaternion] notation "ℍ" => Quaternion ℝ
open scoped RealInnerProductSpace
@@ -49,13 +48,17 @@ namespace Quaternion
instance : Inner ℝ ℍ :=
⟨fun a b => (a * star b).re⟩
+#print Quaternion.inner_self /-
theorem inner_self (a : ℍ) : ⟪a, a⟫ = normSq a :=
rfl
#align quaternion.inner_self Quaternion.inner_self
+-/
+#print Quaternion.inner_def /-
theorem inner_def (a b : ℍ) : ⟪a, b⟫ = (a * star b).re :=
rfl
#align quaternion.inner_def Quaternion.inner_def
+-/
noncomputable instance : NormedAddCommGroup ℍ :=
@InnerProductSpace.Core.toNormedAddCommGroup ℝ ℍ _ _ _
@@ -69,32 +72,42 @@ noncomputable instance : NormedAddCommGroup ℍ :=
noncomputable instance : InnerProductSpace ℝ ℍ :=
InnerProductSpace.ofCore _
+#print Quaternion.normSq_eq_norm_mul_self /-
theorem normSq_eq_norm_mul_self (a : ℍ) : normSq a = ‖a‖ * ‖a‖ := by
rw [← inner_self, real_inner_self_eq_norm_mul_norm]
#align quaternion.norm_sq_eq_norm_sq Quaternion.normSq_eq_norm_mul_self
+-/
instance : NormOneClass ℍ :=
⟨by rw [norm_eq_sqrt_real_inner, inner_self, norm_sq.map_one, Real.sqrt_one]⟩
+#print Quaternion.norm_coe /-
@[simp, norm_cast]
theorem norm_coe (a : ℝ) : ‖(a : ℍ)‖ = ‖a‖ := by
rw [norm_eq_sqrt_real_inner, inner_self, norm_sq_coe, Real.sqrt_sq_eq_abs, Real.norm_eq_abs]
#align quaternion.norm_coe Quaternion.norm_coe
+-/
+#print Quaternion.nnnorm_coe /-
@[simp, norm_cast]
theorem nnnorm_coe (a : ℝ) : ‖(a : ℍ)‖₊ = ‖a‖₊ :=
Subtype.ext <| norm_coe a
#align quaternion.nnnorm_coe Quaternion.nnnorm_coe
+-/
+#print Quaternion.norm_star /-
@[simp]
theorem norm_star (a : ℍ) : ‖star a‖ = ‖a‖ := by
simp_rw [norm_eq_sqrt_real_inner, inner_self, norm_sq_star]
#align quaternion.norm_star Quaternion.norm_star
+-/
+#print Quaternion.nnnorm_star /-
@[simp]
theorem nnnorm_star (a : ℍ) : ‖star a‖₊ = ‖a‖₊ :=
Subtype.ext <| norm_star a
#align quaternion.nnnorm_star Quaternion.nnnorm_star
+-/
noncomputable instance : NormedDivisionRing ℍ
where
@@ -128,43 +141,60 @@ theorem coeComplex_imI (z : ℂ) : (z : ℍ).imI = z.im :=
#align quaternion.coe_complex_im_i Quaternion.coeComplex_imI
-/
+#print Quaternion.coeComplex_imJ /-
@[simp, norm_cast]
theorem coeComplex_imJ (z : ℂ) : (z : ℍ).imJ = 0 :=
rfl
#align quaternion.coe_complex_im_j Quaternion.coeComplex_imJ
+-/
+#print Quaternion.coeComplex_imK /-
@[simp, norm_cast]
theorem coeComplex_imK (z : ℂ) : (z : ℍ).imK = 0 :=
rfl
#align quaternion.coe_complex_im_k Quaternion.coeComplex_imK
+-/
+#print Quaternion.coeComplex_add /-
@[simp, norm_cast]
theorem coeComplex_add (z w : ℂ) : ↑(z + w) = (z + w : ℍ) := by ext <;> simp
#align quaternion.coe_complex_add Quaternion.coeComplex_add
+-/
+#print Quaternion.coeComplex_mul /-
@[simp, norm_cast]
theorem coeComplex_mul (z w : ℂ) : ↑(z * w) = (z * w : ℍ) := by ext <;> simp
#align quaternion.coe_complex_mul Quaternion.coeComplex_mul
+-/
+#print Quaternion.coeComplex_zero /-
@[simp, norm_cast]
theorem coeComplex_zero : ((0 : ℂ) : ℍ) = 0 :=
rfl
#align quaternion.coe_complex_zero Quaternion.coeComplex_zero
+-/
+#print Quaternion.coeComplex_one /-
@[simp, norm_cast]
theorem coeComplex_one : ((1 : ℂ) : ℍ) = 1 :=
rfl
#align quaternion.coe_complex_one Quaternion.coeComplex_one
+-/
+#print Quaternion.coe_real_complex_mul /-
@[simp, norm_cast]
theorem coe_real_complex_mul (r : ℝ) (z : ℂ) : (r • z : ℍ) = ↑r * ↑z := by ext <;> simp
#align quaternion.coe_real_complex_mul Quaternion.coe_real_complex_mul
+-/
+#print Quaternion.coeComplex_coe /-
@[simp, norm_cast]
theorem coeComplex_coe (r : ℝ) : ((r : ℂ) : ℍ) = r :=
rfl
#align quaternion.coe_complex_coe Quaternion.coeComplex_coe
+-/
+#print Quaternion.ofComplex /-
/-- Coercion `ℂ →ₐ[ℝ] ℍ` as an algebra homomorphism. -/
def ofComplex : ℂ →ₐ[ℝ] ℍ where
toFun := coe
@@ -174,12 +204,16 @@ def ofComplex : ℂ →ₐ[ℝ] ℍ where
map_mul' := coeComplex_mul
commutes' x := rfl
#align quaternion.of_complex Quaternion.ofComplex
+-/
+#print Quaternion.coe_ofComplex /-
@[simp]
theorem coe_ofComplex : ⇑ofComplex = coe :=
rfl
#align quaternion.coe_of_complex Quaternion.coe_ofComplex
+-/
+#print Quaternion.norm_piLp_equiv_symm_equivTuple /-
/-- The norm of the components as a euclidean vector equals the norm of the quaternion. -/
theorem norm_piLp_equiv_symm_equivTuple (x : ℍ) :
‖(PiLp.equiv 2 fun _ : Fin 4 => _).symm (equivTuple ℝ x)‖ = ‖x‖ :=
@@ -189,7 +223,9 @@ theorem norm_piLp_equiv_symm_equivTuple (x : ℍ) :
simp_rw [IsROrC.inner_apply, starRingEnd_apply, star_trivial, ← sq]
rfl
#align quaternion.norm_pi_Lp_equiv_symm_equiv_tuple Quaternion.norm_piLp_equiv_symm_equivTuple
+-/
+#print Quaternion.linearIsometryEquivTuple /-
/-- `quaternion_algebra.linear_equiv_tuple` as a `linear_isometry_equiv`. -/
@[simps apply symm_apply]
noncomputable def linearIsometryEquivTuple : ℍ ≃ₗᵢ[ℝ] EuclideanSpace ℝ (Fin 4) :=
@@ -201,42 +237,57 @@ noncomputable def linearIsometryEquivTuple : ℍ ≃ₗᵢ[ℝ] EuclideanSpace
invFun := fun a => ⟨a 0, a 1, a 2, a 3⟩
norm_map' := norm_piLp_equiv_symm_equivTuple }
#align quaternion.linear_isometry_equiv_tuple Quaternion.linearIsometryEquivTuple
+-/
+#print Quaternion.continuous_coe /-
@[continuity]
theorem continuous_coe : Continuous (coe : ℝ → ℍ) :=
continuous_algebraMap ℝ ℍ
#align quaternion.continuous_coe Quaternion.continuous_coe
+-/
+#print Quaternion.continuous_normSq /-
@[continuity]
theorem continuous_normSq : Continuous (normSq : ℍ → ℝ) := by
simpa [← norm_sq_eq_norm_sq] using
(continuous_norm.mul continuous_norm : Continuous fun q : ℍ => ‖q‖ * ‖q‖)
#align quaternion.continuous_norm_sq Quaternion.continuous_normSq
+-/
+#print Quaternion.continuous_re /-
@[continuity]
theorem continuous_re : Continuous fun q : ℍ => q.re :=
(continuous_apply 0).comp linearIsometryEquivTuple.Continuous
#align quaternion.continuous_re Quaternion.continuous_re
+-/
+#print Quaternion.continuous_imI /-
@[continuity]
theorem continuous_imI : Continuous fun q : ℍ => q.imI :=
(continuous_apply 1).comp linearIsometryEquivTuple.Continuous
#align quaternion.continuous_im_i Quaternion.continuous_imI
+-/
+#print Quaternion.continuous_imJ /-
@[continuity]
theorem continuous_imJ : Continuous fun q : ℍ => q.imJ :=
(continuous_apply 2).comp linearIsometryEquivTuple.Continuous
#align quaternion.continuous_im_j Quaternion.continuous_imJ
+-/
+#print Quaternion.continuous_imK /-
@[continuity]
theorem continuous_imK : Continuous fun q : ℍ => q.imK :=
(continuous_apply 3).comp linearIsometryEquivTuple.Continuous
#align quaternion.continuous_im_k Quaternion.continuous_imK
+-/
+#print Quaternion.continuous_im /-
@[continuity]
theorem continuous_im : Continuous fun q : ℍ => q.im := by
simpa only [← sub_self_re] using continuous_id.sub (continuous_coe.comp continuous_re)
#align quaternion.continuous_im Quaternion.continuous_im
+-/
instance : CompleteSpace ℍ :=
haveI : UniformEmbedding linear_isometry_equiv_tuple.to_linear_equiv.to_equiv.symm :=
@@ -247,19 +298,24 @@ section infinite_sum
variable {α : Type _}
+#print Quaternion.hasSum_coe /-
@[simp, norm_cast]
theorem hasSum_coe {f : α → ℝ} {r : ℝ} : HasSum (fun a => (f a : ℍ)) (↑r : ℍ) ↔ HasSum f r :=
⟨fun h => by simpa only using h.map (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reₗ _ _) continuous_re,
fun h => by simpa only using h.map (algebraMap ℝ ℍ) (continuous_algebraMap _ _)⟩
#align quaternion.has_sum_coe Quaternion.hasSum_coe
+-/
+#print Quaternion.summable_coe /-
@[simp, norm_cast]
theorem summable_coe {f : α → ℝ} : (Summable fun a => (f a : ℍ)) ↔ Summable f := by
simpa only using
Summable.map_iff_of_leftInverse (algebraMap ℝ ℍ) (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reₗ _ _)
(continuous_algebraMap _ _) continuous_re coe_re
#align quaternion.summable_coe Quaternion.summable_coe
+-/
+#print Quaternion.tsum_coe /-
@[norm_cast]
theorem tsum_coe (f : α → ℝ) : ∑' a, (f a : ℍ) = ↑(∑' a, f a) :=
by
@@ -267,6 +323,7 @@ theorem tsum_coe (f : α → ℝ) : ∑' a, (f a : ℍ) = ↑(∑' a, f a) :=
· exact (has_sum_coe.mpr hf.has_sum).tsum_eq
· simp [tsum_eq_zero_of_not_summable hf, tsum_eq_zero_of_not_summable (summable_coe.not.mpr hf)]
#align quaternion.tsum_coe Quaternion.tsum_coe
+-/
end infinite_sum
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -261,7 +261,7 @@ theorem summable_coe {f : α → ℝ} : (Summable fun a => (f a : ℍ)) ↔ Summ
#align quaternion.summable_coe Quaternion.summable_coe
@[norm_cast]
-theorem tsum_coe (f : α → ℝ) : (∑' a, (f a : ℍ)) = ↑(∑' a, f a) :=
+theorem tsum_coe (f : α → ℝ) : ∑' a, (f a : ℍ) = ↑(∑' a, f a) :=
by
by_cases hf : Summable f
· exact (has_sum_coe.mpr hf.has_sum).tsum_eq
mathlib commit https://github.com/leanprover-community/mathlib/commit/34ebaffc1d1e8e783fc05438ec2e70af87275ac9
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit 07992a1d1f7a4176c6d3f160209608be4e198566
+! leanprover-community/mathlib commit 599fffe78f0e11eb6a034e834ec51882167b9688
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.Topology.Algebra.Algebra
/-!
# Quaternions as a normed algebra
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file we define the following structures on the space `ℍ := ℍ[ℝ]` of quaternions:
* inner product space;
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -66,9 +66,9 @@ noncomputable instance : NormedAddCommGroup ℍ :=
noncomputable instance : InnerProductSpace ℝ ℍ :=
InnerProductSpace.ofCore _
-theorem normSq_eq_normSq (a : ℍ) : normSq a = ‖a‖ * ‖a‖ := by
+theorem normSq_eq_norm_mul_self (a : ℍ) : normSq a = ‖a‖ * ‖a‖ := by
rw [← inner_self, real_inner_self_eq_norm_mul_norm]
-#align quaternion.norm_sq_eq_norm_sq Quaternion.normSq_eq_normSq
+#align quaternion.norm_sq_eq_norm_sq Quaternion.normSq_eq_norm_mul_self
instance : NormOneClass ℍ :=
⟨by rw [norm_eq_sqrt_real_inner, inner_self, norm_sq.map_one, Real.sqrt_one]⟩
@@ -111,60 +111,64 @@ instance : CstarRing ℍ
instance : Coe ℂ ℍ :=
⟨fun z => ⟨z.re, z.im, 0, 0⟩⟩
+#print Quaternion.coeComplex_re /-
@[simp, norm_cast]
-theorem coe_complex_re (z : ℂ) : (z : ℍ).re = z.re :=
+theorem coeComplex_re (z : ℂ) : (z : ℍ).re = z.re :=
rfl
-#align quaternion.coe_complex_re Quaternion.coe_complex_re
+#align quaternion.coe_complex_re Quaternion.coeComplex_re
+-/
+#print Quaternion.coeComplex_imI /-
@[simp, norm_cast]
-theorem coe_complex_imI (z : ℂ) : (z : ℍ).imI = z.im :=
+theorem coeComplex_imI (z : ℂ) : (z : ℍ).imI = z.im :=
rfl
-#align quaternion.coe_complex_im_i Quaternion.coe_complex_imI
+#align quaternion.coe_complex_im_i Quaternion.coeComplex_imI
+-/
@[simp, norm_cast]
-theorem coe_complex_imJ (z : ℂ) : (z : ℍ).imJ = 0 :=
+theorem coeComplex_imJ (z : ℂ) : (z : ℍ).imJ = 0 :=
rfl
-#align quaternion.coe_complex_im_j Quaternion.coe_complex_imJ
+#align quaternion.coe_complex_im_j Quaternion.coeComplex_imJ
@[simp, norm_cast]
-theorem coe_complex_imK (z : ℂ) : (z : ℍ).imK = 0 :=
+theorem coeComplex_imK (z : ℂ) : (z : ℍ).imK = 0 :=
rfl
-#align quaternion.coe_complex_im_k Quaternion.coe_complex_imK
+#align quaternion.coe_complex_im_k Quaternion.coeComplex_imK
@[simp, norm_cast]
-theorem coe_complex_add (z w : ℂ) : ↑(z + w) = (z + w : ℍ) := by ext <;> simp
-#align quaternion.coe_complex_add Quaternion.coe_complex_add
+theorem coeComplex_add (z w : ℂ) : ↑(z + w) = (z + w : ℍ) := by ext <;> simp
+#align quaternion.coe_complex_add Quaternion.coeComplex_add
@[simp, norm_cast]
-theorem coe_complex_mul (z w : ℂ) : ↑(z * w) = (z * w : ℍ) := by ext <;> simp
-#align quaternion.coe_complex_mul Quaternion.coe_complex_mul
+theorem coeComplex_mul (z w : ℂ) : ↑(z * w) = (z * w : ℍ) := by ext <;> simp
+#align quaternion.coe_complex_mul Quaternion.coeComplex_mul
@[simp, norm_cast]
-theorem coe_complex_zero : ((0 : ℂ) : ℍ) = 0 :=
+theorem coeComplex_zero : ((0 : ℂ) : ℍ) = 0 :=
rfl
-#align quaternion.coe_complex_zero Quaternion.coe_complex_zero
+#align quaternion.coe_complex_zero Quaternion.coeComplex_zero
@[simp, norm_cast]
-theorem coe_complex_one : ((1 : ℂ) : ℍ) = 1 :=
+theorem coeComplex_one : ((1 : ℂ) : ℍ) = 1 :=
rfl
-#align quaternion.coe_complex_one Quaternion.coe_complex_one
+#align quaternion.coe_complex_one Quaternion.coeComplex_one
@[simp, norm_cast]
theorem coe_real_complex_mul (r : ℝ) (z : ℂ) : (r • z : ℍ) = ↑r * ↑z := by ext <;> simp
#align quaternion.coe_real_complex_mul Quaternion.coe_real_complex_mul
@[simp, norm_cast]
-theorem coe_complex_coe (r : ℝ) : ((r : ℂ) : ℍ) = r :=
+theorem coeComplex_coe (r : ℝ) : ((r : ℂ) : ℍ) = r :=
rfl
-#align quaternion.coe_complex_coe Quaternion.coe_complex_coe
+#align quaternion.coe_complex_coe Quaternion.coeComplex_coe
/-- Coercion `ℂ →ₐ[ℝ] ℍ` as an algebra homomorphism. -/
def ofComplex : ℂ →ₐ[ℝ] ℍ where
toFun := coe
map_one' := rfl
map_zero' := rfl
- map_add' := coe_complex_add
- map_mul' := coe_complex_mul
+ map_add' := coeComplex_add
+ map_mul' := coeComplex_mul
commutes' x := rfl
#align quaternion.of_complex Quaternion.ofComplex
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -39,7 +39,7 @@ quaternion, normed ring, normed space, normed algebra
-- mathport name: quaternion.real
scoped[Quaternion] notation "ℍ" => Quaternion ℝ
-open RealInnerProductSpace
+open scoped RealInnerProductSpace
namespace Quaternion
mathlib commit https://github.com/leanprover-community/mathlib/commit/ef95945cd48c932c9e034872bd25c3c220d9c946
@@ -43,7 +43,7 @@ open RealInnerProductSpace
namespace Quaternion
-instance : HasInner ℝ ℍ :=
+instance : Inner ℝ ℍ :=
⟨fun a b => (a * star b).re⟩
theorem inner_self (a : ℍ) : ⟪a, a⟫ = normSq a :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/1b0a28e1c93409dbf6d69526863cd9984ef652ce
@@ -242,17 +242,15 @@ variable {α : Type _}
@[simp, norm_cast]
theorem hasSum_coe {f : α → ℝ} {r : ℝ} : HasSum (fun a => (f a : ℍ)) (↑r : ℍ) ↔ HasSum f r :=
- ⟨fun h => by
- simpa only using h.map (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reLm _ _) continuous_re, fun h =>
- by simpa only using h.map (algebraMap ℝ ℍ) (continuous_algebraMap _ _)⟩
+ ⟨fun h => by simpa only using h.map (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reₗ _ _) continuous_re,
+ fun h => by simpa only using h.map (algebraMap ℝ ℍ) (continuous_algebraMap _ _)⟩
#align quaternion.has_sum_coe Quaternion.hasSum_coe
@[simp, norm_cast]
theorem summable_coe {f : α → ℝ} : (Summable fun a => (f a : ℍ)) ↔ Summable f := by
simpa only using
- Summable.map_iff_of_leftInverse (algebraMap ℝ ℍ)
- (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reLm _ _) (continuous_algebraMap _ _) continuous_re
- coe_re
+ Summable.map_iff_of_leftInverse (algebraMap ℝ ℍ) (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reₗ _ _)
+ (continuous_algebraMap _ _) continuous_re coe_re
#align quaternion.summable_coe Quaternion.summable_coe
@[norm_cast]
mathlib commit https://github.com/leanprover-community/mathlib/commit/738054fa93d43512da144ec45ce799d18fd44248
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit cf7a7252c1989efe5800e0b3cdfeb4228ac6b40e
+! leanprover-community/mathlib commit 07992a1d1f7a4176c6d3f160209608be4e198566
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -55,8 +55,8 @@ theorem inner_def (a b : ℍ) : ⟪a, b⟫ = (a * star b).re :=
#align quaternion.inner_def Quaternion.inner_def
noncomputable instance : NormedAddCommGroup ℍ :=
- @InnerProductSpace.OfCore.toNormedAddCommGroup ℝ ℍ _ _ _
- { inner := HasInner.inner
+ @InnerProductSpace.Core.toNormedAddCommGroup ℝ ℍ _ _ _
+ { toHasInner := inferInstance
conj_symm := fun x y => by simp [inner_def, mul_comm]
nonneg_re := fun x => normSq_nonneg
definite := fun x => normSq_eq_zero.1
mathlib commit https://github.com/leanprover-community/mathlib/commit/86d04064ca33ee3d3405fbfc497d494fd2dd4796
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit d3af0609f6db8691dffdc3e1fb7feb7da72698f2
+! leanprover-community/mathlib commit cf7a7252c1989efe5800e0b3cdfeb4228ac6b40e
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -44,13 +44,13 @@ open RealInnerProductSpace
namespace Quaternion
instance : HasInner ℝ ℍ :=
- ⟨fun a b => (a * b.conj).re⟩
+ ⟨fun a b => (a * star b).re⟩
theorem inner_self (a : ℍ) : ⟪a, a⟫ = normSq a :=
rfl
#align quaternion.inner_self Quaternion.inner_self
-theorem inner_def (a b : ℍ) : ⟪a, b⟫ = (a * b.conj).re :=
+theorem inner_def (a b : ℍ) : ⟪a, b⟫ = (a * star b).re :=
rfl
#align quaternion.inner_def Quaternion.inner_def
@@ -84,14 +84,14 @@ theorem nnnorm_coe (a : ℝ) : ‖(a : ℍ)‖₊ = ‖a‖₊ :=
#align quaternion.nnnorm_coe Quaternion.nnnorm_coe
@[simp]
-theorem norm_conj (a : ℍ) : ‖conj a‖ = ‖a‖ := by
- simp_rw [norm_eq_sqrt_real_inner, inner_self, norm_sq_conj]
-#align quaternion.norm_conj Quaternion.norm_conj
+theorem norm_star (a : ℍ) : ‖star a‖ = ‖a‖ := by
+ simp_rw [norm_eq_sqrt_real_inner, inner_self, norm_sq_star]
+#align quaternion.norm_star Quaternion.norm_star
@[simp]
-theorem nnnorm_conj (a : ℍ) : ‖conj a‖₊ = ‖a‖₊ :=
- Subtype.ext <| norm_conj a
-#align quaternion.nnnorm_conj Quaternion.nnnorm_conj
+theorem nnnorm_star (a : ℍ) : ‖star a‖₊ = ‖a‖₊ :=
+ Subtype.ext <| norm_star a
+#align quaternion.nnnorm_star Quaternion.nnnorm_star
noncomputable instance : NormedDivisionRing ℍ
where
@@ -106,7 +106,7 @@ instance : NormedAlgebra ℝ ℍ where
toAlgebra := (Quaternion.algebra : Algebra ℝ ℍ)
instance : CstarRing ℍ
- where norm_star_mul_self x := (norm_mul _ _).trans <| congr_arg (· * ‖x‖) (norm_conj x)
+ where norm_star_mul_self x := (norm_mul _ _).trans <| congr_arg (· * ‖x‖) (norm_star x)
instance : Coe ℂ ℍ :=
⟨fun z => ⟨z.re, z.im, 0, 0⟩⟩
@@ -195,11 +195,6 @@ noncomputable def linearIsometryEquivTuple : ℍ ≃ₗᵢ[ℝ] EuclideanSpace
norm_map' := norm_piLp_equiv_symm_equivTuple }
#align quaternion.linear_isometry_equiv_tuple Quaternion.linearIsometryEquivTuple
-@[continuity]
-theorem continuous_conj : Continuous (conj : ℍ → ℍ) :=
- continuous_star
-#align quaternion.continuous_conj Quaternion.continuous_conj
-
@[continuity]
theorem continuous_coe : Continuous (coe : ℝ → ℍ) :=
continuous_algebraMap ℝ ℍ
mathlib commit https://github.com/leanprover-community/mathlib/commit/55d771df074d0dd020139ee1cd4b95521422df9f
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit da3fc4a33ff6bc75f077f691dc94c217b8d41559
+! leanprover-community/mathlib commit d3af0609f6db8691dffdc3e1fb7feb7da72698f2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -54,8 +54,8 @@ theorem inner_def (a b : ℍ) : ⟪a, b⟫ = (a * b.conj).re :=
rfl
#align quaternion.inner_def Quaternion.inner_def
-noncomputable instance : InnerProductSpace ℝ ℍ :=
- InnerProductSpace.ofCore
+noncomputable instance : NormedAddCommGroup ℍ :=
+ @InnerProductSpace.OfCore.toNormedAddCommGroup ℝ ℍ _ _ _
{ inner := HasInner.inner
conj_symm := fun x y => by simp [inner_def, mul_comm]
nonneg_re := fun x => normSq_nonneg
@@ -63,6 +63,9 @@ noncomputable instance : InnerProductSpace ℝ ℍ :=
add_left := fun x y z => by simp only [inner_def, add_mul, add_re]
smul_left := fun x y r => by simp [inner_def] }
+noncomputable instance : InnerProductSpace ℝ ℍ :=
+ InnerProductSpace.ofCore _
+
theorem normSq_eq_normSq (a : ℍ) : normSq a = ‖a‖ * ‖a‖ := by
rw [← inner_self, real_inner_self_eq_norm_mul_norm]
#align quaternion.norm_sq_eq_norm_sq Quaternion.normSq_eq_normSq
@@ -98,9 +101,8 @@ noncomputable instance : NormedDivisionRing ℍ
simp only [norm_eq_sqrt_real_inner, inner_self, norm_sq.map_mul]
exact Real.sqrt_mul norm_sq_nonneg _
-instance : NormedAlgebra ℝ ℍ
- where
- norm_smul_le a x := (norm_smul a x).le
+instance : NormedAlgebra ℝ ℍ where
+ norm_smul_le := norm_smul_le
toAlgebra := (Quaternion.algebra : Algebra ℝ ℍ)
instance : CstarRing ℍ
mathlib commit https://github.com/leanprover-community/mathlib/commit/da3fc4a33ff6bc75f077f691dc94c217b8d41559
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit 3fc0b254310908f70a1a75f01147d52e53e9f8a2
+! leanprover-community/mathlib commit da3fc4a33ff6bc75f077f691dc94c217b8d41559
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -239,5 +239,34 @@ instance : CompleteSpace ℍ :=
linear_isometry_equiv_tuple.to_continuous_linear_equiv.symm.uniform_embedding
(completeSpace_congr this).1 (by infer_instance)
+section infinite_sum
+
+variable {α : Type _}
+
+@[simp, norm_cast]
+theorem hasSum_coe {f : α → ℝ} {r : ℝ} : HasSum (fun a => (f a : ℍ)) (↑r : ℍ) ↔ HasSum f r :=
+ ⟨fun h => by
+ simpa only using h.map (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reLm _ _) continuous_re, fun h =>
+ by simpa only using h.map (algebraMap ℝ ℍ) (continuous_algebraMap _ _)⟩
+#align quaternion.has_sum_coe Quaternion.hasSum_coe
+
+@[simp, norm_cast]
+theorem summable_coe {f : α → ℝ} : (Summable fun a => (f a : ℍ)) ↔ Summable f := by
+ simpa only using
+ Summable.map_iff_of_leftInverse (algebraMap ℝ ℍ)
+ (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reLm _ _) (continuous_algebraMap _ _) continuous_re
+ coe_re
+#align quaternion.summable_coe Quaternion.summable_coe
+
+@[norm_cast]
+theorem tsum_coe (f : α → ℝ) : (∑' a, (f a : ℍ)) = ↑(∑' a, f a) :=
+ by
+ by_cases hf : Summable f
+ · exact (has_sum_coe.mpr hf.has_sum).tsum_eq
+ · simp [tsum_eq_zero_of_not_summable hf, tsum_eq_zero_of_not_summable (summable_coe.not.mpr hf)]
+#align quaternion.tsum_coe Quaternion.tsum_coe
+
+end infinite_sum
+
end Quaternion
mathlib commit https://github.com/leanprover-community/mathlib/commit/1a313d8bba1bad05faba71a4a4e9742ab5bd9efd
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit d90149e913bf65828b011379540c3379e01105fd
+! leanprover-community/mathlib commit 3fc0b254310908f70a1a75f01147d52e53e9f8a2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -57,7 +57,7 @@ theorem inner_def (a b : ℍ) : ⟪a, b⟫ = (a * b.conj).re :=
noncomputable instance : InnerProductSpace ℝ ℍ :=
InnerProductSpace.ofCore
{ inner := HasInner.inner
- conj_sym := fun x y => by simp [inner_def, mul_comm]
+ conj_symm := fun x y => by simp [inner_def, mul_comm]
nonneg_re := fun x => normSq_nonneg
definite := fun x => normSq_eq_zero.1
add_left := fun x y z => by simp only [inner_def, add_mul, add_re]
mathlib commit https://github.com/leanprover-community/mathlib/commit/271bf175e6c51b8d31d6c0107b7bb4a967c7277e
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit 48085f140e684306f9e7da907cd5932056d1aded
+! leanprover-community/mathlib commit d90149e913bf65828b011379540c3379e01105fd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -229,6 +229,11 @@ theorem continuous_imK : Continuous fun q : ℍ => q.imK :=
(continuous_apply 3).comp linearIsometryEquivTuple.Continuous
#align quaternion.continuous_im_k Quaternion.continuous_imK
+@[continuity]
+theorem continuous_im : Continuous fun q : ℍ => q.im := by
+ simpa only [← sub_self_re] using continuous_id.sub (continuous_coe.comp continuous_re)
+#align quaternion.continuous_im Quaternion.continuous_im
+
instance : CompleteSpace ℍ :=
haveI : UniformEmbedding linear_isometry_equiv_tuple.to_linear_equiv.to_equiv.symm :=
linear_isometry_equiv_tuple.to_continuous_linear_equiv.symm.uniform_embedding
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -33,7 +33,6 @@ quaternion, normed ring, normed space, normed algebra
-/
--- mathport name: quaternion.real
@[inherit_doc] scoped[Quaternion] notation "ℍ" => Quaternion ℝ
open scoped RealInnerProductSpace
IsROrC
to RCLike
(#10819)
IsROrC
contains data, which goes against the expectation that classes prefixed with Is
are prop-valued. People have been complaining about this on and off, so this PR renames IsROrC
to RCLike
.
@@ -175,7 +175,7 @@ theorem norm_piLp_equiv_symm_equivTuple (x : ℍ) :
‖(WithLp.equiv 2 (Fin 4 → _)).symm (equivTuple ℝ x)‖ = ‖x‖ := by
rw [norm_eq_sqrt_real_inner, norm_eq_sqrt_real_inner, inner_self, normSq_def', PiLp.inner_apply,
Fin.sum_univ_four]
- simp_rw [IsROrC.inner_apply, starRingEnd_apply, star_trivial, ← sq]
+ simp_rw [RCLike.inner_apply, starRingEnd_apply, star_trivial, ← sq]
rfl
set_option linter.uppercaseLean3 false in
#align quaternion.norm_pi_Lp_equiv_symm_equiv_tuple Quaternion.norm_piLp_equiv_symm_equivTuple
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -96,7 +96,7 @@ noncomputable instance : NormedDivisionRing ℍ where
simp only [norm_eq_sqrt_real_inner, inner_self, normSq.map_mul]
exact Real.sqrt_mul normSq_nonneg _
--- porting note: added `noncomputable`
+-- Porting note: added `noncomputable`
noncomputable instance : NormedAlgebra ℝ ℍ where
norm_smul_le := norm_smul_le
toAlgebra := Quaternion.algebra
@@ -80,12 +80,12 @@ theorem nnnorm_coe (a : ℝ) : ‖(a : ℍ)‖₊ = ‖a‖₊ :=
Subtype.ext <| norm_coe a
#align quaternion.nnnorm_coe Quaternion.nnnorm_coe
-@[simp, nolint simpNF] -- Porting note: simp cannot prove this
+@[simp, nolint simpNF] -- Porting note (#10959): simp cannot prove this
theorem norm_star (a : ℍ) : ‖star a‖ = ‖a‖ := by
simp_rw [norm_eq_sqrt_real_inner, inner_self, normSq_star]
#align quaternion.norm_star Quaternion.norm_star
-@[simp, nolint simpNF] -- Porting note: simp cannot prove this
+@[simp, nolint simpNF] -- Porting note (#10959): simp cannot prove this
theorem nnnorm_star (a : ℍ) : ‖star a‖₊ = ‖a‖₊ :=
Subtype.ext <| norm_star a
#align quaternion.nnnorm_star Quaternion.nnnorm_star
@@ -147,7 +147,7 @@ theorem coeComplex_one : ((1 : ℂ) : ℍ) = 1 :=
rfl
#align quaternion.coe_complex_one Quaternion.coeComplex_one
-@[simp, norm_cast, nolint simpNF] -- Porting note: simp cannot prove this
+@[simp, norm_cast, nolint simpNF] -- Porting note (#10959): simp cannot prove this
theorem coe_real_complex_mul (r : ℝ) (z : ℂ) : (r • z : ℍ) = ↑r * ↑z := by ext <;> simp
#align quaternion.coe_real_complex_mul Quaternion.coe_real_complex_mul
@[inherit_doc]
on notations (#9942)
Make all the notations that unambiguously should inherit the docstring of their definition actually inherit it.
Also write a few docstrings by hand. I only wrote the ones I was competent to write and which I was sure of. Some docstrings come from mathlib3 as they were lost during the early port.
This PR is only intended as a first pass There are many more docstrings to add.
@@ -34,7 +34,7 @@ quaternion, normed ring, normed space, normed algebra
-- mathport name: quaternion.real
-scoped[Quaternion] notation "ℍ" => Quaternion ℝ
+@[inherit_doc] scoped[Quaternion] notation "ℍ" => Quaternion ℝ
open scoped RealInnerProductSpace
This removes the (PiLp.equiv 2 fun i => α i)
abbreviation, replacing it with its implementation (WithLp.equiv 2 (∀ i, α i))
. The same thing is done for PiLp.linearEquiv
.
@@ -172,7 +172,7 @@ theorem coe_ofComplex : ⇑ofComplex = coeComplex := rfl
/-- The norm of the components as a euclidean vector equals the norm of the quaternion. -/
theorem norm_piLp_equiv_symm_equivTuple (x : ℍ) :
- ‖(PiLp.equiv 2 fun _ : Fin 4 => _).symm (equivTuple ℝ x)‖ = ‖x‖ := by
+ ‖(WithLp.equiv 2 (Fin 4 → _)).symm (equivTuple ℝ x)‖ = ‖x‖ := by
rw [norm_eq_sqrt_real_inner, norm_eq_sqrt_real_inner, inner_self, normSq_def', PiLp.inner_apply,
Fin.sum_univ_four]
simp_rw [IsROrC.inner_apply, starRingEnd_apply, star_trivial, ← sq]
@@ -184,8 +184,8 @@ set_option linter.uppercaseLean3 false in
@[simps apply symm_apply]
noncomputable def linearIsometryEquivTuple : ℍ ≃ₗᵢ[ℝ] EuclideanSpace ℝ (Fin 4) :=
{ (QuaternionAlgebra.linearEquivTuple (-1 : ℝ) (-1 : ℝ)).trans
- (PiLp.linearEquiv 2 ℝ fun _ : Fin 4 => ℝ).symm with
- toFun := fun a => (PiLp.equiv _ fun _ : Fin 4 => _).symm ![a.1, a.2, a.3, a.4]
+ (WithLp.linearEquiv 2 ℝ (Fin 4 → ℝ)).symm with
+ toFun := fun a => (WithLp.equiv _ (Fin 4 → _)).symm ![a.1, a.2, a.3, a.4]
invFun := fun a => ⟨a 0, a 1, a 2, a 3⟩
norm_map' := norm_piLp_equiv_symm_equivTuple }
#align quaternion.linear_isometry_equiv_tuple Quaternion.linearIsometryEquivTuple
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -233,7 +233,7 @@ instance : CompleteSpace ℍ :=
section infinite_sum
-variable {α : Type _}
+variable {α : Type*}
@[simp, norm_cast]
theorem hasSum_coe {f : α → ℝ} {r : ℝ} : HasSum (fun a => (f a : ℍ)) (↑r : ℍ) ↔ HasSum f r :=
@@ -2,17 +2,14 @@
Copyright (c) 2020 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Eric Wieser
-
-! This file was ported from Lean 3 source module analysis.quaternion
-! leanprover-community/mathlib commit 07992a1d1f7a4176c6d3f160209608be4e198566
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Quaternion
import Mathlib.Analysis.InnerProductSpace.Basic
import Mathlib.Analysis.InnerProductSpace.PiL2
import Mathlib.Topology.Algebra.Algebra
+#align_import analysis.quaternion from "leanprover-community/mathlib"@"07992a1d1f7a4176c6d3f160209608be4e198566"
+
/-!
# Quaternions as a normed algebra
@@ -107,7 +107,7 @@ noncomputable instance : NormedAlgebra ℝ ℍ where
instance : CstarRing ℍ where
norm_star_mul_self {x} := (norm_mul _ _).trans <| congr_arg (· * ‖x‖) (norm_star x)
-/-- Coerction from `ℂ` to `ℍ`. -/
+/-- Coercion from `ℂ` to `ℍ`. -/
@[coe] def coeComplex (z : ℂ) : ℍ := ⟨z.re, z.im, 0, 0⟩
instance : Coe ℂ ℍ := ⟨coeComplex⟩
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file