Basics for the Rational Numbers #
Summary #
We define the integral domain structure on ℚ
and prove basic lemmas about it.
The definition of the field structure on ℚ
will be done in Mathlib.Data.Rat.Basic
once the
Field
class has been defined.
Main Definitions #
Rat.divInt n d
constructs a rational numberq = n / d
fromn d : ℤ
.
Notations #
/.
is infix notation forRat.divInt
.
@[simp]
Define a (dependent) function or prove ∀ r : ℚ, p r
by dealing with rational
numbers of the form n /. d
with 0 < d
and coprime n
, d
.
Equations
- { num := n, den := d, den_nz := h, reduced := c }.numDenCasesOn x✝ = ⋯.mpr (x✝ n d ⋯ c)
Instances For
def
Rat.numDenCasesOn'
{C : ℚ → Sort u}
(a : ℚ)
(H : (n : ℤ) → (d : ℕ) → d ≠ 0 → C (divInt n ↑d))
:
C a
Define a (dependent) function or prove ∀ r : ℚ, p r
by dealing with rational
numbers of the form n /. d
with d ≠ 0
.
Equations
- a.numDenCasesOn' H = a.numDenCasesOn fun (n : ℤ) (d : ℕ) (h : 0 < d) (x : n.natAbs.Coprime d) => H n d ⋯
Instances For
def
Rat.numDenCasesOn''
{C : ℚ → Sort u}
(a : ℚ)
(H :
(n : ℤ) →
(d : ℕ) → (nz : d ≠ 0) → (red : n.natAbs.Coprime d) → C { num := n, den := d, den_nz := nz, reduced := red })
:
C a
Define a (dependent) function or prove ∀ r : ℚ, p r
by dealing with rational
numbers of the form mk' n d
with d ≠ 0
.
Equations
- a.numDenCasesOn'' H = a.numDenCasesOn fun (n : ℤ) (d : ℕ) (h : 0 < d) (h' : n.natAbs.Coprime d) => ⋯.mpr (H n d ⋯ h')
Instances For
theorem
Rat.lift_binop_eq
(f : ℚ → ℚ → ℚ)
(f₁ f₂ : ℤ → ℤ → ℤ → ℤ → ℤ)
(fv :
∀ {n₁ : ℤ} {d₁ : ℕ} {h₁ : d₁ ≠ 0} {c₁ : n₁.natAbs.Coprime d₁} {n₂ : ℤ} {d₂ : ℕ} {h₂ : d₂ ≠ 0}
{c₂ : n₂.natAbs.Coprime d₂},
f { num := n₁, den := d₁, den_nz := h₁, reduced := c₁ } { num := n₂, den := d₂, den_nz := h₂, reduced := c₂ } = divInt (f₁ n₁ (↑d₁) n₂ ↑d₂) (f₂ n₁ (↑d₁) n₂ ↑d₂))
(f0 : ∀ {n₁ d₁ n₂ d₂ : ℤ}, d₁ ≠ 0 → d₂ ≠ 0 → f₂ n₁ d₁ n₂ d₂ ≠ 0)
(a b c d : ℤ)
(b0 : b ≠ 0)
(d0 : d ≠ 0)
(H : ∀ {n₁ d₁ n₂ d₂ : ℤ}, a * d₁ = n₁ * b → c * d₂ = n₂ * d → f₁ n₁ d₁ n₂ d₂ * f₂ a b c d = f₁ a b c d * f₂ n₁ d₁ n₂ d₂)
:
The rational numbers are a group #
Equations
Equations
def
Rat.divCasesOn
{C : ℚ → Sort u_1}
(a : ℚ)
(h : (n : ℤ) → (d : ℕ) → d ≠ 0 → n.natAbs.Coprime d → C (↑n / ↑d))
:
C a
A version of Rat.casesOn
that uses /
instead of Rat.mk'
. Use as cases' q
for q : Rat
.
Equations
- a.divCasesOn h = Rat.casesOn a fun (n : ℤ) (d : ℕ) (nz : d ≠ 0) (red : n.natAbs.Coprime d) => ⋯.mpr (⋯.mpr (h n d nz red))