{-# OPTIONS --safe --warning=error --without-K #-} open import LogicalFormulae open import Numbers.Naturals.Definition open import Numbers.Naturals.Naturals open import Numbers.Integers.Integers open import Groups.Groups open import Groups.Definition open import Groups.Lemmas open import Rings.Definition open import Rings.Orders.Total.Definition open import Rings.Orders.Partial.Definition open import Fields.Fields open import Setoids.Setoids open import Setoids.Orders open import Functions open import Sets.EquivalenceRelations module Numbers.Rationals.Definition where open import Fields.FieldOfFractions.Setoid ℤIntDom open import Fields.FieldOfFractions.Addition ℤIntDom open import Fields.FieldOfFractions.Multiplication ℤIntDom open import Fields.FieldOfFractions.Ring ℤIntDom open import Fields.FieldOfFractions.Field ℤIntDom open import Fields.FieldOfFractions.Lemmas ℤIntDom open import Fields.FieldOfFractions.Order ℤIntDom ℤOrderedRing ℚ : Set ℚ = fieldOfFractionsSet ℚSetoid : Setoid ℚ ℚSetoid = fieldOfFractionsSetoid _+Q_ : ℚ → ℚ → ℚ a +Q b = fieldOfFractionsPlus a b _*Q_ : ℚ → ℚ → ℚ a *Q b = fieldOfFractionsTimes a b ℚRing : Ring fieldOfFractionsSetoid _+Q_ _*Q_ ℚRing = fieldOfFractionsRing 0Q : ℚ 0Q = Ring.0R ℚRing injectionQ : ℤ → ℚ injectionQ = embedIntoFieldOfFractions injectionNQ : ℕ → ℚ injectionNQ n = injectionQ (nonneg n) injectionQInjective : Injection injectionQ injectionQInjective {nonneg x} {nonneg .x} refl = refl injectionQInjective {negSucc x} {negSucc .x} refl = refl ℚField : Field ℚRing ℚField = fieldOfFractions _