{-# OPTIONS --safe --warning=error --without-K #-} open import LogicalFormulae open import Numbers.Naturals.Semiring open import Numbers.Naturals.Order open import Numbers.Naturals.Naturals open import Numbers.Naturals.Multiplication open import Numbers.Integers.Order open import Numbers.Integers.RingStructure.Ring open import Numbers.Integers.RingStructure.IntegralDomain open import Semirings.Definition open import Rings.EuclideanDomains.Definition open import Orders.Total.Definition open import Numbers.Naturals.EuclideanAlgorithm module Numbers.Integers.RingStructure.EuclideanDomain where private norm : ℤ → ℕ norm (nonneg x) = x norm (negSucc x) = succ x norm' : {a : ℤ} → (a!=0 : (a ≡ nonneg 0) → False) → ℕ norm' {a} _ = norm a multiplyIncreasesSuccLemma : (a b : ℕ) → succ (succ a)