/- Copyright (c) 2021 Anne Baanen. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Anne Baanen ! This file was ported from Lean 3 source module number_theory.class_number.admissible_absolute_value ! leanprover-community/mathlib commit f7fc89d5d5ff1db2d1242c7bb0e9062ce47ef47c ! Please do not edit these lines, except to modify the commit id ! if you have ported upstream changes. -/ import Mathlib.Data.Real.Basic import Mathlib.Combinatorics.Pigeonhole import Mathlib.Algebra.Order.EuclideanAbsoluteValue /-! # Admissible absolute values This file defines a structure `AbsoluteValue.IsAdmissible` which we use to show the class number of the ring of integers of a global field is finite. ## Main definitions * `AbsoluteValue.IsAdmissible abv` states the absolute value `abv : R β β€` respects the Euclidean domain structure on `R`, and that a large enough set of elements of `R^n` contains a pair of elements whose remainders are pointwise close together. ## Main results * `AbsoluteValue.absIsAdmissible` shows the "standard" absolute value on `β€`, mapping negative `x` to `-x`, is admissible. * `Polynomial.cardPowDegreeIsAdmissible` shows `cardPowDegree`, mapping `p : Polynomial π½_q` to `q ^ degree p`, is admissible -/ local infixl:50 " βΊ " =>EuclideanDomain.r namespace AbsoluteValue variable {EuclideanDomain.r: {R : Type u} β [self : EuclideanDomain R] β R β R β PropR :R: Type ?u.8588Type _} [EuclideanDomainType _: Type (?u.20781+1)R] variable (R: Type ?u.8582abv :abv: AbsoluteValue R β€AbsoluteValueAbsoluteValue: (R : Type ?u.8595) β (S : Type ?u.8594) β [inst : Semiring R] β [inst : OrderedSemiring S] β Type (max?u.8595?u.8594)RR: Type ?u.8588β€) /-- An absolute value `R β β€` is admissible if it respects the Euclidean domain structure and a large enough set of elements in `R^n` will contain a pair of elements whose remainders are pointwise close together. -/ structureβ€: TypeIsAdmissible extendsIsAdmissible: {R : Type u_1} β [inst : EuclideanDomain R] β AbsoluteValue R β€ β TypeIsEuclideanIsEuclidean: {R : Type ?u.9033} β {S : Type ?u.9032} β [inst : EuclideanDomain R] β [inst_1 : OrderedSemiring S] β AbsoluteValue R S β Propabv where protectedabv: AbsoluteValue R β€card :card: {R : Type u_1} β [inst : EuclideanDomain R] β {abv : AbsoluteValue R β€} β IsAdmissible abv β β β ββ ββ: Typeβ /-- For all `Ξ΅ > 0` and finite families `A`, we can partition the remainders of `A` mod `b` into `abv.card Ξ΅` sets, such that all elements in each part of remainders are close together. -/β: Typeexists_partition' : β (exists_partition': β {R : Type u_1} [inst : EuclideanDomain R] {abv : AbsoluteValue R β€} (self : IsAdmissible abv) (n : β) {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin n β R), β t, β (iβ iβ : Fin n), t iβ = t iβ β β(βabv (A iβ % b - A iβ % b)) < βabv b β’ Ξ΅n :n: ββ) {β: TypeΞ΅ :Ξ΅: ββ} (β: Type_ :_: 0 < Ξ΅0 <0: ?m.9117Ξ΅) {Ξ΅: βb :b: RR} (R: Type ?u.8809_ :_: b β 0b βb: R0) (0: ?m.9172A : FinA: Fin n β Rn βn: βR), β t : FinR: Type ?u.8809n β Fin (cardn: βΞ΅), βΞ΅: βiβiβ: ?m.9396iβ, tiβ: ?m.9399iβ = tiβ: ?m.9396iβ β (iβ: ?m.9399abv (abv: AbsoluteValue R β€AA: Fin n β Riβ %iβ: ?m.9399b -b: RAA: Fin n β Riβ %iβ: ?m.9396b) :b: Rβ) <β: Typeabvabv: AbsoluteValue R β€b β’b: RΞ΅ #align absolute_value.is_admissibleΞ΅: βAbsoluteValue.IsAdmissible -- Porting note: no docstrings for IsAdmissible attribute [nolintAbsoluteValue.IsAdmissible: {R : Type u_1} β [inst : EuclideanDomain R] β AbsoluteValue R β€ β TypedocBlame]docBlame: Std.Tactic.Lint.LinterIsAdmissible.card namespace IsAdmissible variable {IsAdmissible.card: {R : Type u_1} β [inst : EuclideanDomain R] β {abv : AbsoluteValue R β€} β IsAdmissible abv β β β βabv} /-- For all `Ξ΅ > 0` and finite families `A`, we can partition the remainders of `A` mod `b` into `abv.card Ξ΅` sets, such that all elements in each part of remainders are close together. -/ theoremabv: ?m.21002exists_partition {ΞΉ :ΞΉ: Type ?u.21226Type _} [FintypeType _: Type (?u.21226+1)ΞΉ] {ΞΉ: Type ?u.21226Ξ΅ :Ξ΅: ββ} (β: TypehΞ΅ :hΞ΅: 0 < Ξ΅0 <0: ?m.21236Ξ΅) {Ξ΅: βb :b: RR} (R: Type ?u.21005hb :hb: b β 0b βb: R0) (0: ?m.21291A :A: ΞΉ β RΞΉ βΞΉ: Type ?u.21226R) (R: Type ?u.21005h :h: IsAdmissible abvabv.abv: AbsoluteValue R β€IsAdmissible) : βIsAdmissible: {R : Type ?u.21511} β [inst : EuclideanDomain R] β AbsoluteValue R β€ β Typet :t: ΞΉ β Fin (IsAdmissible.card h Ξ΅)ΞΉ β Fin (ΞΉ: Type ?u.21226h.h: IsAdmissible abvcardcard: {R : Type ?u.21534} β [inst : EuclideanDomain R] β {abv : AbsoluteValue R β€} β IsAdmissible abv β β β βΞ΅), βΞ΅: βiβiβ: ?m.21544iβ,iβ: ?m.21547tt: ΞΉ β Fin (IsAdmissible.card h Ξ΅)iβ =iβ: ?m.21544tt: ΞΉ β Fin (IsAdmissible.card h Ξ΅)iβ β (iβ: ?m.21547abv (abv: AbsoluteValue R β€AA: ΞΉ β Riβ %iβ: ?m.21547b -b: RAA: ΞΉ β Riβ %iβ: ?m.21544b) :b: Rβ) <β: Typeabvabv: AbsoluteValue R β€b β’b: RΞ΅ :=Ξ΅: βGoals accomplished! πR: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
h: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)R: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
h: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card h Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
introR: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
hβ: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card hβ Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
iβ, iβ: ΞΉ
h: (t β βe) iβ = (t β βe) iβ
introR: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
hβ: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card hβ Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
iβ, iβ: ΞΉ
h: (t β βe) iβ = (t β βe) iβ
h.e'_3.h.e'_3.h.e'_6.h.e'_5.h.e'_5.h.e'_1iβ = βe.symm (βe iβ)R: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
hβ: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card hβ Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
iβ, iβ: ΞΉ
h: (t β βe) iβ = (t β βe) iβ
h.e'_3.h.e'_3.h.e'_6.h.e'_6.h.e'_5.h.e'_1iβ = βe.symm (βe iβ)R: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
hβ: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card hβ Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
iβ, iβ: ΞΉ
h: (t β βe) iβ = (t β βe) iβ
introR: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
hβ: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card hβ Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
iβ, iβ: ΞΉ
h: (t β βe) iβ = (t β βe) iβ
h.e'_3.h.e'_3.h.e'_6.h.e'_5.h.e'_5.h.e'_1iβ = βe.symm (βe iβ)R: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
hβ: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card hβ Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
iβ, iβ: ΞΉ
h: (t β βe) iβ = (t β βe) iβ
h.e'_3.h.e'_3.h.e'_6.h.e'_6.h.e'_5.h.e'_1iβ = βe.symm (βe iβ)R: Type u_2
instβΒΉ: EuclideanDomain R
abv: AbsoluteValue R β€
ΞΉ: Type u_1
instβ: Fintype ΞΉ
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: ΞΉ β R
hβ: IsAdmissible abv
e:= Fintype.equivFin ΞΉ: ΞΉ β Fin (Fintype.card ΞΉ)
t: Fin (Fintype.card ΞΉ) β Fin (IsAdmissible.card hβ Ξ΅)
ht: β (iβ iβ : Fin (Fintype.card ΞΉ)), t iβ = t iβ β β(βabv ((A β βe.symm) iβ % b - (A β βe.symm) iβ % b)) < βabv b β’ Ξ΅
iβ, iβ: ΞΉ
h: (t β βe) iβ = (t β βe) iβ
intro#align absolute_value.is_admissible.exists_partitionGoals accomplished! πAbsoluteValue.IsAdmissible.exists_partition /-- Any large enough family of vectors in `R^n` has a pair of elements whose remainders are close together, pointwise. -/ theoremAbsoluteValue.IsAdmissible.exists_partition: β {R : Type u_2} [inst : EuclideanDomain R] {abv : AbsoluteValue R β€} {ΞΉ : Type u_1} [inst_1 : Fintype ΞΉ] {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : ΞΉ β R) (h : IsAdmissible abv), β t, β (iβ iβ : ΞΉ), t iβ = t iβ β β(βabv (A iβ % b - A iβ % b)) < βabv b β’ Ξ΅exists_approx_aux (exists_approx_aux: β {R : Type u_1} [inst : EuclideanDomain R] {abv : AbsoluteValue R β€} (n : β) (h : IsAdmissible abv) {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅n :n: ββ) (β: Typeh :h: IsAdmissible abvabv.abv: AbsoluteValue R β€IsAdmissible) : β {IsAdmissible: {R : Type ?u.39720} β [inst : EuclideanDomain R] β AbsoluteValue R β€ β TypeΞ΅ :Ξ΅: ββ} (β: Type_hΞ΅ :_hΞ΅: 0 < Ξ΅0 <0: ?m.39747Ξ΅) {Ξ΅: βb :b: RR} (R: Type ?u.39497_hb :_hb: b β 0b βb: R0) (0: ?m.39802A : Fin (A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β Rh.h: IsAdmissible abvcardcard: {R : Type ?u.40018} β [inst : EuclideanDomain R] β {abv : AbsoluteValue R β€} β IsAdmissible abv β β β βΞ΅ ^Ξ΅: βn).succ β Finn: βn βn: βR), βR: Type ?u.39497iβiβ: ?m.40073iβ,iβ: ?m.40078iβ βiβ: ?m.40073iβ β§ βiβ: ?m.40078k, (k: ?m.40084abv (abv: AbsoluteValue R β€AA: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β Riβiβ: ?m.40078k %k: ?m.40084b -b: RAA: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β Riβiβ: ?m.40073k %k: ?m.40084b) :b: Rβ) <β: Typeabvabv: AbsoluteValue R β€b β’b: RΞ΅ :=Ξ΅: βGoals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
n: β
h: IsAdmissible abv
this: DecidableEq R
zeroR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
succ
zero
zeroR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
succR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
Ξ΅: β
_hΞ΅: 0 < Ξ΅
b: R
_hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.zero)) β Fin Nat.zero β R
zero
zeroR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
Ξ΅: β
_hΞ΅: 0 < Ξ΅
b: R
_hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.zero)) β Fin Nat.zero β R
zero.refine'_10 β 1R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
Ξ΅: β
_hΞ΅: 0 < Ξ΅
b: R
_hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.zero)) β Fin Nat.zero β R
zero.refine'_2
zeroR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
Ξ΅: β
_hΞ΅: 0 < Ξ΅
b: R
_hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.zero)) β Fin Nat.zero β R
zero.refine'_10 β 1R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
Ξ΅: β
_hΞ΅: 0 < Ξ΅
b: R
_hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.zero)) β Fin Nat.zero β R
zero.refine'_10 β 1R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
Ξ΅: β
_hΞ΅: 0 < Ξ΅
b: R
_hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.zero)) β Fin Nat.zero β R
zero.refine'_2Goals accomplished! π
zeroGoals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
succR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
succR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
succGoals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
introR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
introGoals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅Fintype.card (Fin M) * M ^ n < Fintype.card (Fin (Nat.succ (M ^ Nat.succ n)))Goals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
intro.introR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
intro.intro.refine'_2Function.Injective fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))
intro.intro.refine'_3t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ) = t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ)R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
intro.intro.refine'_2Function.Injective fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))
intro.intro.refine'_3t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ) = t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ)R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1Nat.succ (M ^ n) β€ List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1Nat.succ (M ^ n) β€ List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1Nat.succ (M ^ n) β€ Finset.card (Finset.filter (fun x => t x = s) Finset.univ)R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i: Fin (Nat.succ (M ^ n))
intro.intro.refine'_1Nat.succ (M ^ n) β€ Finset.card (Finset.filter (fun x => t x = s) Finset.univ)R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
intro.intro.refine'_2Function.Injective fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
intro.intro.refine'_2Function.Injective fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))
intro.intro.refine'_3t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ) = t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ)R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i, j: Fin (Nat.succ (M ^ n))
h: (fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) i = (fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) j
intro.intro.refine'_2i = jR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
intro.intro.refine'_2Function.Injective fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
i, j: Fin (Nat.succ (M ^ n))
h: (fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) i = (fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) j
intro.intro.refine'_2.hβi = βjR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
intro.intro.refine'_2Function.Injective fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))Goals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))
intro.intro.refine'_3t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ) = t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ)Goals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))β (i : β) (h : i < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))), List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) i h β Finset.filter (fun x => t x = s) Finset.univR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))
i: β
h: i < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) i h β Finset.filter (fun x => t x = s) Finset.univR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))β (i : β) (h : i < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))), List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) i h β Finset.filter (fun x => t x = s) Finset.univGoals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
thisβ: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))
this: β (i : β) (h : i < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))), List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) i h β Finset.filter (fun x => t x = s) Finset.univ
leftβ: List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βiβ ?m.75293 β Finset.univ
hβ: t (List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βiβ ?m.75293) = s
intro.intro.refine'_3.introt ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ) = t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ)R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
thisβ: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: β
t: Fin (Nat.succ (M ^ Nat.succ n)) β Fin M
ht: β (iβ iβ : Fin (Nat.succ (M ^ Nat.succ n))), t iβ = t iβ β β(βabv (A iβ 0 % b - A iβ 0 % b)) < βabv b β’ Ξ΅
s: Fin M
hs: M ^ n < Finset.card (Finset.filter (fun x => t x = s) Finset.univ)
iβ, iβ: Fin (Nat.succ (M ^ n))
this: β (i : β) (h : i < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ))), List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) i h β Finset.filter (fun x => t x = s) Finset.univ
leftβΒΉ: List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βiβ ?m.75293 β Finset.univ
hβ: t (List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βiβ ?m.75293) = s
leftβ: List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βiβ ?m.75655 β Finset.univ
hβ: t (List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βiβ ?m.75655) = s
intro.intro.refine'_3.intro.introt ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ) = t ((fun i => List.nthLe (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)) βi (_ : βi < List.length (Finset.toList (Finset.filter (fun x => t x = s) Finset.univ)))) iβ)R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
h: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card h Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card h Ξ΅: βGoals accomplished! πR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
s: Fin (Nat.succ (M ^ n)) β Fin (Nat.succ (M ^ Nat.succ n))
s_inj: Function.Injective s
hs: β (iβ iβ : Fin (Nat.succ (M ^ n))), β(βabv (A (s iβ) 0 % b - A (s iβ) 0 % b)) < βabv b β’ Ξ΅
kβ, kβ: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n))
hk: kβ β kβ
h: β (k : Fin n), β(βabv (Fin.tail (A (s kβ)) k % b - Fin.tail (A (s kβ)) k % b)) < βabv b β’ Ξ΅
succ.intro.intro.intro.intro.introR: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
s: Fin (Nat.succ (M ^ n)) β Fin (Nat.succ (M ^ Nat.succ n))
s_inj: Function.Injective s
hs: β (iβ iβ : Fin (Nat.succ (M ^ n))), β(βabv (A (s iβ) 0 % b - A (s iβ) 0 % b)) < βabv b β’ Ξ΅
kβ, kβ: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n))
hk: kβ β kβ
h: β (k : Fin n), β(βabv (Fin.tail (A (s kβ)) k % b - Fin.tail (A (s kβ)) k % b)) < βabv b β’ Ξ΅
i: Fin (Nat.succ n)
succ.intro.intro.intro.intro.intro.refine'_1R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
s: Fin (Nat.succ (M ^ n)) β Fin (Nat.succ (M ^ Nat.succ n))
s_inj: Function.Injective s
hs: β (iβ iβ : Fin (Nat.succ (M ^ n))), β(βabv (A (s iβ) 0 % b - A (s iβ) 0 % b)) < βabv b β’ Ξ΅
kβ, kβ: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n))
hk: kβ β kβ
h: β (k : Fin n), β(βabv (Fin.tail (A (s kβ)) k % b - Fin.tail (A (s kβ)) k % b)) < βabv b β’ Ξ΅
iβ: Fin (Nat.succ n)
i: Fin n
succ.intro.intro.intro.intro.intro.refine'_2R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
s: Fin (Nat.succ (M ^ n)) β Fin (Nat.succ (M ^ Nat.succ n))
s_inj: Function.Injective s
hs: β (iβ iβ : Fin (Nat.succ (M ^ n))), β(βabv (A (s iβ) 0 % b - A (s iβ) 0 % b)) < βabv b β’ Ξ΅
kβ, kβ: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n))
hk: kβ β kβ
h: β (k : Fin n), β(βabv (Fin.tail (A (s kβ)) k % b - Fin.tail (A (s kβ)) k % b)) < βabv b β’ Ξ΅
i: Fin (Nat.succ n)
succ.intro.intro.intro.intro.intro.refine'_1R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
s: Fin (Nat.succ (M ^ n)) β Fin (Nat.succ (M ^ Nat.succ n))
s_inj: Function.Injective s
hs: β (iβ iβ : Fin (Nat.succ (M ^ n))), β(βabv (A (s iβ) 0 % b - A (s iβ) 0 % b)) < βabv b β’ Ξ΅
kβ, kβ: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n))
hk: kβ β kβ
h: β (k : Fin n), β(βabv (Fin.tail (A (s kβ)) k % b - Fin.tail (A (s kβ)) k % b)) < βabv b β’ Ξ΅
i: Fin (Nat.succ n)
succ.intro.intro.intro.intro.intro.refine'_1R: Type u_1
instβ: EuclideanDomain R
abv: AbsoluteValue R β€
hβ: IsAdmissible abv
this: DecidableEq R
n: β
ih: β {Ξ΅ : β}, 0 < Ξ΅ β β {b : R}, b β 0 β β (A : Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n)) β Fin n β R), β iβ iβ, iβ β iβ β§ β (k : Fin n), β(βabv (A iβ k % b - A iβ k % b)) < βabv b β’ Ξ΅
Ξ΅: β
hΞ΅: 0 < Ξ΅
b: R
hb: b β 0
A: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ Nat.succ n)) β Fin (Nat.succ n) β R
M:= IsAdmissible.card hβ Ξ΅: β
s: Fin (Nat.succ (M ^ n)) β Fin (Nat.succ (M ^ Nat.succ n))
s_inj: Function.Injective s
hs: β (iβ iβ : Fin (Nat.succ (M ^ n))), β(βabv (A (s iβ) 0 % b - A (s iβ) 0 % b)) < βabv b β’ Ξ΅
kβ, kβ: Fin (Nat.succ (IsAdmissible.card hβ Ξ΅ ^ n))
hk: kβ β kβ
h: β (k : Fin n), β(βabv (Fin.tail (A (s kβ)) k % b - Fin.tail (A (s kβ)) k % b)) < βabv b β’ Ξ΅
iβ: Fin (Nat.succ n)
i: Fin n
succ.intro.intro.intro.intro.intro.refine'_2Goals accomplished! π