{-# OPTIONS --safe --warning=error --without-K #-} open import LogicalFormulae open import Groups.Definition open import Numbers.Naturals.Definition open import Numbers.Naturals.Order open import Setoids.Setoids open import Sets.EquivalenceRelations open import Rings.Definition open import Rings.IntegralDomains.Definition open import Orders.Total.Definition open import Agda.Primitive using (Level; lzero; lsuc; _⊔_) module Rings.EuclideanDomains.Definition {a b : _} {A : Set a} {S : Setoid {a} {b} A} {_+_ _*_ : A → A → A} (R : Ring S _+_ _*_) where open import Rings.Divisible.Definition R open Setoid S open Equivalence eq open Ring R open Group additiveGroup record DivisionAlgorithmResult (norm : {a : A} → ((a ∼ 0R) → False) → ℕ) {x y : A} (x!=0 : (x ∼ 0R) → False) (y!=0 : (y ∼ 0R) → False) : Set (a ⊔ b) where field quotient : A rem : A remSmall : (rem ∼ 0R) || Sg ((rem ∼ 0R) → False) (λ rem!=0 → (norm rem!=0)