Documentation

Atlas.EllipticCurves.code.EndomorphismAlgebra

structure IsOrder (A : Type u_1) [Ring A] [Algebra A] (O : Subring A) :

A subring O of a -algebra A is an order if it is finitely generated as a -module and its -span fills A (cf. Definition 12.22 of "Elliptic Curves").

Instances For

    The ring of integers 𝓞_K of a number field K is an order in K (Definition 12.22 / Theorem about 𝓞_K being a free -module of rank [K:ℚ]).

    The order of conductor f in ℤ[√d]: the subring consisting of all elements whose imaginary part is divisible by f.

    Instances For
      @[simp]

      Membership criterion for the conductor order: z ∈ conductorOrder d f iff f divides z.im.

      theorem ConductorOrder.conductorOrder_le_of_dvd {d : } {f₁ f₂ : } (h : f₂ f₁) :

      Divisibility of conductors gives a reverse inclusion of orders: if f₂ ∣ f₁ then conductorOrder d f₁ ≤ conductorOrder d f₂.

      The conductor order is finitely generated as a -module, with basis {1, f·√d}.

      The "imaginary part" homomorphism ℤ[√d] →+ ℤ sending a + b√d ↦ b.

      Instances For
        theorem ConductorOrder.intCast_mem_subring {d : } (S : Subring (ℤ√d)) (n : ) :
        n S

        Every integer cast n : ℤ → ℤ[√d] lies inside any subring S of ℤ[√d].

        theorem ConductorOrder.mem_subring_of_dvd_im {d : } (S : Subring (ℤ√d)) {a : } (ha : { re := 0, im := a } S) {z : ℤ√d} (hdvd : a z.im) :
        z S

        If a subring S contains the pure-imaginary element (0, a) and a divides the imaginary part of z, then z ∈ S.

        The conductor order with positive conductor f satisfies the two structural conditions to be an order: finite generation as a -module, and containing an element with nonzero imaginary part.

        theorem ConductorOrder.exists_conductor_of_subring {d : } (S : Subring (ℤ√d)) (hS : zS, z.im 0) :
        ∃ (f : ), 0 < f S = conductorOrder d f

        Conversely, any subring S of ℤ[√d] that contains some element with nonzero imaginary part is itself a conductor order for a unique positive integer f.

        Classification of orders in ℤ[√d]: a subring S is an order (finitely generated with at least one element having nonzero imaginary part) iff it equals conductorOrder d f for some positive conductor f.

        The discriminant of the conductor f order in ℤ[√d], defined as 4 · f² · d.

        Instances For

          The discriminant of the maximal order in ℤ[√d] (conductor 1), which is 4d.

          Instances For
            def IsQuaternionAlgebra (k : Type u_1) [Field k] (H : Type u_2) [Ring H] [Algebra k H] :

            A k-algebra H is a quaternion algebra (Definition 12.12) if it has a basis of the form {1, α, β, αβ} with α², β² ∈ k× and αβ = -βα, equivalently encoded here via the existence of anticommuting elements with nonzero scalar squares and finrank k H = 4.

            Instances For
              @[reducible, inline]
              abbrev QAlgebra (k : Type u_1) [Field k] (a b : k) :
              a 0b 0Type u_1

              Convenient abbreviation for the quaternion algebra ℍ[k, a, b] with both nonvanishing parameters a, b ∈ k×.

              Instances For
                @[reducible, inline]
                abbrev qI {k : Type u_1} [Field k] (a b : k) :

                The standard basis element i of the quaternion algebra ℍ[k, a, b].

                Instances For
                  @[reducible, inline]
                  abbrev qJ {k : Type u_1} [Field k] (a b : k) :

                  The standard basis element j of the quaternion algebra ℍ[k, a, b].

                  Instances For
                    @[reducible, inline]
                    abbrev qK {k : Type u_1} [Field k] (a b : k) :

                    The standard basis element k = i·j of the quaternion algebra ℍ[k, a, b].

                    Instances For
                      theorem qI_mul_qI {k : Type u_1} [Field k] (a b : k) :
                      qI a b * qI a b = a

                      In ℍ[k, a, b], i² = a.

                      theorem qJ_mul_qJ {k : Type u_1} [Field k] (a b : k) :
                      qJ a b * qJ a b = b

                      In ℍ[k, a, b], j² = b.

                      theorem qI_mul_qJ {k : Type u_1} [Field k] (a b : k) :
                      qI a b * qJ a b = qK a b

                      In ℍ[k, a, b], i · j = k.

                      theorem qJ_mul_qI {k : Type u_1} [Field k] (a b : k) :
                      qJ a b * qI a b = -qK a b

                      In ℍ[k, a, b], j · i = -k.

                      theorem qI_mul_qJ_eq_neg_qJ_mul_qI {k : Type u_1} [Field k] (a b : k) :
                      qI a b * qJ a b = -(qJ a b * qI a b)

                      The defining anticommutation relation i · j = -(j · i) in ℍ[k, a, b].

                      @[implicit_reducible]
                      instance instRingQuaternionAlgebraOfNat_atlas {k : Type u_1} [Field k] (a b : k) :

                      Synonym: ℍ[k, a, b] is a ring (recorded for use later).

                      @[implicit_reducible]
                      instance instAlgebraQuaternionAlgebraOfNat_atlas {k : Type u_1} [Field k] (a b : k) :

                      Synonym: ℍ[k, a, b] is a k-algebra.

                      theorem finrank_eq_four {k : Type u_1} [Field k] (a b : k) :

                      A quaternion algebra has k-dimension exactly 4 (cf. Definition 12.12).

                      def reducedTrace {k : Type u_2} [Field k] (a b : k) (γ : QuaternionAlgebra k a 0 b) :
                      k

                      The reduced trace T γ = 2 · Re γ on the quaternion algebra ℍ[k, a, b] (Definition 12.6).

                      Instances For
                        theorem reducedTrace_mk {k : Type u_2} [Field k] (a b r x y z : k) :
                        reducedTrace a b { re := r, imI := x, imJ := y, imK := z } = 2 * r

                        The reduced trace of a quaternion ⟨r, x, y, z⟩ equals 2r.

                        theorem reducedTrace_coe {k : Type u_1} [Field k] (a b c : k) :
                        reducedTrace a b c = 2 * c

                        The reduced trace of a scalar c : k, viewed in ℍ[k, a, b], equals 2c.

                        noncomputable def basis {k : Type u_1} [Field k] (a b : k) :

                        The standard k-basis {1, i, j, k} of the quaternion algebra ℍ[k, a, b].

                        Instances For
                          def quatBasis {k : Type u_1} [Field k] (a b : k) :

                          The packaged QuaternionAlgebra.Basis structure for ℍ[k, a, b] itself.

                          Instances For
                            theorem basis_i_mul_i {k : Type u_1} [Field k] (a b : k) :
                            (quatBasis a b).i * (quatBasis a b).i = a 1 + 0 (quatBasis a b).i

                            Basis identity: i² = a·1 + 0·i in ℍ[k, a, b].

                            theorem basis_j_mul_j {k : Type u_1} [Field k] (a b : k) :
                            (quatBasis a b).j * (quatBasis a b).j = b 1

                            Basis identity: j² = b·1 in ℍ[k, a, b].

                            theorem basis_i_mul_j {k : Type u_1} [Field k] (a b : k) :
                            (quatBasis a b).i * (quatBasis a b).j = (quatBasis a b).k

                            Basis identity: i · j = k in ℍ[k, a, b].

                            theorem basis_j_mul_i {k : Type u_1} [Field k] (a b : k) :
                            (quatBasis a b).j * (quatBasis a b).i = 0 (quatBasis a b).j - (quatBasis a b).k

                            Basis identity: j · i = 0·j - k = -k in ℍ[k, a, b].

                            The classical Hamilton quaternions are defeq to ℍ[ℝ, -1, -1].

                            theorem hamilton_i_sq :
                            qI (-1) (-1) * qI (-1) (-1) = -1

                            In Hamilton's quaternions, i² = -1.

                            theorem hamilton_j_sq :
                            qJ (-1) (-1) * qJ (-1) (-1) = -1

                            In Hamilton's quaternions, j² = -1.

                            theorem hamilton_ij_eq_neg_ji :
                            qI (-1) (-1) * qJ (-1) (-1) = -(qJ (-1) (-1) * qI (-1) (-1))

                            In Hamilton's quaternions, i · j = -(j · i).

                            Hamilton's quaternions have -dimension 4.

                            theorem hamilton_not_commutative :
                            ¬∀ (a b : Quaternion ), a * b = b * a

                            Hamilton's quaternions are not commutative: i · j ≠ j · i.

                            def reducedNorm {k : Type u_2} [Field k] (a b : k) (γ : QuaternionAlgebra k a 0 b) :
                            k

                            The reduced norm N γ = (γ · γ̄).re on the quaternion algebra ℍ[k, a, b] (Definition 12.6).

                            Instances For
                              theorem reducedNorm_mk {k : Type u_2} [Field k] (a b r x y z : k) :
                              reducedNorm a b { re := r, imI := x, imJ := y, imK := z } = r * r - a * (x * x) - b * (y * y) + a * b * (z * z)

                              Explicit formula: N ⟨r, x, y, z⟩ = r² - a x² - b y² + a b z².

                              theorem mul_star_eq_algebraMap_reducedNorm {k : Type u_2} [Field k] (a b : k) (γ : QuaternionAlgebra k a 0 b) :
                              γ * star γ = (algebraMap k (QuaternionAlgebra k a 0 b)) (reducedNorm a b γ)

                              The product γ · γ̄ equals the scalar (N γ) viewed in ℍ[k, a, b].

                              theorem star_mul_eq_algebraMap_reducedNorm {k : Type u_2} [Field k] (a b : k) (γ : QuaternionAlgebra k a 0 b) :
                              star γ * γ = (algebraMap k (QuaternionAlgebra k a 0 b)) (reducedNorm a b γ)

                              The product γ̄ · γ also equals the scalar (N γ).

                              instance quatAlg_nontrivial {k : Type u_2} [Field k] (a b : k) :

                              Every quaternion algebra ℍ[k, a, b] is nontrivial.

                              theorem isDivisionRing_iff_norm_anisotropic {k : Type u_2} [Field k] (a b : k) :
                              (∀ (γ : QuaternionAlgebra k a 0 b), reducedNorm a b γ = 0γ = 0) ∀ (γ : QuaternionAlgebra k a 0 b), γ 0IsUnit γ

                              Lemma 12.13: a quaternion algebra is a division ring iff its reduced norm is anisotropic, i.e. N γ = 0 ⇒ γ = 0.

                              @[reducible]
                              noncomputable def toDivisionRing {k : Type u_2} [Field k] (a b : k) (h : ∀ (γ : QuaternionAlgebra k a 0 b), reducedNorm a b γ = 0γ = 0) :

                              Promote a quaternion algebra ℍ[k, a, b] with anisotropic reduced norm to a DivisionRing, by inverting nonzero elements via the conjugate.

                              Instances For
                                theorem algebraMap_mul_eq_smul {R : Type u_1} {K : Type u_2} [CommRing R] [Field K] [Algebra R K] (r : R) (k : K) :
                                (algebraMap R K) r * k = r k

                                Algebra-map multiplication coincides with scalar action: (algebraMap R K) r * k = r • k.

                                theorem TensorProduct.exists_tmul_inv_algebraMap {R : Type u_1} [CommRing R] [IsDomain R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] {A : Type u_3} [AddCommGroup A] [Module R A] (x : TensorProduct R A K) :
                                ∃ (a : A) (s : (nonZeroDivisors R)), x = a ⊗ₜ[R] ((algebraMap R K) s)⁻¹

                                A key step in Lemma 12.5: every element of A ⊗_R K, where K = Frac R, can be written as a ⊗ ((algebraMap R K) s)⁻¹ for some a ∈ A and s ∈ R⁰.

                                theorem TensorProduct.exists_pure_tensor_fractionRing {R : Type u_1} [CommRing R] [IsDomain R] {K : Type u_2} [Field K] [Algebra R K] [IsFractionRing R K] {A : Type u_3} [AddCommGroup A] [Module R A] (x : TensorProduct R A K) :
                                ∃ (a : A) (b : K), x = a ⊗ₜ[R] b

                                Lemma 12.5: every element of A ⊗_R K (where K = Frac R) can be written as a single pure tensor a ⊗ b.

                                theorem TensorProduct.exists_pure_tensor_int_rat {M : Type u_1} [AddCommGroup M] [Module M] (x : TensorProduct M ) :
                                ∃ (m : M) (n : ), n 0 x = m ⊗ₜ[] (↑n)⁻¹

                                Specialization of Lemma 12.5 to R = ℤ, K = ℚ: every element of M ⊗_ℤ ℚ is a pure tensor m ⊗ n⁻¹ with n ∈ ℤ \ {0}.

                                noncomputable def IsogenyEndRing {F : Type v} [Field F] [DecidableEq F] (E : WeierstrassCurve.Affine F) :

                                The subring of "isogeny endomorphisms" of E inside the full endomorphism ring; this is the subring relevant for Corollary 12.20.

                                Instances For

                                  The isogeny endomorphism ring of E is torsion-free as a -module, a step in proving it is a free -module of rank 1, 2 or 4.

                                  The isogeny endomorphism ring of E is a finitely generated -module (Corollary 12.20).

                                  The -rank of the isogeny endomorphism ring of E is one of 1, 2, or 4 (Corollary 12.20).

                                  The isogeny endomorphism ring of E is a free -module, derived from torsion- freeness and finite generation.

                                  Corollary 12.20: the endomorphism ring End(E) is a free -module of rank r ∈ {1, 2, 4}, the dimension of End⁰(E) over .

                                  Definition 12.21: an elliptic curve E has complex multiplication if End(E) ≇ ℤ.

                                  Instances For