HepLean Documentation

Mathlib.RingTheory.Ideal.Norm.AbsNorm

Ideal norms #

This file defines the absolute ideal norm Ideal.absNorm (I : Ideal R) : ℕ as the cardinality of the quotient R ⧸ I (setting it to 0 if the cardinality is infinite).

Main definitions #

Main results #

noncomputable def Submodule.cardQuot {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (S : Submodule R M) :

The cardinality of (M ⧸ S), if (M ⧸ S) is finite, and 0 otherwise. This is used to define the absolute ideal norm Ideal.absNorm.

Equations
  • S.cardQuot = S.toAddSubgroup.index
Instances For
    theorem Submodule.cardQuot_apply {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (S : Submodule R M) :
    S.cardQuot = Nat.card (M S)
    @[simp]
    theorem Submodule.cardQuot_bot (R : Type u_1) (M : Type u_2) [Ring R] [AddCommGroup M] [Module R M] [Infinite M] :
    .cardQuot = 0
    @[simp]
    theorem Submodule.cardQuot_top (R : Type u_1) (M : Type u_2) [Ring R] [AddCommGroup M] [Module R M] :
    .cardQuot = 1
    @[simp]
    theorem Submodule.cardQuot_eq_one_iff {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] {P : Submodule R M} :
    P.cardQuot = 1 P =

    Multiplicity of the ideal norm, for coprime ideals. This is essentially just a repackaging of the Chinese Remainder Theorem.

    theorem Ideal.mul_add_mem_pow_succ_inj {S : Type u_1} [CommRing S] (P : Ideal S) {i : } (a d d' e e' : S) (a_mem : a P ^ i) (e_mem : e P ^ (i + 1)) (e'_mem : e' P ^ (i + 1)) (h : d - d' P) :
    a * d + e - (a * d' + e') P ^ (i + 1)

    If the d from Ideal.exists_mul_add_mem_pow_succ is unique, up to P, then so are the cs, up to P ^ (i + 1). Inspired by [Neukirch], proposition 6.1

    theorem Ideal.exists_mul_add_mem_pow_succ {S : Type u_1} [CommRing S] {P : Ideal S} [P_prime : P.IsPrime] [IsDedekindDomain S] (hP : P ) {i : } (a c : S) (a_mem : a P ^ i) (a_not_mem : aP ^ (i + 1)) (c_mem : c P ^ i) :
    ∃ (d : S), eP ^ (i + 1), a * d + e = c

    If a ∈ P^i \ P^(i+1) and c ∈ P^i, then a * d + e = c for e ∈ P^(i+1). Ideal.mul_add_mem_pow_succ_unique shows the choice of d is unique, up to P. Inspired by [Neukirch], proposition 6.1

    theorem Ideal.mem_prime_of_mul_mem_pow {S : Type u_1} [CommRing S] [IsDedekindDomain S] {P : Ideal S} [P_prime : P.IsPrime] (hP : P ) {i : } {a b : S} (a_not_mem : aP ^ (i + 1)) (ab_mem : a * b P ^ (i + 1)) :
    b P
    theorem Ideal.mul_add_mem_pow_succ_unique {S : Type u_1} [CommRing S] {P : Ideal S} [P_prime : P.IsPrime] [IsDedekindDomain S] (hP : P ) {i : } (a d d' e e' : S) (a_not_mem : aP ^ (i + 1)) (e_mem : e P ^ (i + 1)) (e'_mem : e' P ^ (i + 1)) (h : a * d + e - (a * d' + e') P ^ (i + 1)) :
    d - d' P

    The choice of d in Ideal.exists_mul_add_mem_pow_succ is unique, up to P. Inspired by [Neukirch], proposition 6.1

    theorem cardQuot_pow_of_prime {S : Type u_1} [CommRing S] {P : Ideal S} [P_prime : P.IsPrime] [IsDedekindDomain S] (hP : P ) {i : } :

    Multiplicity of the ideal norm, for powers of prime ideals.

    Multiplicativity of the ideal norm in number rings.

    noncomputable def Ideal.absNorm {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] :

    The absolute norm of the ideal I : Ideal R is the cardinality of the quotient R ⧸ I.

    Equations
    • Ideal.absNorm = { toFun := Submodule.cardQuot, map_zero' := , map_one' := , map_mul' := }
    Instances For
      theorem Ideal.absNorm_apply {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] (I : Ideal S) :
      Ideal.absNorm I = Submodule.cardQuot I
      @[simp]
      theorem Ideal.absNorm_bot {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] :
      Ideal.absNorm = 0
      @[simp]
      theorem Ideal.absNorm_top {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] :
      Ideal.absNorm = 1
      @[simp]
      theorem Ideal.absNorm_eq_one_iff {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] {I : Ideal S} :
      Ideal.absNorm I = 1 I =
      theorem Ideal.absNorm_ne_zero_iff {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] (I : Ideal S) :
      Ideal.absNorm I 0 Finite (S I)
      theorem Ideal.absNorm_dvd_absNorm_of_le {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] {I J : Ideal S} (h : J I) :
      Ideal.absNorm I Ideal.absNorm J
      theorem Ideal.isPrime_of_irreducible_absNorm {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] {I : Ideal S} (hI : Irreducible (Ideal.absNorm I)) :
      I.IsPrime
      theorem Ideal.prime_of_irreducible_absNorm_span {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] {a : S} (ha : a 0) (hI : Irreducible (Ideal.absNorm (Ideal.span {a}))) :
      theorem Ideal.absNorm_mem {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] (I : Ideal S) :
      (Ideal.absNorm I) I
      theorem Ideal.span_singleton_absNorm_le {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] (I : Ideal S) :
      Ideal.span {(Ideal.absNorm I)} I
      theorem Ideal.span_singleton_absNorm {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] {I : Ideal S} (hI : Nat.Prime (Ideal.absNorm I)) :
      Ideal.span {(Ideal.absNorm I)} = Ideal.comap (algebraMap S) I
      theorem Ideal.natAbs_det_equiv {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] (I : Ideal S) {E : Type u_2} [EquivLike E S I] [AddEquivClass E S I] (e : E) :
      (LinearMap.det ( (Submodule.subtype I) ∘ₗ (↑e).toIntLinearMap)).natAbs = Ideal.absNorm I

      Let e : S ≃ I be an additive isomorphism (therefore a -linear equiv). Then an alternative way to compute the norm of I is given by taking the determinant of e. See natAbs_det_basis_change for a more familiar formulation of this result.

      theorem Ideal.natAbs_det_basis_change {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] {ι : Type u_2} [Fintype ι] [DecidableEq ι] (b : Basis ι S) (I : Ideal S) (bI : Basis ι I) :
      (b.det (Subtype.val bI)).natAbs = Ideal.absNorm I

      Let b be a basis for S over and bI a basis for I over of the same dimension. Then an alternative way to compute the norm of I is given by taking the determinant of bI over b.

      @[simp]
      theorem Ideal.absNorm_span_singleton {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] (r : S) :
      Ideal.absNorm (Ideal.span {r}) = ((Algebra.norm ) r).natAbs
      theorem Ideal.absNorm_dvd_norm_of_mem {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] {I : Ideal S} {x : S} (h : x I) :
      (Ideal.absNorm I) (Algebra.norm ) x
      @[simp]
      theorem Ideal.absNorm_span_insert {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] (r : S) (s : Set S) :
      Ideal.absNorm (Ideal.span (insert r s)) gcd (Ideal.absNorm (Ideal.span s)) ((Algebra.norm ) r).natAbs
      theorem Ideal.absNorm_eq_zero_iff {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] {I : Ideal S} :
      Ideal.absNorm I = 0 I =
      theorem Ideal.finite_setOf_absNorm_eq {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] [CharZero S] (n : ) :
      {I : Ideal S | Ideal.absNorm I = n}.Finite
      theorem Ideal.finite_setOf_absNorm_le {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] [CharZero S] (n : ) :
      {I : Ideal S | Ideal.absNorm I n}.Finite
      theorem Ideal.card_norm_le_eq_card_norm_le_add_one {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] (n : ) [CharZero S] :
      Nat.card { I : Ideal S // Ideal.absNorm I n } = Nat.card { I : (nonZeroDivisors (Ideal S)) // Ideal.absNorm I n } + 1
      theorem Ideal.norm_dvd_iff {S : Type u_1} [CommRing S] [Nontrivial S] [IsDedekindDomain S] [Module.Free S] [Module.Finite S] {x : S} (hx : Prime ((Algebra.norm ) x)) {y : } :
      (Algebra.norm ) x y x y