# Liouville numbers with a given exponent #

We say that a real number x is a Liouville number with exponent p : ℝ if there exists a real number C such that for infinitely many denominators n there exists a numerator m such that x ≠ m / n and |x - m / n| < C / n ^ p. A number is a Liouville number in the sense of Liouville if it is LiouvilleWith any real exponent, see forall_liouvilleWith_iff.

• If p ≤ 1, then this condition is trivial.

• If 1 < p ≤ 2, then this condition is equivalent to Irrational x. The forward implication does not require p ≤ 2 and is formalized as LiouvilleWith.irrational; the other implication follows from approximations by continued fractions and is not formalized yet.

• If p > 2, then this is a non-trivial condition on irrational numbers. In particular, Thue–Siegel–Roth theorem states that such numbers must be transcendental.

In this file we define the predicate LiouvilleWith and prove some basic facts about this predicate.

## Tags #

Liouville number, irrational, irrationality exponent

def LiouvilleWith (p : ) (x : ) :

We say that a real number x is a Liouville number with exponent p : ℝ if there exists a real number C such that for infinitely many denominators n there exists a numerator m such that x ≠ m / n and |x - m / n| < C / n ^ p.

A number is a Liouville number in the sense of Liouville if it is LiouvilleWith any real exponent.

Equations
• = ∃ (C : ), ∃ᶠ (n : ) in Filter.atTop, ∃ (m : ), x m / n |x - m / n| < C / n ^ p
Instances For
theorem liouvilleWith_one (x : ) :

For p = 1 (hence, for any p ≤ 1), the condition LiouvilleWith p x is trivial.

theorem LiouvilleWith.exists_pos {p : } {x : } (h : ) :
∃ (C : ) (_ : 0 < C), ∃ᶠ (n : ) in Filter.atTop, 1 n ∃ (m : ), x m / n |x - m / n| < C / n ^ p

The constant C provided by the definition of LiouvilleWith can be made positive. We also add 1 ≤ n to the list of assumptions about the denominator. While it is equivalent to the original statement, the case n = 0 breaks many arguments.

theorem LiouvilleWith.mono {p : } {q : } {x : } (h : ) (hle : q p) :

If a number is Liouville with exponent p, then it is Liouville with any smaller exponent.

theorem LiouvilleWith.frequently_lt_rpow_neg {p : } {q : } {x : } (h : ) (hlt : q < p) :
∃ᶠ (n : ) in Filter.atTop, ∃ (m : ), x m / n |x - m / n| < n ^ (-q)

If x satisfies Liouville condition with exponent p and q < p, then x satisfies Liouville condition with exponent q and constant 1.

theorem LiouvilleWith.mul_rat {p : } {x : } {r : } (h : ) (hr : r 0) :
LiouvilleWith p (x * r)

The product of a Liouville number and a nonzero rational number is again a Liouville number.

theorem LiouvilleWith.mul_rat_iff {p : } {x : } {r : } (hr : r 0) :
LiouvilleWith p (x * r)

The product x * r, r : ℚ, r ≠ 0, is a Liouville number with exponent p if and only if x satisfies the same condition.

theorem LiouvilleWith.rat_mul_iff {p : } {x : } {r : } (hr : r 0) :
LiouvilleWith p (r * x)

The product r * x, r : ℚ, r ≠ 0, is a Liouville number with exponent p if and only if x satisfies the same condition.

