module Rational.Unnormalized.Properties where
open import Level using (0ℓ)
open import Function
open import Data.Empty using (⊥-elim)
open import Data.Product using (_,_; proj₁; proj₂)
open import Data.Sum.Base using (_⊎_; [_,_]′; inj₁; inj₂)
open import Data.Rational.Unnormalised
open import Data.Rational.Unnormalised.Properties
open import Relation.Binary
import Relation.Binary.Reasoning.Setoid as ReasonSetoid
open import Relation.Nullary.Decidable.Core
open import Algebra
open import Algebra.Apartness
open import Algebra.Field
open import Algebra.DecidableField
open import Algebra.Apartness
private variable
p q : ℚᵘ
inv : (p : ℚᵘ) → p ≄ 0ℚᵘ → ℚᵘ
inv p p≠0 = 1/_ p ⦃ ≢-nonZero p≠0 ⦄
+-*-inv-isField : IsField _≃_ 0ℚᵘ 1ℚᵘ -_ _+_ _*_ inv
+-*-inv-isField = record
{ isCommutativeRing = +-*-isCommutativeRing
; hasInverse = λ x x≭0 → *-inverseʳ x ⦃ ≢-nonZero x≭0 ⦄
; 0≢1 = from-no (0ℚᵘ ≃? 1ℚᵘ)
}
ℚᵘ-Field : Field _ _
ℚᵘ-Field = record { isField = +-*-inv-isField }
0ℚᵘ≠1ℚᵘ : 0ℚᵘ ≄ 1ℚᵘ
0ℚᵘ≠1ℚᵘ = from-no (0ℚᵘ ≃? 1ℚᵘ)
_≠?_ : Decidable _≄_
x ≠? y = ¬? (x ≃? y)
open HeytingField +-*-heytingField renaming (Carrier to F) hiding (refl)
+-*-decidableField : DecidableField _ _ _
+-*-decidableField = record { isDecidableField = record { isHeytingField = isHeytingField ; decidableInequality = _≠?_ }}