Pell's Equation #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Pell's Equation is the equation $x^2 - d y^2 = 1$, where $d$ is a positive integer that is not a square, and one is interested in solutions in integers $x$ and $y$.
In this file, we aim at providing all of the essential theory of Pell's Equation for general $d$
(as opposed to the contents of number_theory.pell_matiyasevic, which is specific to the case
$d = a^2 - 1$ for some $a > 1$).
We begin by defining a type pell.solution₁ d for solutions of the equation,
show that it has a natural structure as an abelian group, and prove some basic
properties.
We then prove the following
Theorem. Let $d$ be a positive integer that is not a square. Then the equation $x^2 - d y^2 = 1$ has a nontrivial (i.e., with $y \ne 0$) solution in integers.
See pell.exists_of_not_is_square and pell.solution₁.exists_nontrivial_of_not_is_square.
We then define the fundamental solution to be the solution
with smallest $x$ among all solutions satisfying $x > 1$ and $y > 0$.
We show that every solution is a power (in the sense of the group structure mentioned above)
of the fundamental solution up to a (common) sign,
see pell.is_fundamental.eq_zpow_or_neg_zpow, and that a (positive) solution has this property
if and only if it is fundamental, see pell.pos_generator_iff_fundamental.
References #
Tags #
Pell's equation
TODO #
- Extend to
x ^ 2 - d * y ^ 2 = -1and further generalizations. - Connect solutions to the continued fraction expansion of
√d.
Group structure of the solution set #
We define a structure of a commutative multiplicative group with distributive negation
on the set of all solutions to the Pell equation x^2 - d*y^2 = 1.
The type of such solutions is pell.solution₁ d. It corresponds to a pair of integers x and y
and a proof that (x, y) is indeed a solution.
The multiplication is given by (x, y) * (x', y') = (x*y' + d*y*y', x*y' + y*x').
This is obtained by mapping (x, y) to x + y*√d and multiplying the results.
In fact, we define pell.solution₁ d to be ↥(unitary (ℤ√d)) and transport
the "commutative group with distributive negation" structure from ↥(unitary (ℤ√d)).
We then set up an API for pell.solution₁ d.
An element of ℤ√d has norm one (i.e., a.re^2 - d*a.im^2 = 1) if and only if
it is contained in the submonoid of unitary elements.
TODO: merge this result with pell.is_pell_iff_mem_unitary.
pell.solution₁ d is the type of solutions to the Pell equation x^2 - d*y^2 = 1.
We define this in terms of elements of ℤ√d of norm one.
Equations
- pell.solution₁ d = ↥(unitary (ℤ√d))
Instances for pell.solution₁
Equations
- pell.solution₁.zsqrtd.has_coe = {coe := subtype.val (λ (x : ℤ√d), x ∈ unitary (ℤ√d))}
The x component of a solution to the Pell equation x^2 - d*y^2 = 1
The y component of a solution to the Pell equation x^2 - d*y^2 = 1
When d is negative, then x or y must be zero in a solution.
A solution has x ≠ 0.
A solution with x > 1 must have y ≠ 0.
If a solution has x > 1, then d is positive.
If a solution has x > 1, then d is not a square.
A solution with x = 1 is trivial.
A solution is 1 or -1 if and only if y = 0.
If (x, y) is a solution with x positive, then all its powers with natural exponents
have positive x.
If (x, y) is a solution with x positive, then all its powers have positive x.
Existence of nontrivial solutions #
Fundamental solutions #
We define the notion of a fundamental solution of Pell's equation and
show that it exists and is unique (when d is positive and non-square)
and generates the group of solutions up to sign.
We define a solution to be fundamental if it has x > 1 and y > 0
and its x is the smallest possible among solutions with x > 1.
A fundamental solution has positive x.
If a fundamental solution exists, then d must be positive.
If a fundamental solution exists, then d must be a non-square.
If there is a fundamental solution, it is unique.
If d is positive and not a square, then a fundamental solution exists.
The map sending an integer n to the y-coordinate of a^n for a fundamental
solution a is stritcly increasing.
If a is a fundamental solution, then (a^m).y < (a^n).y if and only if m < n.
The nth power of a fundamental solution is trivial if and only if n = 0.
A power of a fundamental solution is never equal to the negative of a power of this fundamental solution.
The x-coordinate of a fundamental solution is a lower bound for the x-coordinate
of any positive solution.
The y-coordinate of a fundamental solution is a lower bound for the y-coordinate
of any positive solution.
If we multiply a positive solution with the inverse of a fundamental solution,
the y-coordinate remains nonnegative.
If we multiply a positive solution with the inverse of a fundamental solution,
the x-coordinate stays positive.
If we multiply a positive solution with the inverse of a fundamental solution,
the x-coordinate decreases.
Any nonnegative solution is a power with nonnegative exponent of a fundamental solution.
Every solution is, up to a sign, a power of a given fundamental solution.
When d is positive and not a square, then the group of solutions to the Pell equation
x^2 - d*y^2 = 1 has a unique positive generator (up to sign).
A positive solution is a generator (up to sign) of the group of all solutions to the
Pell equation x^2 - d*y^2 = 1 if and only if it is a fundamental solution.