Module

QuadraticClosure.lean

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

Quadratic fields inside the algebraic closure of ℚ

A chosen square root of a nonsquare rational number generates an actual finite Galois intermediate field of degree two. Its internal generator, square relation, and generation theorem let later arithmetic constructions supply reality and ramification conditions without assuming an extension.

Imports12
  • Mathlib.Algebra.Group.Even
  • Mathlib.Algebra.Polynomial.Monic
  • Mathlib.Algebra.Polynomial.Degree.Operations
  • Mathlib.FieldTheory.Galois.Basic
  • Mathlib.FieldTheory.Galois.GaloisClosure
  • Mathlib.FieldTheory.IntermediateField.Adjoin.Algebra
  • Mathlib.FieldTheory.IntermediateField.Adjoin.Basic
  • Mathlib.FieldTheory.IsAlgClosed.AlgebraicClosure
  • Mathlib.FieldTheory.IsAlgClosed.Basic
  • Mathlib.FieldTheory.KummerPolynomial
  • Mathlib.FieldTheory.Minpoly.Field
  • Mathlib.RingTheory.PowerBasis
Imported by4

Declarations

ClassFieldTower.Sawin.quadraticClosureRoot

A square root of a rational number in the fixed algebraic closure.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
def quadraticClosureRoot (d : ℚ) : AlgebraicClosure ℚ
ClassFieldTower.Sawin.quadraticClosureRoot_sq

The chosen element has the prescribed square.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem quadraticClosureRoot_sq (d : ℚ) :
    quadraticClosureRoot d ^ 2 = algebraMap ℚ (AlgebraicClosure ℚ) d
ClassFieldTower.Sawin.quadraticClosureRoot_isIntegral
Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem quadraticClosureRoot_isIntegral (d : ℚ) :
    IsIntegral ℚ (quadraticClosureRoot d)
ClassFieldTower.Sawin.minpoly_quadraticClosureRoot

Nonsquareness identifies the minimal polynomial of the chosen root.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem minpoly_quadraticClosureRoot (d : ℚ) (hd : ¬ IsSquare d) :
    minpoly ℚ (quadraticClosureRoot d) = X ^ 2 - C d
ClassFieldTower.Sawin.finrank_adjoin_quadraticClosureRoot
Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem finrank_adjoin_quadraticClosureRoot (d : ℚ) (hd : ¬ IsSquare d) :
    Module.finrank ℚ
      (IntermediateField.adjoin ℚ ({quadraticClosureRoot d} : Set (AlgebraicClosure ℚ))) = 2
ClassFieldTower.Sawin.quadraticClosure

The quadratic Galois subfield of the fixed algebraic closure obtained by adjoining a square root of a nonsquare rational number.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
def quadraticClosure (d : ℚ) (hd : ¬ IsSquare d) :
    FiniteGaloisIntermediateField ℚ (AlgebraicClosure ℚ) where
  toIntermediateField := IntermediateField.adjoin ℚ {quadraticClosureRoot d}
  finiteDimensional := IntermediateField.adjoin.finiteDimensional
    (quadraticClosureRoot_isIntegral d)
  isGalois := by
    let : Algebra.IsQuadraticExtension ℚ
        (IntermediateField.adjoin ℚ ({quadraticClosureRoot d} : Set (AlgebraicClosure ℚ))) :=
      { finrank_eq_two' := finrank_adjoin_quadraticClosureRoot d hd }
    exact Algebra.IsQuadraticExtension.isGalois ℚ
      (IntermediateField.adjoin ℚ ({quadraticClosureRoot d} : Set (AlgebraicClosure ℚ)))
ClassFieldTower.Sawin.quadraticClosure_toIntermediateField

The underlying intermediate field is the field generated by the chosen root.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem quadraticClosure_toIntermediateField (d : ℚ) (hd : ¬ IsSquare d) :
    (quadraticClosure d hd).toIntermediateField =
      IntermediateField.adjoin ℚ ({quadraticClosureRoot d} : Set (AlgebraicClosure ℚ))
ClassFieldTower.Sawin.quadraticClosure_finrank

The constructed field has degree two over ℚ.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem quadraticClosure_finrank (d : ℚ) (hd : ¬ IsSquare d) :
    Module.finrank ℚ (quadraticClosure d hd) = 2
ClassFieldTower.Sawin.quadraticClosure_isQuadraticExtension

The constructed field is a quadratic extension, for use at arithmetic boundaries requiring Mathlib's quadratic-extension class.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem quadraticClosure_isQuadraticExtension (d : ℚ) (hd : ¬ IsSquare d) :
    Algebra.IsQuadraticExtension ℚ (quadraticClosure d hd) where
  finrank_eq_two' := quadraticClosure_finrank d hd
ClassFieldTower.Sawin.quadraticClosureGenerator

The chosen square root viewed inside its quadratic field.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
def quadraticClosureGenerator (d : ℚ) (hd : ¬ IsSquare d) :
    quadraticClosure d hd
ClassFieldTower.Sawin.quadraticClosureGenerator_sq

The internal generator satisfies the same square equation.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem quadraticClosureGenerator_sq (d : ℚ) (hd : ¬ IsSquare d) :
    quadraticClosureGenerator d hd ^ 2 = algebraMap ℚ (quadraticClosure d hd) d
ClassFieldTower.Sawin.quadraticClosureGenerator_adjoin

The internal square root generates the whole constructed field.

Source context 2 commands

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

open Polynomial
namespace ClassFieldTower.Sawin
theorem quadraticClosureGenerator_adjoin (d : ℚ) (hd : ¬ IsSquare d) :
    IntermediateField.adjoin ℚ
      ({quadraticClosureGenerator d hd} : Set (quadraticClosure d hd)) = ⊤