Documentation

Mathlib.NumberTheory.NumberField.Basic

Number fields #

This file defines a number field and the ring of integers corresponding to it.

Main definitions #

Implementation notes #

The definitions that involve a field of fractions choose a canonical field of fractions, but are independent of that choice.

References #

Tags #

number field, ring of integers

class NumberField (K : Type u_1) [Field K] :

A number field is a field which has characteristic zero and is finite dimensional over β„š.

Stacks Tag 09GA

Instances

    β„€ with its usual ring structure is not a field.

    theorem NumberField.of_module_finite (K : Type u_1) (L : Type u_2) [Field K] [Field L] [NumberField K] [Algebra K L] [Module.Finite K L] :

    A finite extension of a number field is a number field.

    instance NumberField.of_intermediateField {K : Type u_1} {L : Type u_2} [Field K] [Field L] [NumberField K] [NumberField L] [Algebra K L] (E : IntermediateField K L) :
    NumberField β†₯E
    theorem NumberField.of_tower (K : Type u_1) (L : Type u_2) [Field K] [Field L] [NumberField K] [NumberField L] [Algebra K L] (E : Type u_3) [Field E] [Algebra K E] [Algebra E L] [IsScalarTower K E L] :
    def NumberField.RingOfIntegers (K : Type u_1) [Field K] :
    Type u_1

    The ring of integers (or number ring) corresponding to a number field is the integral closure of β„€ in the number field.

    This is defined as its own type, rather than a Subalgebra, for performance reasons: looking for instances of the form SMul (RingOfIntegers _) (RingOfIntegers _) makes much more effective use of the discrimination tree than instances of the form SMul (Subtype _) (Subtype _). The drawback is we have to copy over instances manually.

    Equations
    Instances For

      The ring of integers (or number ring) corresponding to a number field is the integral closure of β„€ in the number field.

      This is defined as its own type, rather than a Subalgebra, for performance reasons: looking for instances of the form SMul (RingOfIntegers _) (RingOfIntegers _) makes much more effective use of the discrimination tree than instances of the form SMul (Subtype _) (Subtype _). The drawback is we have to copy over instances manually.

      Equations
      Instances For
        @[reducible, inline]

        The canonical coercion from π“ž K to K.

        Equations
        Instances For

          This instance has to be CoeHead because we only want to apply it from π“ž K to K.

          Equations
          • NumberField.RingOfIntegers.instCoeHead = { coe := NumberField.RingOfIntegers.val }
          theorem NumberField.RingOfIntegers.ext {K : Type u_1} [Field K] {x y : NumberField.RingOfIntegers K} (h : ↑x = ↑y) :
          x = y
          theorem NumberField.RingOfIntegers.eq_iff {K : Type u_1} [Field K] {x y : NumberField.RingOfIntegers K} :
          ↑x = ↑y ↔ x = y
          @[simp]
          theorem NumberField.RingOfIntegers.map_mk {K : Type u_1} [Field K] (x : K) (hx : x ∈ integralClosure β„€ K) :
          (algebraMap (NumberField.RingOfIntegers K) K) ⟨x, hx⟩ = x
          theorem NumberField.RingOfIntegers.coe_mk {K : Type u_1} [Field K] {x : K} (hx : x ∈ integralClosure β„€ K) :
          β†‘βŸ¨x, hx⟩ = x
          theorem NumberField.RingOfIntegers.mk_eq_mk {K : Type u_1} [Field K] (x y : K) (hx : x ∈ integralClosure β„€ K) (hy : y ∈ integralClosure β„€ K) :
          ⟨x, hx⟩ = ⟨y, hy⟩ ↔ x = y
          @[simp]
          theorem NumberField.RingOfIntegers.mk_one {K : Type u_1} [Field K] :
          ⟨1, β‹―βŸ© = 1
          @[simp]
          theorem NumberField.RingOfIntegers.mk_zero {K : Type u_1} [Field K] :
          ⟨0, β‹―βŸ© = 0
          @[simp]
          theorem NumberField.RingOfIntegers.mk_add_mk {K : Type u_1} [Field K] (x y : K) (hx : x ∈ integralClosure β„€ K) (hy : y ∈ integralClosure β„€ K) :
          ⟨x, hx⟩ + ⟨y, hy⟩ = ⟨x + y, β‹―βŸ©
          @[simp]
          theorem NumberField.RingOfIntegers.mk_mul_mk {K : Type u_1} [Field K] (x y : K) (hx : x ∈ integralClosure β„€ K) (hy : y ∈ integralClosure β„€ K) :
          ⟨x, hx⟩ * ⟨y, hy⟩ = ⟨x * y, β‹―βŸ©
          @[simp]
          theorem NumberField.RingOfIntegers.mk_sub_mk {K : Type u_1} [Field K] (x y : K) (hx : x ∈ integralClosure β„€ K) (hy : y ∈ integralClosure β„€ K) :
          ⟨x, hx⟩ - ⟨y, hy⟩ = ⟨x - y, β‹―βŸ©
          @[simp]
          theorem NumberField.RingOfIntegers.neg_mk {K : Type u_1} [Field K] (x : K) (hx : x ∈ integralClosure β„€ K) :
          -⟨x, hx⟩ = ⟨-x, β‹―βŸ©

          The ring homomorphism (π“ž K) β†’+* (π“ž L) given by restricting a ring homomorphism f : K β†’+* L to π“ž K.

          Equations
          Instances For

            The ring isomorphsim (π“ž K) ≃+* (π“ž L) given by restricting a ring isomorphsim e : K ≃+* L to π“ž K.

            Equations
            Instances For

              Given an algebra between two fields, create an algebra between their two rings of integers.

              Equations

              The algebra homomorphism (π“ž K) →ₐ[π“ž k] (π“ž L) given by restricting a algebra homomorphism f : K →ₐ[k] L to π“ž K.

              Equations
              Instances For

                The isomorphism of algebras (π“ž K) ≃ₐ[π“ž k] (π“ž L) given by restricting an isomorphism of algebras e : K ≃ₐ[k] L to π“ž K.

                Equations
                Instances For

                  The canonical map from π“ž K to K is injective.

                  This is a convenient abbreviation for NoZeroSMulDivisors.algebraMap_injective.

                  The canonical map from π“ž K to K is injective.

                  This is a convenient abbreviation for map_eq_zero_iff applied to NoZeroSMulDivisors.algebraMap_injective.

                  The canonical map from π“ž K to K is injective.

                  This is a convenient abbreviation for map_ne_zero_iff applied to NoZeroSMulDivisors.algebraMap_injective.

                  The ring of integers of K are equivalent to any integral closure of β„€ in K

                  Equations
                  Instances For

                    The ring of integers of a number field is not a field.

                    def NumberField.RingOfIntegers.restrict {K : Type u_1} [Field K] {M : Type u_3} (f : M β†’ K) (h : βˆ€ (x : M), IsIntegral β„€ (f x)) (x : M) :

                    Given f : M β†’ K such that βˆ€ x, IsIntegral β„€ (f x), the corresponding function M β†’ π“ž K.

                    Equations
                    Instances For

                      Given f : M β†’+ K such that βˆ€ x, IsIntegral β„€ (f x), the corresponding function M β†’+ π“ž K.

                      Equations
                      Instances For
                        def NumberField.RingOfIntegers.restrict_monoidHom {K : Type u_1} [Field K] {M : Type u_3} [MulOneClass M] (f : M β†’* K) (h : βˆ€ (x : M), IsIntegral β„€ (f x)) :

                        Given f : M β†’* K such that βˆ€ x, IsIntegral β„€ (f x), the corresponding function M β†’* π“ž K.

                        Equations
                        Instances For

                          The ring of integers of L is isomorphic to any integral closure of π“ž K in L

                          Equations
                          Instances For

                            Any extension between ring of integers is integral.

                            Any extension between ring of integers of number fields is noetherian.

                            The kernel of the algebraMap between ring of integers is βŠ₯.

                            The algebraMap between ring of integers is injective.

                            A basis of K over β„š that is also a basis of π“ž K over β„€.

                            Equations
                            Instances For

                              The ring of integers of β„š as a number field is just β„€.

                              Equations
                              Instances For

                                The quotient of β„š[X] by the ideal generated by an irreducible polynomial of β„š[X] is a number field.