Documentation

Mathlib.NumberTheory.Height.Basic

Basic theory of heights #

This is an attempt at formalizing some basic properties of height functions.

We aim at a level of generality that allows to apply the theory to algebraic number fields and to function fields (and possibly beyond).

The general set-up for heights is the following. Let K be a field.

We realize this implementation via the class Height.AdmissibleAbsValues K.

Main definitions #

We define multiplicative heights and logarithmic heights (which are just defined to be the (real) logarithm of the corresponding multiplicative height). This leads to some duplication (in the definitions and statements; the proofs are reduced to those for the multiplicative height), which is justified, as both versions are frequently used.

We define the following variants.

Tags #

Height, absolute value

Families of admissible absolute values #

We define the class AdmissibleAbsValues K for a field K, which captures the notion of a family of absolute values on K satisfying a product formula.

class Height.AdmissibleAbsValues (K : Type u_1) [Field K] :
Type u_1

A type class capturing an admissible family of absolute values.

Instances

    The totalWeight of a field with AdmissibleAbsValues is the sum of the multiplicities of the archimedean places.

    Equations
    Instances For

      Heights of field elements #

      We use the subscipt to denote multiplicative and logarithmic heights of field elements (this is because we are in the one-dimensional case of (affine) heights).

      def Height.mulHeight₁ {K : Type u_1} [Field K] [AdmissibleAbsValues K] (x : K) :

      The multiplicative height of an element of K.

      Equations
      Instances For

        The mutliplicative height of a field element is always at least 1.

        def Height.logHeight₁ {K : Type u_1} [Field K] [AdmissibleAbsValues K] (x : K) :

        The logarithmic height of an element of K.

        Equations
        Instances For

          Heights of tuples and finitely supported maps #

          We define the multiplicative height of a nonzero tuple x : ι → K as the product of the maxima of v on x, as v runs through the relevant absolute values of K. As usual, the logarithmic height is the logarithm of the multiplicative height. When x = 0, we define the multiplicative height to be 1; this is a convenient "junk value", which allows to avoid the condition x ≠ 0 in most of the results.

          For a finitely supported function x : ι →₀ K, we define the height as the height of x restricted to its support.

          def Height.mulHeight {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} (x : ιK) :

          The multiplicative height of a tuple of elements of K. For the zero tuple we take the junk value 1.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Height.mulHeight_eq {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} {x : ιK} (hx : x 0) :
            mulHeight x = (Multiset.map (fun (v : AbsoluteValue K ) => ⨆ (i : ι), v (x i)) AdmissibleAbsValues.archAbsVal).prod * ∏ᶠ (v : AdmissibleAbsValues.nonarchAbsVal), ⨆ (i : ι), v (x i)
            @[simp]
            theorem Height.mulHeight_zero {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} :
            @[simp]
            theorem Height.mulHeight_one {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} :
            theorem Height.mulHeight_comp_equiv {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} {ι' : Type u_3} (e : ι ι') (x : ι'K) :

            The multiplicative height does not change under re-indexing.

            def Height.logHeight {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} (x : ιK) :

            The logarithmic height of a tuple of elements of K.

            Equations
            Instances For
              theorem Height.logHeight_eq_log_mulHeight {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} (x : ιK) :
              def Finsupp.mulHeight {K : Type u_1} [Field K] [Height.AdmissibleAbsValues K] {α : Type u_3} (x : α →₀ K) :

              The multiplicative height of a finitely supported function.

              Equations
              Instances For
                def Finsupp.logHeight {K : Type u_1} [Field K] [Height.AdmissibleAbsValues K] {α : Type u_3} (x : α →₀ K) :

                The logarithmic height of a finitely supported function.

                Equations
                Instances For

                  Properties of heights #

                  theorem Height.mulHeight_smul_eq_mulHeight {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] (x : ιK) {c : K} (hc : c 0) :

                  The multiplicative height of a tuple does not change under scaling.

                  theorem Height.one_le_mulHeight {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] (x : ιK) :
                  theorem Height.mulHeight_pos {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] (x : ιK) :
                  theorem Height.mulHeight.ne_zero {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] (x : ιK) :
                  theorem Height.zero_le_logHeight {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] {x : ιK} :
                  theorem Height.logHeight_smul_eq_logHeight {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] (x : ιK) {c : K} (hc : c 0) :

                  The logarithmic height of a tuple does not change under scaling.

                  theorem Height.mulHeight_pow {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] (x : ιK) (n : ) :
                  mulHeight (x ^ n) = mulHeight x ^ n

                  The multiplicative height of the coordinate-wise nth power of a tuple is the nth power of its multiplicative height.

                  theorem Height.logHeight_pow {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} [Finite ι] (x : ιK) (n : ) :
                  logHeight (x ^ n) = n * logHeight x

                  The logarithmic height of the coordinate-wise nth power of a tuple is n times its logarithmic height.

                  The multiplicative height of the inverse of a field element x is the same as the multiplicative height of x.

                  The logarithmic height of the inverse of a field element x is the same as the logarithmic height of x.

                  theorem Height.mulHeight₁_pow {K : Type u_1} [Field K] [AdmissibleAbsValues K] (x : K) (n : ) :

                  The multiplicative height of the nth power of a field element x (with n : ℕ) is the nth power of the multiplicative height of x.

                  theorem Height.logHeight₁_pow {K : Type u_1} [Field K] [AdmissibleAbsValues K] (x : K) (n : ) :

                  The logarithmic height of the nth power of a field element x (with n : ℕ) is n times the logaritmic height of x.

                  theorem Height.mulHeight₁_zpow {K : Type u_1} [Field K] [AdmissibleAbsValues K] (x : K) (n : ) :

                  The multiplicative height of the nth power of a field element x (with n : ℤ) is the |n|th power of the multiplicative height of x.

                  theorem Height.logHeight₁_zpow {K : Type u_1} [Field K] [AdmissibleAbsValues K] (x : K) (n : ) :

                  The logarithmic height of the nth power of a field element x (with n : ℤ) is |n| times the logarithmic height of x.