Documentation

LeanPool.AndersonConjecture.Jensen.CloseUp.GcdComplexity

GCD complexity measure #

Defines the GCD complexity of a finite set of elements in a UFD: the sum of the lengths of their factorisations. This serves as the well-founded measure for the inductive step of the close-up construction when n >= 3 generators. Dividing all generators by a common prime strictly decreases the complexity.

noncomputable def gcdComplexity {T : Type u_1} [CommRing T] {R : Subring T} [UniqueFactorizationMonoid R] (s : Finset R) :

"GCD complexity" of a finite set s in a UFD subring R: the sum over x ∈ s of the number of (normalized) irreducible factors of x. Used as a termination measure in the close-up construction.

Equations
Instances For
    noncomputable def gcdComplexityNsub {T : Type u_1} [CommRing T] [IsLocalRing T] [IsNoetherianRing T] [IsDomain T] (R : NSubring T) (s : Finset R.carrier) :

    gcdComplexity for a finite set in an N-subring, supplying the domain and UFD instances from the N-subring structure.

    Equations
    Instances For
      theorem span_eq_mul_span_image_div {R₀ : Type u_2} [CommRing R₀] [DecidableEq R₀] (p : R₀) (s : Finset R₀) (_hp_dvd : xs, p x) (div_f : R₀R₀) (hdiv_spec : xs, x = p * div_f x) :
      theorem prime_mul_span_insert_le {R₀ : Type u_2} [CommRing R₀] [DecidableEq R₀] (q' a : R₀) (rest : Finset R₀) (div_f : R₀R₀) (hdiv : xrest, x = q' * div_f x) :
      Ideal.span {q'} * Ideal.span (insert a (Finset.image div_f rest)) Ideal.span (insert a rest)
      theorem nzd_element_in_span_prime {T : Type u_1} [CommRing T] [IsLocalRing T] [IsNoetherianRing T] [IsDomain T] (R : NSubring T) (q a : R.carrier) (hq_prime : Prime q) (hqa : ¬q a) (_hM_not_assoc : ∀ (r : T), r 0IsLocalRing.maximalIdeal TassociatedPrimes T (T Ideal.span {r})) (t_val : T) (h_at_mem : a * t_val Ideal.span {q}) :
      ∃ (t' : T), t_val = q * t'
      theorem gcdComplexity_div_le {T : Type u_1} [CommRing T] [IsDomain T] {R₀ : Subring T} [UniqueFactorizationMonoid R₀] [DecidableEq R₀] (q : R₀) (hq : Prime q) (s : Finset R₀) (_hq_dvd : xs, q x) (div_f : R₀R₀) (hdiv : xs, x = q * div_f x) (hinj : Set.InjOn div_f s) :