# Admissible absolute values on polynomials #

This file defines an admissible absolute value polynomial.card_pow_degree_is_admissible which we use to show the class number of the ring of integers of a function field is finite.

## Main results #

• polynomial.card_pow_degree_is_admissible shows card_pow_degree, mapping p : polynomial 𝔽_q to q ^ degree p, is admissible
theorem polynomial.exists_eq_polynomial {Fq : Type u_1} [field Fq] [fintype Fq] {d m : } (hm : ^ d m) (b : polynomial Fq) (hb : b.nat_degree d) (A : fin m.succ) (hA : ∀ (i : fin m.succ), (A i).degree < b.degree) :
∃ (i₀ i₁ : fin m.succ), i₀ i₁ A i₁ = A i₀

If A is a family of enough low-degree polynomials over a finite field, there is a pair of equal elements in A.

theorem polynomial.exists_approx_polynomial_aux {Fq : Type u_1} [field Fq] [fintype Fq] {d m : } (hm : ^ d m) (b : polynomial Fq) (A : fin m.succ) (hA : ∀ (i : fin m.succ), (A i).degree < b.degree) :
∃ (i₀ i₁ : fin m.succ), i₀ i₁ (A i₁ - A i₀).degree < (b.nat_degree - d)

If A is a family of enough low-degree polynomials over a finite field, there is a pair of elements in A (with different indices but not necessarily distinct), such that their difference has small degree.

theorem polynomial.exists_approx_polynomial {Fq : Type u_1} [field Fq] [fintype Fq] {b : polynomial Fq} (hb : b 0) {ε : } (hε : 0 < ε) (A : fin (fintype.card Fq ^ / ⌉₊).succ) :
∃ (i₀ i₁ : fin (fintype.card Fq ^ / ⌉₊).succ), i₀ i₁ (polynomial.card_pow_degree (A i₁ % b - A i₀ % b)) <

If A is a family of enough low-degree polynomials over a finite field, there is a pair of elements in A (with different indices but not necessarily distinct), such that the difference of their remainders is close together.

theorem polynomial.card_pow_degree_anti_archimedean {Fq : Type u_1} [field Fq] [fintype Fq] {x y z : polynomial Fq} {a : } (hxy : < a) (hyz : < a) :
< a

If x is close to y and y is close to z, then x and z are at least as close.

theorem polynomial.exists_partition_polynomial_aux {Fq : Type u_1} [field Fq] [fintype Fq] (n : ) {ε : } (hε : 0 < ε) {b : polynomial Fq} (hb : b 0) (A : fin n) :
∃ (t : fin nfin (fintype.card Fq ^ / ⌉₊)), ∀ (i₀ i₁ : fin n), t i₀ = t i₁ (polynomial.card_pow_degree (A i₁ % b - A i₀ % b)) <

A slightly stronger version of exists_partition on which we perform induction on n: for all ε > 0, we can partition the remainders of any family of polynomials A into equivalence classes, where the equivalence(!) relation is "closer than ε".

theorem polynomial.exists_partition_polynomial {Fq : Type u_1} [field Fq] [fintype Fq] (n : ) {ε : } (hε : 0 < ε) {b : polynomial Fq} (hb : b 0) (A : fin n) :
∃ (t : fin nfin (fintype.card Fq ^ / ⌉₊)), ∀ (i₀ i₁ : fin n), t i₀ = t i₁(polynomial.card_pow_degree (A i₁ % b - A i₀ % b)) <

For all ε > 0, we can partition the remainders of any family of polynomials A into classes, where all remainders in a class are close together.

noncomputable def polynomial.card_pow_degree_is_admissible {Fq : Type u_1} [field Fq] [fintype Fq] :

λ p, fintype.card Fq ^ degree p is an admissible absolute value. We set q ^ degree 0 = 0.

Equations