theorem LiouvilleWith.rat_mul {p : } {x : } {r : } (h : ) (hr : r 0) :
LiouvilleWith p (r * x)
theorem LiouvilleWith.mul_int_iff {p : } {x : } {m : } (hm : m 0) :
LiouvilleWith p (x * m)
theorem LiouvilleWith.mul_int {p : } {x : } {m : } (h : ) (hm : m 0) :
LiouvilleWith p (x * m)
theorem LiouvilleWith.int_mul_iff {p : } {x : } {m : } (hm : m 0) :
LiouvilleWith p (m * x)
theorem LiouvilleWith.int_mul {p : } {x : } {m : } (h : ) (hm : m 0) :
LiouvilleWith p (m * x)
theorem LiouvilleWith.mul_nat_iff {p : } {x : } {n : } (hn : n 0) :
LiouvilleWith p (x * n)
theorem LiouvilleWith.mul_nat {p : } {x : } {n : } (h : ) (hn : n 0) :
LiouvilleWith p (x * n)
theorem LiouvilleWith.nat_mul_iff {p : } {x : } {n : } (hn : n 0) :
LiouvilleWith p (n * x)
theorem LiouvilleWith.nat_mul {p : } {x : } {n : } (h : ) (hn : n 0) :
LiouvilleWith p (n * x)
theorem LiouvilleWith.add_rat {p : } {x : } (h : ) (r : ) :
LiouvilleWith p (x + r)
@[simp]
theorem LiouvilleWith.add_rat_iff {p : } {x : } {r : } :
LiouvilleWith p (x + r)
@[simp]
theorem LiouvilleWith.rat_add_iff {p : } {x : } {r : } :
LiouvilleWith p (r + x)
theorem LiouvilleWith.rat_add {p : } {x : } (h : ) (r : ) :
LiouvilleWith p (r + x)
@[simp]
theorem LiouvilleWith.add_int_iff {p : } {x : } {m : } :
LiouvilleWith p (x + m)
@[simp]
theorem LiouvilleWith.int_add_iff {p : } {x : } {m : } :
LiouvilleWith p (m + x)
@[simp]
theorem LiouvilleWith.add_nat_iff {p : } {x : } {n : } :
LiouvilleWith p (x + n)
@[simp]
theorem LiouvilleWith.nat_add_iff {p : } {x : } {n : } :
LiouvilleWith p (n + x)
theorem LiouvilleWith.add_int {p : } {x : } (h : ) (m : ) :
LiouvilleWith p (x + m)
theorem LiouvilleWith.int_add {p : } {x : } (h : ) (m : ) :
LiouvilleWith p (m + x)
theorem LiouvilleWith.add_nat {p : } {x : } (h : ) (n : ) :
LiouvilleWith p (x + n)
theorem LiouvilleWith.nat_add {p : } {x : } (h : ) (n : ) :
LiouvilleWith p (n + x)
theorem LiouvilleWith.neg {p : } {x : } (h : ) :
@[simp]
theorem LiouvilleWith.neg_iff {p : } {x : } :
@[simp]
theorem LiouvilleWith.sub_rat_iff {p : } {x : } {r : } :
LiouvilleWith p (x - r)
theorem LiouvilleWith.sub_rat {p : } {x : } (h : ) (r : ) :
LiouvilleWith p (x - r)
@[simp]
theorem LiouvilleWith.sub_int_iff {p : } {x : } {m : } :
LiouvilleWith p (x - m)
theorem LiouvilleWith.sub_int {p : } {x : } (h : ) (m : ) :
LiouvilleWith p (x - m)
@[simp]
theorem LiouvilleWith.sub_nat_iff {p : } {x : } {n : } :
LiouvilleWith p (x - n)
theorem LiouvilleWith.sub_nat {p : } {x : } (h : ) (n : ) :
LiouvilleWith p (x - n)
@[simp]
theorem LiouvilleWith.rat_sub_iff {p : } {x : } {r : } :
LiouvilleWith p (r - x)
theorem LiouvilleWith.rat_sub {p : } {x : } (h : ) (r : ) :
LiouvilleWith p (r - x)
@[simp]
theorem LiouvilleWith.int_sub_iff {p : } {x : } {m : } :
LiouvilleWith p (m - x)
theorem LiouvilleWith.int_sub {p : } {x : } (h : ) (m : ) :
LiouvilleWith p (m - x)
@[simp]
theorem LiouvilleWith.nat_sub_iff {p : } {x : } {n : } :
LiouvilleWith p (n - x)
theorem LiouvilleWith.nat_sub {p : } {x : } (h : ) (n : ) :
LiouvilleWith p (n - x)
theorem LiouvilleWith.ne_cast_int {p : } {x : } (h : ) (hp : 1 < p) (m : ) :
x m
theorem LiouvilleWith.irrational {p : } {x : } (h : ) (hp : 1 < p) :

A number satisfying the Liouville condition with exponent p > 1 is an irrational number.

theorem Liouville.frequently_exists_num {x : } (hx : ) (n : ) :
∃ᶠ (b : ) in Filter.atTop, ∃ (a : ), x a / b |x - a / b| < 1 / b ^ n

If x is a Liouville number, then for any n, for infinitely many denominators b there exists a numerator a such that x ≠ a / b and |x - a / b| < 1 / b ^ n.

theorem Liouville.liouvilleWith {x : } (hx : ) (p : ) :

A Liouville number is a Liouville number with any real exponent.

theorem forall_liouvilleWith_iff {x : } :
(∀ (p : ), )

A number satisfies the Liouville condition with any exponent if and only if it is a Liouville number.