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 = -1
and 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 n
th 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.