Documentation

Mathlib.NumberTheory.Real.Irrational

Irrational real numbers #

In this file we define a predicate Irrational on ℝ, prove that the n-th root of an integer number is irrational if it is not integer, and that √(q : ℚ) is irrational if and only if ¬IsSquare q ∧ 0 ≤ q.

We also provide dot-style constructors like Irrational.add_ratCast, Irrational.ratCast_sub etc.

With the Decidable instances in this file, is possible to prove Irrational √n using decide, when n is a numeric literal or cast; but this only works if you unseal Nat.sqrt.iter in before the theorem where you use this proof.

def Irrational (x : ℝ) :

A real number is irrational if it is not equal to any rational number.

Equations
Instances For
    theorem irrational_iff_ne_rational (x : ℝ) :
    Irrational x ↔ ∀ (a b : ℤ), b ≠ 0 → x ≠ ↑a / ↑b
    theorem Irrational.ne_rational {x : ℝ} (hx : Irrational x) (a b : ℤ) :
    x ≠ ↑a / ↑b
    theorem exists_rat_of_not_irrational {x : ℝ} (hx : ¬Irrational x) :
    ∃ (q : ℚ), x = ↑q

    A transcendental real number is irrational.

    Irrationality of roots of integer and rational numbers #

    theorem irrational_nrt_of_notint_nrt {x : ℝ} (n : ℕ) (m : ℤ) (hxr : x ^ n = ↑m) (hv : ¬∃ (y : ℤ), x = ↑y) (hnpos : 0 < n) :

    If x^n, n > 0, is integer and is not the n-th power of an integer, then x is irrational.

    theorem irrational_nrt_of_n_not_dvd_multiplicity {x : ℝ} (n : ℕ) {m : ℤ} (hm : m ≠ 0) (p : ℕ) [hp : Fact (Nat.Prime p)] (hxr : x ^ n = ↑m) (hv : multiplicity (↑p) m % n ≠ 0) :

    If x^n = m is an integer and n does not divide the multiplicity p m, then x is irrational.

    theorem irrational_sqrt_of_multiplicity_odd (m : ℤ) (hm : 0 < m) (p : ℕ) [hp : Fact (Nat.Prime p)] (Hpv : multiplicity (↑p) m % 2 = 1) :

    Irrationality of the Square Root of 2

    @[instance_reducible]

    This can be used as

    unseal Nat.sqrt.iter in
    example : Irrational √24 := by decide
    
    Equations

    Dot-style operations on Irrational #

    Coercion of a rational/integer/natural number is not irrational #

    Irrational number is not equal to a rational/integer/natural number #

    theorem Irrational.ne_rat {x : ℝ} (h : Irrational x) (q : ℚ) :
    x ≠ ↑q
    theorem Irrational.ne_int {x : ℝ} (h : Irrational x) (m : ℤ) :
    x ≠ ↑m
    theorem Irrational.ne_nat {x : ℝ} (h : Irrational x) (m : ℕ) :
    x ≠ ↑m
    theorem Irrational.ne_zero {x : ℝ} (h : Irrational x) :
    x ≠ 0
    theorem Irrational.ne_one {x : ℝ} (h : Irrational x) :
    x ≠ 1
    @[simp]
    theorem Irrational.ne_ofNat {x : ℝ} (h : Irrational x) (n : ℕ) [n.AtLeastTwo] :
    @[simp]
    theorem Rat.not_irrational (q : ℚ) :
    @[simp]
    theorem Int.not_irrational (m : ℤ) :
    @[simp]
    theorem Nat.not_irrational (m : ℕ) :

    Addition of rational/integer/natural numbers #

    If x + y is irrational, then at least one of x and y is irrational.

    theorem Irrational.of_ratCast_add (q : ℚ) {x : ℝ} (h : Irrational (↑q + x)) :
    theorem Irrational.ratCast_add (q : ℚ) {x : ℝ} (h : Irrational x) :
    Irrational (↑q + x)
    theorem Irrational.of_add_ratCast (q : ℚ) {x : ℝ} :
    Irrational (x + ↑q) → Irrational x
    theorem Irrational.add_ratCast (q : ℚ) {x : ℝ} (h : Irrational x) :
    Irrational (x + ↑q)
    theorem Irrational.of_intCast_add {x : ℝ} (m : ℤ) (h : Irrational (↑m + x)) :
    theorem Irrational.of_add_intCast {x : ℝ} (m : ℤ) (h : Irrational (x + ↑m)) :
    theorem Irrational.intCast_add {x : ℝ} (h : Irrational x) (m : ℤ) :
    Irrational (↑m + x)
    theorem Irrational.add_intCast {x : ℝ} (h : Irrational x) (m : ℤ) :
    Irrational (x + ↑m)
    theorem Irrational.of_natCast_add {x : ℝ} (m : ℕ) (h : Irrational (↑m + x)) :
    theorem Irrational.of_add_natCast {x : ℝ} (m : ℕ) (h : Irrational (x + ↑m)) :
    theorem Irrational.natCast_add {x : ℝ} (h : Irrational x) (m : ℕ) :
    Irrational (↑m + x)
    theorem Irrational.add_natCast {x : ℝ} (h : Irrational x) (m : ℕ) :
    Irrational (x + ↑m)

    Negation #

    theorem Irrational.neg {x : ℝ} (h : Irrational x) :

    Subtraction of rational/integer/natural numbers #

    theorem Irrational.sub_ratCast (q : ℚ) {x : ℝ} (h : Irrational x) :
    Irrational (x - ↑q)
    theorem Irrational.ratCast_sub (q : ℚ) {x : ℝ} (h : Irrational x) :
    Irrational (↑q - x)
    theorem Irrational.of_sub_ratCast (q : ℚ) {x : ℝ} (h : Irrational (x - ↑q)) :
    theorem Irrational.of_ratCast_sub (q : ℚ) {x : ℝ} (h : Irrational (↑q - x)) :
    theorem Irrational.sub_intCast {x : ℝ} (h : Irrational x) (m : ℤ) :
    Irrational (x - ↑m)
    theorem Irrational.intCast_sub {x : ℝ} (h : Irrational x) (m : ℤ) :
    Irrational (↑m - x)
    theorem Irrational.of_sub_intCast {x : ℝ} (m : ℤ) (h : Irrational (x - ↑m)) :
    theorem Irrational.of_intCast_sub {x : ℝ} (m : ℤ) (h : Irrational (↑m - x)) :
    theorem Irrational.sub_natCast {x : ℝ} (h : Irrational x) (m : ℕ) :
    Irrational (x - ↑m)
    theorem Irrational.natCast_sub {x : ℝ} (h : Irrational x) (m : ℕ) :
    Irrational (↑m - x)
    theorem Irrational.of_sub_natCast {x : ℝ} (m : ℕ) (h : Irrational (x - ↑m)) :
    theorem Irrational.of_natCast_sub {x : ℝ} (m : ℕ) (h : Irrational (↑m - x)) :

    Multiplication by rational numbers #

    theorem Irrational.of_mul_ratCast (q : ℚ) {x : ℝ} (h : Irrational (x * ↑q)) :
    theorem Irrational.mul_ratCast {x : ℝ} (h : Irrational x) {q : ℚ} (hq : q ≠ 0) :
    Irrational (x * ↑q)
    theorem Irrational.of_ratCast_mul (q : ℚ) {x : ℝ} :
    Irrational (↑q * x) → Irrational x
    theorem Irrational.ratCast_mul {x : ℝ} (h : Irrational x) {q : ℚ} (hq : q ≠ 0) :
    Irrational (↑q * x)
    theorem Irrational.of_mul_intCast {x : ℝ} (m : ℤ) (h : Irrational (x * ↑m)) :
    theorem Irrational.of_intCast_mul {x : ℝ} (m : ℤ) (h : Irrational (↑m * x)) :
    theorem Irrational.mul_intCast {x : ℝ} (h : Irrational x) {m : ℤ} (hm : m ≠ 0) :
    Irrational (x * ↑m)
    theorem Irrational.intCast_mul {x : ℝ} (h : Irrational x) {m : ℤ} (hm : m ≠ 0) :
    Irrational (↑m * x)
    theorem Irrational.of_mul_natCast {x : ℝ} (m : ℕ) (h : Irrational (x * ↑m)) :
    theorem Irrational.of_natCast_mul {x : ℝ} (m : ℕ) (h : Irrational (↑m * x)) :
    theorem Irrational.mul_natCast {x : ℝ} (h : Irrational x) {m : ℕ} (hm : m ≠ 0) :
    Irrational (x * ↑m)
    theorem Irrational.natCast_mul {x : ℝ} (h : Irrational x) {m : ℕ} (hm : m ≠ 0) :
    Irrational (↑m * x)

    Inverse #

    Division #

    theorem Irrational.of_ratCast_div (q : ℚ) {x : ℝ} (h : Irrational (↑q / x)) :
    theorem Irrational.of_div_ratCast (q : ℚ) {x : ℝ} (h : Irrational (x / ↑q)) :
    theorem Irrational.ratCast_div {x : ℝ} (h : Irrational x) {q : ℚ} (hq : q ≠ 0) :
    Irrational (↑q / x)
    theorem Irrational.div_ratCast {x : ℝ} (h : Irrational x) {q : ℚ} (hq : q ≠ 0) :
    Irrational (x / ↑q)
    theorem Irrational.of_intCast_div {x : ℝ} (m : ℤ) (h : Irrational (↑m / x)) :
    theorem Irrational.of_div_intCast {x : ℝ} (m : ℤ) (h : Irrational (x / ↑m)) :
    theorem Irrational.intCast_div {x : ℝ} (h : Irrational x) {m : ℤ} (hm : m ≠ 0) :
    Irrational (↑m / x)
    theorem Irrational.div_intCast {x : ℝ} (h : Irrational x) {m : ℤ} (hm : m ≠ 0) :
    Irrational (x / ↑m)
    theorem Irrational.of_natCast_div {x : ℝ} (m : ℕ) (h : Irrational (↑m / x)) :
    theorem Irrational.of_div_natCast {x : ℝ} (m : ℕ) (h : Irrational (x / ↑m)) :
    theorem Irrational.natCast_div {x : ℝ} (h : Irrational x) {m : ℕ} (hm : m ≠ 0) :
    Irrational (↑m / x)
    theorem Irrational.div_natCast {x : ℝ} (h : Irrational x) {m : ℕ} (hm : m ≠ 0) :
    Irrational (x / ↑m)

    Natural and integer power #

    theorem Irrational.of_pow {x : ℝ} (n : ℕ) :
    Irrational (x ^ n) → Irrational x
    theorem Irrational.of_zpow {x : ℝ} (m : ℤ) :
    Irrational (x ^ m) → Irrational x
    theorem one_lt_natDegree_of_irrational_root (x : ℝ) (p : Polynomial ℤ) (hx : Irrational x) (p_nonzero : p ≠ 0) (x_is_root : (Polynomial.aeval x) p = 0) :

    Simplification lemmas about operations #

    @[simp]
    theorem irrational_ratCast_add_iff {q : ℚ} {x : ℝ} :
    @[simp]
    theorem irrational_intCast_add_iff {m : ℤ} {x : ℝ} :
    @[simp]
    theorem irrational_natCast_add_iff {n : ℕ} {x : ℝ} :
    @[simp]
    theorem irrational_add_ratCast_iff {q : ℚ} {x : ℝ} :
    @[simp]
    theorem irrational_add_intCast_iff {m : ℤ} {x : ℝ} :
    @[simp]
    theorem irrational_add_natCast_iff {n : ℕ} {x : ℝ} :
    @[simp]
    theorem irrational_ratCast_sub_iff {q : ℚ} {x : ℝ} :
    @[simp]
    theorem irrational_intCast_sub_iff {m : ℤ} {x : ℝ} :
    @[simp]
    theorem irrational_natCast_sub_iff {n : ℕ} {x : ℝ} :
    @[simp]
    theorem irrational_sub_ratCast_iff {q : ℚ} {x : ℝ} :
    @[simp]
    theorem irrational_sub_intCast_iff {m : ℤ} {x : ℝ} :
    @[simp]
    theorem irrational_sub_natCast_iff {n : ℕ} {x : ℝ} :
    @[simp]
    theorem irrational_ratCast_mul_iff {q : ℚ} {x : ℝ} :
    Irrational (↑q * x) ↔ q ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_mul_ratCast_iff {q : ℚ} {x : ℝ} :
    Irrational (x * ↑q) ↔ q ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_intCast_mul_iff {m : ℤ} {x : ℝ} :
    Irrational (↑m * x) ↔ m ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_mul_intCast_iff {m : ℤ} {x : ℝ} :
    Irrational (x * ↑m) ↔ m ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_natCast_mul_iff {n : ℕ} {x : ℝ} :
    Irrational (↑n * x) ↔ n ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_mul_natCast_iff {n : ℕ} {x : ℝ} :
    Irrational (x * ↑n) ↔ n ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_ratCast_div_iff {q : ℚ} {x : ℝ} :
    Irrational (↑q / x) ↔ q ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_div_ratCast_iff {q : ℚ} {x : ℝ} :
    Irrational (x / ↑q) ↔ q ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_intCast_div_iff {m : ℤ} {x : ℝ} :
    Irrational (↑m / x) ↔ m ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_div_intCast_iff {m : ℤ} {x : ℝ} :
    Irrational (x / ↑m) ↔ m ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_natCast_div_iff {n : ℕ} {x : ℝ} :
    Irrational (↑n / x) ↔ n ≠ 0 ∧ Irrational x
    @[simp]
    theorem irrational_div_natCast_iff {n : ℕ} {x : ℝ} :
    Irrational (x / ↑n) ↔ n ≠ 0 ∧ Irrational x
    theorem exists_irrational_btwn {x y : ℝ} (h : x < y) :
    ∃ (r : ℝ), Irrational r ∧ x < r ∧ r < y

    There is an irrational number r between any two reals x < r < y.