Module

QuadraticIntegerBasis.lean

Nyll.SawinTotallyRealTowers.QuadraticIntegerBasis
12 declarations indexed from sourceView source ↗

Integral bases of squarefree quadratic number fields

The square-root generator is integral. When its square is one modulo four, its half-integer translate is integral as well. Integer-coordinate classification gives spanning, and the concrete rational quadratic basis gives linear independence. These produce actual bases of the full ring of integers, with the two expected basis vectors.

Imports14
Imported by2

Declarations

ClassFieldTower.Sawin.quadraticIntegerGenerator

The integral square-root generator as an element of the ring of integers.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
def quadraticIntegerGenerator
    (L : Type u) [Field L] [NumberField L] (d : ℤ) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ)) : 𝓞 L
ClassFieldTower.Sawin.coe_quadraticIntegerGenerator

Coercing the integral square-root generator recovers the original element.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem coe_quadraticIntegerGenerator
    (L : Type u) [Field L] [NumberField L] (d : ℤ) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ)) :
    (quadraticIntegerGenerator L d α hSquare : L) = α
ClassFieldTower.Sawin.quadraticHalfIntegerGenerator

The half-integer generator is integral when its square parameter is one modulo four.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
def quadraticHalfIntegerGenerator
    (L : Type u) [Field L] [NumberField L] (d : ℤ) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ)) (hMod : d % 4 = 1) : 𝓞 L
ClassFieldTower.Sawin.coe_quadraticHalfIntegerGenerator

Coercing the half-integer generator recovers its field expression.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem coe_quadraticHalfIntegerGenerator
    (L : Type u) [Field L] [NumberField L] (d : ℤ) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ)) (hMod : d % 4 = 1) :
    (quadraticHalfIntegerGenerator L d α hSquare hMod : L) = (1 + α) / 2
ClassFieldTower.Sawin.adjoin_half_quadraticGenerator_eq_top

Replacing a primitive element by its half-integer translate preserves its generated field over ℚ.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem adjoin_half_quadraticGenerator_eq_top
    (L : Type u) [Field L] [Algebra ℚ L] (α : L)
    (hGenerate : IntermediateField.adjoin ℚ ({α} : Set L) = ⊤) :
    IntermediateField.adjoin ℚ ({(1 + α) / 2} : Set L) = ⊤
ClassFieldTower.Sawin.linearIndependent_one_integer_generator
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem linearIndependent_one_integer_generator
    (L : Type u) [Field L] [NumberField L] [Algebra.IsQuadraticExtension ℚ L]
    (β : 𝓞 L)
    (hGenerate : IntermediateField.adjoin ℚ ({(β : L)} : Set L) = ⊤) :
    LinearIndependent ℤ ![(1 : 𝓞 L), β]
ClassFieldTower.Sawin.quadraticIntegerBasisOfModFourNeOne

The integral basis 1, α when the signed squarefree radicand is not one modulo four.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
def quadraticIntegerBasisOfModFourNeOne
    (L : Type u) [Field L] [NumberField L] [Algebra.IsQuadraticExtension ℚ L]
    (d : ℤ) (hd : Squarefree d.natAbs) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ))
    (hGenerate : IntermediateField.adjoin ℚ ({α} : Set L) = ⊤)
    (hMod : d % 4 ≠ 1) : Module.Basis (Fin 2) ℤ (𝓞 L)
ClassFieldTower.Sawin.quadraticIntegerBasisOfModFourNeOne_apply_zero

The first basis vector is one in the non-one-modulo-four case.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem quadraticIntegerBasisOfModFourNeOne_apply_zero
    (L : Type u) [Field L] [NumberField L] [Algebra.IsQuadraticExtension ℚ L]
    (d : ℤ) (hd : Squarefree d.natAbs) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ))
    (hGenerate : IntermediateField.adjoin ℚ ({α} : Set L) = ⊤) (hMod : d % 4 ≠ 1) :
    quadraticIntegerBasisOfModFourNeOne L d hd α hSquare hGenerate hMod 0 = 1
ClassFieldTower.Sawin.quadraticIntegerBasisOfModFourNeOne_apply_one

The second basis vector is the integral square-root generator.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem quadraticIntegerBasisOfModFourNeOne_apply_one
    (L : Type u) [Field L] [NumberField L] [Algebra.IsQuadraticExtension ℚ L]
    (d : ℤ) (hd : Squarefree d.natAbs) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ))
    (hGenerate : IntermediateField.adjoin ℚ ({α} : Set L) = ⊤) (hMod : d % 4 ≠ 1) :
    quadraticIntegerBasisOfModFourNeOne L d hd α hSquare hGenerate hMod 1 =
      quadraticIntegerGenerator L d α hSquare
ClassFieldTower.Sawin.quadraticIntegerBasisOfModFourEqOne

The integral basis 1, (1 + α) / 2 when the signed squarefree radicand is one modulo four.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
def quadraticIntegerBasisOfModFourEqOne
    (L : Type u) [Field L] [NumberField L] [Algebra.IsQuadraticExtension ℚ L]
    (d : ℤ) (hd : Squarefree d.natAbs) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ))
    (hGenerate : IntermediateField.adjoin ℚ ({α} : Set L) = ⊤)
    (hMod : d % 4 = 1) : Module.Basis (Fin 2) ℤ (𝓞 L)
ClassFieldTower.Sawin.quadraticIntegerBasisOfModFourEqOne_apply_zero

The first basis vector is one in the one-modulo-four case.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem quadraticIntegerBasisOfModFourEqOne_apply_zero
    (L : Type u) [Field L] [NumberField L] [Algebra.IsQuadraticExtension ℚ L]
    (d : ℤ) (hd : Squarefree d.natAbs) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ))
    (hGenerate : IntermediateField.adjoin ℚ ({α} : Set L) = ⊤) (hMod : d % 4 = 1) :
    quadraticIntegerBasisOfModFourEqOne L d hd α hSquare hGenerate hMod 0 = 1
ClassFieldTower.Sawin.quadraticIntegerBasisOfModFourEqOne_apply_one

The second basis vector is the integral half-integer generator.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

open scoped NumberField
open NumberField
universe u
namespace ClassFieldTower.Sawin
theorem quadraticIntegerBasisOfModFourEqOne_apply_one
    (L : Type u) [Field L] [NumberField L] [Algebra.IsQuadraticExtension ℚ L]
    (d : ℤ) (hd : Squarefree d.natAbs) (α : L)
    (hSquare : α ^ 2 = algebraMap ℚ L (d : ℚ))
    (hGenerate : IntermediateField.adjoin ℚ ({α} : Set L) = ⊤) (hMod : d % 4 = 1) :
    quadraticIntegerBasisOfModFourEqOne L d hd α hSquare hGenerate hMod 1 =
      quadraticHalfIntegerGenerator L d α hSquare hMod