mathlib3 documentation

ring_theory.dedekind_domain.ideal

Dedekind domains and ideals #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

In this file, we show a ring is a Dedekind domain iff all fractional ideals are invertible. Then we prove some results on the unique factorization monoid structure of the ideals.

Main definitions #

Main results: #

Implementation notes #

The definitions that involve a field of fractions choose a canonical field of fractions, but are independent of that choice. The ..._iff lemmas express this independence.

Often, definitions assume that Dedekind domains are not fields. We found it more practical to add a (h : ¬ is_field A) assumption whenever this is explicitly needed.

References #

Tags #

dedekind domain, dedekind ring

@[protected, instance]
noncomputable def fractional_ideal.has_inv (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] :
Equations
theorem fractional_ideal.inv_eq (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {I : fractional_ideal (non_zero_divisors R₁) K} :
I⁻¹ = 1 / I
theorem fractional_ideal.inv_zero' (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] :
0⁻¹ = 0
theorem fractional_ideal.inv_nonzero (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {J : fractional_ideal (non_zero_divisors R₁) K} (h : J ≠ 0) :
J⁻¹ = ⟨↑1 / ↑J, _⟩
theorem fractional_ideal.coe_inv_of_nonzero (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {J : fractional_ideal (non_zero_divisors R₁) K} (h : J ≠ 0) :
theorem fractional_ideal.mem_inv_iff {K : Type u_3} [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {I : fractional_ideal (non_zero_divisors R₁) K} (hI : I ≠ 0) {x : K} :
x ∈ I⁻¹ ↔ ∀ (y : K), y ∈ I → x * y ∈ 1
theorem fractional_ideal.inv_anti_mono {K : Type u_3} [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {I J : fractional_ideal (non_zero_divisors R₁) K} (hI : I ≠ 0) (hJ : J ≠ 0) (hIJ : I ≤ J) :
theorem fractional_ideal.le_self_mul_inv {K : Type u_3} [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {I : fractional_ideal (non_zero_divisors R₁) K} (hI : I ≤ 1) :
I ≤ I * I⁻¹
theorem fractional_ideal.coe_ideal_le_self_mul_inv (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] (I : ideal R₁) :
theorem fractional_ideal.right_inverse_eq (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] (I J : fractional_ideal (non_zero_divisors R₁) K) (h : I * J = 1) :
J = I⁻¹

I⁻¹ is the inverse of I if I has an inverse.

theorem fractional_ideal.mul_inv_cancel_iff (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {I : fractional_ideal (non_zero_divisors R₁) K} :
I * I⁻¹ = 1 ↔ ∃ (J : fractional_ideal (non_zero_divisors R₁) K), I * J = 1
theorem fractional_ideal.mul_inv_cancel_iff_is_unit (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {I : fractional_ideal (non_zero_divisors R₁) K} :
@[simp]
theorem fractional_ideal.map_inv (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {K' : Type u_5} [field K'] [algebra R₁ K'] [is_fraction_ring R₁ K'] (I : fractional_ideal (non_zero_divisors R₁) K) (h : K ≃ₐ[R₁] K') :
theorem fractional_ideal.coe_ideal_span_singleton_div_self (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {x : R₁} (hx : x ≠ 0) :
theorem fractional_ideal.coe_ideal_span_singleton_mul_inv (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {x : R₁} (hx : x ≠ 0) :
theorem fractional_ideal.coe_ideal_span_singleton_inv_mul (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] {x : R₁} (hx : x ≠ 0) :
theorem fractional_ideal.invertible_of_principal (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] (I : fractional_ideal (non_zero_divisors R₁) K) [↑I.is_principal] (h : I ≠ 0) :
I * I⁻¹ = 1
theorem fractional_ideal.is_principal_inv (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] (I : fractional_ideal (non_zero_divisors R₁) K) [↑I.is_principal] (h : I ≠ 0) :
@[protected, instance]
noncomputable def fractional_ideal.inv_one_class (K : Type u_3) [field K] {R₁ : Type u_4} [comm_ring R₁] [is_domain R₁] [algebra R₁ K] [is_fraction_ring R₁ K] :
Equations
def is_dedekind_domain_inv (A : Type u_2) [comm_ring A] [is_domain A] :
Prop

A Dedekind domain is an integral domain such that every fractional ideal has an inverse.

This is equivalent to is_dedekind_domain. In particular we provide a fractional_ideal.comm_group_with_zero instance, assuming is_dedekind_domain A, which implies is_dedekind_domain_inv. For integral ideals, is_dedekind_domain(_inv) implies only ideal.cancel_comm_monoid_with_zero.

Equations
theorem is_dedekind_domain_inv.mul_inv_eq_one {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] (h : is_dedekind_domain_inv A) {I : fractional_ideal (non_zero_divisors A) K} (hI : I ≠ 0) :
I * I⁻¹ = 1
theorem is_dedekind_domain_inv.inv_mul_eq_one {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] (h : is_dedekind_domain_inv A) {I : fractional_ideal (non_zero_divisors A) K} (hI : I ≠ 0) :
I⁻¹ * I = 1
@[protected]
theorem is_dedekind_domain_inv.is_unit {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] (h : is_dedekind_domain_inv A) {I : fractional_ideal (non_zero_divisors A) K} (hI : I ≠ 0) :

Showing one side of the equivalence between the definitions is_dedekind_domain_inv and is_dedekind_domain of Dedekind domains.

Specialization of exists_prime_spectrum_prod_le_and_ne_bot_of_domain to Dedekind domains: Let I : ideal A be a nonzero ideal, where A is a Dedekind domain that is not a field. Then exists_prime_spectrum_prod_le_and_ne_bot_of_domain states we can find a product of prime ideals that is contained within I. This lemma extends that result by making the product minimal: let M be a maximal ideal that contains I, then the product including M is contained within I and the product excluding M is not contained within I.

theorem fractional_ideal.exists_not_mem_one_of_ne_bot {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] [is_dedekind_domain A] (hNF : ¬is_field A) {I : ideal A} (hI0 : I ≠ ⊥) (hI1 : I ≠ ⊤) :
∃ (x : K), x ∈ (↑I)⁻¹ ∧ x ∉ 1
theorem fractional_ideal.one_mem_inv_coe_ideal {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] {I : ideal A} (hI : I ≠ ⊥) :
theorem fractional_ideal.mul_inv_cancel_of_le_one {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] [h : is_dedekind_domain A] {I : ideal A} (hI0 : I ≠ ⊥) (hI : (↑I * (↑I)⁻¹)⁻¹ ≤ 1) :
↑I * (↑I)⁻¹ = 1
theorem fractional_ideal.coe_ideal_mul_inv {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] [h : is_dedekind_domain A] (I : ideal A) (hI0 : I ≠ ⊥) :
↑I * (↑I)⁻¹ = 1

Nonzero integral ideals in a Dedekind domain are invertible.

We will use this to show that nonzero fractional ideals are invertible, and finally conclude that fractional ideals in a Dedekind domain form a group with zero.

@[protected]
theorem fractional_ideal.mul_inv_cancel {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] [is_dedekind_domain A] {I : fractional_ideal (non_zero_divisors A) K} (hne : I ≠ 0) :
I * I⁻¹ = 1

Nonzero fractional ideals in a Dedekind domain are units.

This is also available as _root_.mul_inv_cancel, using the comm_group_with_zero instance defined below.

theorem fractional_ideal.mul_right_le_iff {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] [is_dedekind_domain A] {J : fractional_ideal (non_zero_divisors A) K} (hJ : J ≠ 0) {I I' : fractional_ideal (non_zero_divisors A) K} :
I * J ≤ I' * J ↔ I ≤ I'
theorem fractional_ideal.mul_left_le_iff {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] [is_dedekind_domain A] {J : fractional_ideal (non_zero_divisors A) K} (hJ : J ≠ 0) {I I' : fractional_ideal (non_zero_divisors A) K} :
J * I ≤ J * I' ↔ I ≤ I'
@[protected]
theorem fractional_ideal.div_eq_mul_inv {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [algebra A K] [is_fraction_ring A K] [is_dedekind_domain A] (I J : fractional_ideal (non_zero_divisors A) K) :
I / J = I * J⁻¹

This is also available as _root_.div_eq_mul_inv, using the comm_group_with_zero instance defined below.

is_dedekind_domain and is_dedekind_domain_inv are equivalent ways to express that an integral domain is a Dedekind domain.

@[protected, instance]

Fractional ideals have cancellative multiplication in a Dedekind domain.

Although this instance is a direct consequence of the instance fractional_ideal.comm_group_with_zero, we define this instance to provide a computable alternative.

Equations
@[protected, instance]
theorem ideal.dvd_iff_le {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {I J : ideal A} :
I ∣ J ↔ J ≤ I

For ideals in a Dedekind domain, to divide is to contain.

theorem ideal.dvd_not_unit_iff_lt {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {I J : ideal A} :
@[protected, instance]
@[simp]
theorem ideal.dvd_span_singleton {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {I : ideal A} {x : A} :
I ∣ ideal.span {x} ↔ x ∈ I
theorem ideal.is_prime_of_prime {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {P : ideal A} (h : prime P) :
theorem ideal.prime_of_is_prime {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {P : ideal A} (hP : P ≠ ⊥) (h : P.is_prime) :
theorem ideal.prime_iff_is_prime {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {P : ideal A} (hP : P ≠ ⊥) :

In a Dedekind domain, the (nonzero) prime elements of the monoid with zero ideal A are exactly the prime ideals.

In a Dedekind domain, the the prime ideals are the zero ideal together with the prime elements of the monoid with zero ideal A.

theorem ideal.strict_anti_pow {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] (I : ideal A) (hI0 : I ≠ ⊥) (hI1 : I ≠ ⊤) :
theorem ideal.pow_lt_self {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] (I : ideal A) (hI0 : I ≠ ⊥) (hI1 : I ≠ ⊤) (e : ℕ) (he : 2 ≤ e) :
I ^ e < I
theorem ideal.exists_mem_pow_not_mem_pow_succ {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] (I : ideal A) (hI0 : I ≠ ⊥) (hI1 : I ≠ ⊤) (e : ℕ) :
∃ (x : A) (H : x ∈ I ^ e), x ∉ I ^ (e + 1)
theorem ideal.eq_prime_pow_of_succ_lt_of_le {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {P I : ideal A} [P_prime : P.is_prime] (hP : P ≠ ⊥) {i : ℕ} (hlt : P ^ (i + 1) < I) (hle : I ≤ P ^ i) :
I = P ^ i
theorem ideal.pow_succ_lt_pow {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {P : ideal A} [P_prime : P.is_prime] (hP : P ≠ ⊥) (i : ℕ) :
P ^ (i + 1) < P ^ i
theorem associates.le_singleton_iff {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] (x : A) (n : ℕ) (I : ideal A) :
theorem ideal.exist_integer_multiples_not_mem {A : Type u_2} {K : Type u_3} [comm_ring A] [field K] [is_domain A] [is_dedekind_domain A] [algebra A K] [is_fraction_ring A K] {J : ideal A} (hJ : J ≠ ⊤) {ι : Type u_1} (s : finset ι) (f : ι → K) {j : ι} (hjs : j ∈ s) (hjf : f j ≠ 0) :
∃ (a : K), (∀ (i : ι), i ∈ s → is_localization.is_integer A (a * f i)) ∧ ∃ (i : ι) (H : i ∈ s), a * f i ∉ ↑J

Strengthening of is_localization.exist_integer_multiples: Let J ≠ ⊤ be an ideal in a Dedekind domain A, and f ≠ 0 a finite collection of elements of K = Frac(A), then we can multiply the elements of f by some a : K to find a collection of elements of A that is not completely contained in J.

GCD and LCM of ideals in a Dedekind domain #

We show that the gcd of two ideals in a Dedekind domain is just their supremum, and the lcm is their infimum, and use this to instantiate normalized_gcd_monoid (ideal A).

@[simp]
theorem ideal.sup_mul_inf {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] (I J : ideal A) :
(I ⊔ J) * (I ⊓ J) = I * J
@[protected, instance]

Ideals in a Dedekind domain have gcd and lcm operators that (trivially) are compatible with the normalization operator.

Equations
@[simp]
theorem ideal.gcd_eq_sup {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] (I J : ideal A) :
@[simp]
theorem ideal.lcm_eq_inf {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] (I J : ideal A) :
theorem ideal.inf_eq_mul_of_coprime {A : Type u_2} [comm_ring A] [is_domain A] [is_dedekind_domain A] {I J : ideal A} (coprime : I ⊔ J = ⊤) :
I ⊓ J = I * J
theorem irreducible_pow_sup_of_le {T : Type u_4} [comm_ring T] [is_domain T] [is_dedekind_domain T] {I J : ideal T} (hJ : irreducible J) (n : ℕ) (hn : ↑n ≤ multiplicity J I) :
J ^ n ⊔ I = J ^ n
theorem irreducible_pow_sup_of_ge {T : Type u_4} [comm_ring T] [is_domain T] [is_dedekind_domain T] {I J : ideal T} (hI : I ≠ ⊥) (hJ : irreducible J) (n : ℕ) (hn : multiplicity J I ≤ ↑n) :
J ^ n ⊔ I = J ^ (multiplicity J I).get _

Height one spectrum of a Dedekind domain #

If R is a Dedekind domain of Krull dimension 1, the maximal ideals of R are exactly its nonzero prime ideals. We define height_one_spectrum and provide lemmas to recover the facts that prime ideals of height one are prime and irreducible.

theorem is_dedekind_domain.height_one_spectrum.ext {R : Type u_1} {_inst_1 : comm_ring R} {_inst_5 : is_domain R} {_inst_6 : is_dedekind_domain R} (x y : is_dedekind_domain.height_one_spectrum R) (h : x.as_ideal = y.as_ideal) :
x = y
@[nolint, ext]

The height one prime spectrum of a Dedekind domain R is the type of nonzero prime ideals of R. Note that this equals the maximal spectrum if R has Krull dimension 1.

Instances for is_dedekind_domain.height_one_spectrum
  • is_dedekind_domain.height_one_spectrum.has_sizeof_inst

A Dedekind domain is equal to the intersection of its localizations at all its height one non-zero prime ideals viewed as subalgebras of its field of fractions.

def ideal_factors_fun_of_quot_hom {R : Type u_1} {A : Type u_2} [comm_ring R] [comm_ring A] [is_domain A] [is_dedekind_domain A] {I : ideal R} {J : ideal A} {f : R ⧸ I →+* A ⧸ J} (hf : function.surjective ⇑f) :
↥{p : ideal R | p ∣ I} →o ↥{p : ideal A | p ∣ J}

The map from ideals of R dividing I to the ideals of A dividing J induced by a homomorphism f : R/I →+* A/J

Equations
def ideal_factors_equiv_of_quot_equiv {R : Type u_1} {A : Type u_2} [comm_ring R] [comm_ring A] [is_domain A] [is_dedekind_domain A] {I : ideal R} {J : ideal A} [is_domain R] [is_dedekind_domain R] (f : R ⧸ I ≃+* A ⧸ J) :
↥{p : ideal R | p ∣ I} ≃o ↥{p : ideal A | p ∣ J}

The bijection between ideals of R dividing I and the ideals of A dividing J induced by an isomorphism f : R/I ≅ A/J.

Equations
theorem ideal_factors_equiv_of_quot_equiv_is_dvd_iso {R : Type u_1} {A : Type u_2} [comm_ring R] [comm_ring A] [is_domain A] [is_dedekind_domain A] {I : ideal R} {J : ideal A} [is_domain R] [is_dedekind_domain R] (f : R ⧸ I ≃+* A ⧸ J) {L M : ideal R} (hL : L ∣ I) (hM : M ∣ I) :

The bijection between the sets of normalized factors of I and J induced by a ring isomorphism f : R/I ≅ A/J.

Equations
theorem ring.dimension_le_one.prime_le_prime_iff_eq {R : Type u_1} [comm_ring R] (h : ring.dimension_le_one R) {P Q : ideal R} [hP : P.is_prime] [hQ : Q.is_prime] (hP0 : P ≠ ⊥) :
P ≤ Q ↔ P = Q
theorem ideal.coprime_of_no_prime_ge {R : Type u_1} [comm_ring R] {I J : ideal R} (h : ∀ (P : ideal R), I ≤ P → J ≤ P → ¬P.is_prime) :
I ⊔ J = ⊤
theorem ideal.is_prime.mul_mem_pow {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] (I : ideal R) [hI : I.is_prime] {a b : R} {n : ℕ} (h : a * b ∈ I ^ n) :
a ∈ I ∨ b ∈ I ^ n
theorem ideal.count_normalized_factors_eq {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {p x : ideal R} [hp : p.is_prime] {n : ℕ} (hle : x ≤ p ^ n) (hlt : ¬x ≤ p ^ (n + 1)) :
theorem ideal.le_mul_of_no_prime_factors {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {I J K : ideal R} (coprime : ∀ (P : ideal R), J ≤ P → K ≤ P → ¬P.is_prime) (hJ : I ≤ J) (hK : I ≤ K) :
I ≤ J * K
theorem ideal.le_of_pow_le_prime {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {I P : ideal R} [hP : P.is_prime] {n : ℕ} (h : I ^ n ≤ P) :
I ≤ P
theorem ideal.pow_le_prime_iff {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {I P : ideal R} [hP : P.is_prime] {n : ℕ} (hn : n ≠ 0) :
I ^ n ≤ P ↔ I ≤ P
theorem ideal.prod_le_prime {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {ι : Type u_2} {s : finset ι} {f : ι → ideal R} {P : ideal R} [hP : P.is_prime] :
s.prod (λ (i : ι), f i) ≤ P ↔ ∃ (i : ι) (H : i ∈ s), f i ≤ P
theorem is_dedekind_domain.inf_prime_pow_eq_prod {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {ι : Type u_2} (s : finset ι) (f : ι → ideal R) (e : ι → ℕ) (prime : ∀ (i : ι), i ∈ s → _root_.prime (f i)) (coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → f i ≠ f j) :
s.inf (λ (i : ι), f i ^ e i) = s.prod (λ (i : ι), f i ^ e i)

The intersection of distinct prime powers in a Dedekind domain is the product of these prime powers.

noncomputable def is_dedekind_domain.quotient_equiv_pi_of_prod_eq {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {ι : Type u_2} [fintype ι] (I : ideal R) (P : ι → ideal R) (e : ι → ℕ) (prime : ∀ (i : ι), _root_.prime (P i)) (coprime : ∀ (i j : ι), i ≠ j → P i ≠ P j) (prod_eq : finset.univ.prod (λ (i : ι), P i ^ e i) = I) :
R ⧸ I ≃+* Π (i : ι), R ⧸ P i ^ e i

Chinese remainder theorem for a Dedekind domain: if the ideal I factors as ∏ i, P i ^ e i, then R ⧸ I factors as Π i, R ⧸ (P i ^ e i).

Equations

Chinese remainder theorem for a Dedekind domain: R ⧸ I factors as Π i, R ⧸ (P i ^ e i), where P i ranges over the prime factors of I and e i over the multiplicities.

Equations
noncomputable def ideal.quotient_mul_equiv_quotient_prod {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] (I J : ideal R) (coprime : I ⊔ J = ⊤) :
R ⧸ I * J ≃+* (R ⧸ I) × R ⧸ J

Chinese remainder theorem, specialized to two ideals.

Equations
noncomputable def is_dedekind_domain.quotient_equiv_pi_of_finset_prod_eq {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {ι : Type u_2} {s : finset ι} (I : ideal R) (P : ι → ideal R) (e : ι → ℕ) (prime : ∀ (i : ι), i ∈ s → _root_.prime (P i)) (coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → P i ≠ P j) (prod_eq : s.prod (λ (i : ι), P i ^ e i) = I) :
R ⧸ I ≃+* Π (i : ↥s), R ⧸ P ↑i ^ e ↑i

Chinese remainder theorem for a Dedekind domain: if the ideal I factors as ∏ i in s, P i ^ e i, then R ⧸ I factors as Π (i : s), R ⧸ (P i ^ e i).

This is a version of is_dedekind_domain.quotient_equiv_pi_of_prod_eq where we restrict the product to a finite subset s of a potentially infinite indexing type ι.

Equations
theorem is_dedekind_domain.exists_representative_mod_finset {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {ι : Type u_2} {s : finset ι} (P : ι → ideal R) (e : ι → ℕ) (prime : ∀ (i : ι), i ∈ s → _root_.prime (P i)) (coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → P i ≠ P j) (x : Π (i : ↥s), R ⧸ P ↑i ^ e ↑i) :
∃ (y : R), ∀ (i : ι) (hi : i ∈ s), ⇑(ideal.quotient.mk (P i ^ e i)) y = x ⟨i, hi⟩

Corollary of the Chinese remainder theorem: given elements x i : R / P i ^ e i, we can choose a representative y : R such that y ≡ x i (mod P i ^ e i).

theorem is_dedekind_domain.exists_forall_sub_mem_ideal {R : Type u_1} [comm_ring R] [is_domain R] [is_dedekind_domain R] {ι : Type u_2} {s : finset ι} (P : ι → ideal R) (e : ι → ℕ) (prime : ∀ (i : ι), i ∈ s → _root_.prime (P i)) (coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → P i ≠ P j) (x : ↥s → R) :
∃ (y : R), ∀ (i : ι) (hi : i ∈ s), y - x ⟨i, hi⟩ ∈ P i ^ e i

Corollary of the Chinese remainder theorem: given elements x i : R, we can choose a representative y : R such that y - x i ∈ P i ^ e i.

The bijection between the (normalized) prime factors of r and the (normalized) prime factors of span {r}

Equations

The bijection normalized_factors_equiv_span_normalized_factors.symm between the set of prime factors of the ideal ⟨r⟩ and the set of prime factors of r preserves multiplicities.