Integer points on rational affine lines. Primitive integer directions make the line parameter integral, giving a spacing bound.
The height max_j |v j| of an integer vector v.
Equations
- CCDN.integerDirectionHeight v = Finset.univ.sup fun (j : Fin n) => (v j).natAbs
Instances For
Scaling the direction by a nonzero rational does not change the affine line.
Moving the base point along the direction does not change the affine line.
A nonzero integer vector has positive height.
theorem
CCDN.projective_direction_height
{n : ℕ}
(v : IntPoint (n + 1))
(hv : v ≠ 0)
(hprim : Finset.univ.gcd v = 1)
:
For a nonzero primitive integer vector v, the multiplicative height of the projective point
[v] equals max_j |v j|.
theorem
CCDN.rationalAffineLine_integer_rep_and_count
{n : ℕ}
(a v : RatPoint n)
{B : ℝ}
(hB : 0 ≤ B)
(hcount : 1 < count (rationalAffineLine a v) B)
:
∃ (z : IntPoint n) (w : IntPoint n),
w ≠ 0 ∧ Finset.univ.gcd w = 1 ∧ InBox z B ∧ ↑(integerDirectionHeight w) ≤ 2 * B ∧ rationalAffineLine a v = rationalAffineLine (rationalPoint z) (rationalPoint w) ∧ ↑(count (rationalAffineLine a v) B) ≤ 1 + 2 * B / ↑(integerDirectionHeight w)
Any rational affine line containing two bounded integer points has an integer base point and primitive integer direction, with the exact spacing estimate and the direction-height cutoff needed for summing line contributions.