@@ -19,7 +19,7 @@ open import Data.Nat.Coprimality as C
19
19
using (Coprime; Bézout-coprime; coprime-/gcd; coprime?; ¬0-coprimeTo-2+)
20
20
open import Data.Nat.Base as ℕ using (ℕ; zero; suc) hiding (module ℕ )
21
21
import Data.Nat.DivMod as ℕ
22
- open import Data.Rational.Unnormalised.Base as ℚᵘ using (ℚᵘ; mkℚᵘ; _≢0 )
22
+ open import Data.Rational.Unnormalised.Base as ℚᵘ using (ℚᵘ; mkℚᵘ)
23
23
open import Data.Product
24
24
open import Data.Sign using (Sign)
25
25
open import Data.Sum.Base using (inj₂)
@@ -59,7 +59,7 @@ open ℚ public using ()
59
59
; denominatorℕ to ↧ₙ_
60
60
)
61
61
62
- mkℚ+ : ∀ n d → .{d≢0 : d ≢0 } → .(Coprime n d) → ℚ
62
+ mkℚ+ : ∀ n d → .{{_ : ℕ.NonZero d} } → .(Coprime n d) → ℚ
63
63
mkℚ+ n (suc d) coprime = mkℚ (+ n) d coprime
64
64
65
65
------------------------------------------------------------------------
@@ -121,21 +121,21 @@ p ≤ᵇ q = (↥ p ℤ.* ↧ q) ℤ.≤ᵇ (↥ q ℤ.* ↧ p)
121
121
-- A constructor for ℚ that takes two natural numbers, say 6 and 21,
122
122
-- and returns them in a normalized form, e.g. say 2 and 7
123
123
124
- normalize : ∀ (m n : ℕ) {n≢0 : n ≢0} → ℚ
125
- normalize m n {n≢0} = mkℚ+ ((m ℕ./ gcd m n) {{g≢0}}) ((n ℕ./ gcd m n) {{g≢0}})
126
- {n/g≢0} (coprime-/gcd m n {{g≢0}})
124
+ normalize : ∀ (m n : ℕ) .{{_ : ℕ.NonZero n}} → ℚ
125
+ normalize m n {{n≢0}} = mkℚ+ (m ℕ./ gcd m n) (n ℕ./ gcd m n) (coprime-/gcd m n)
127
126
where
128
- g≢0 = ℕ.≢-nonZero (gcd[m,n]≢0 m n (inj₂ (toWitnessFalse n≢0)))
129
- n/g≢0 = fromWitnessFalse (n/gcd[m,n]≢0 m n {{ℕ.≢-nonZero (toWitnessFalse n≢0)}} {{g≢0}})
127
+ instance
128
+ g≢0 = ℕ.≢-nonZero (gcd[m,n]≢0 m n (inj₂ (ℕ.≢-nonZero⁻¹ n≢0)))
129
+ n/g≢0 = ℕ.≢-nonZero (n/gcd[m,n]≢0 m n {{n≢0}} {{g≢0}})
130
130
131
131
-- A constructor for ℚ that (unlike mkℚ) automatically normalises it's
132
132
-- arguments. See the constants section below for how to use this operator.
133
133
134
134
infixl 7 _/_
135
135
136
- _/_ : (n : ℤ) (d : ℕ) → {d≢0 : d ≢0 } → ℚ
137
- (+ n / d) {d≢0} = normalize n d {d≢0}
138
- (-[1+ n ] / d) {d≢0} = - normalize (suc n) d {d≢0}
136
+ _/_ : (n : ℤ) (d : ℕ) → .{{_ : ℕ.NonZero d} } → ℚ
137
+ (+ n / d) = normalize n d
138
+ (-[1+ n ] / d) = - normalize (suc n) d
139
139
140
140
------------------------------------------------------------------------
141
141
-- Conversion to and from unnormalized rationals
@@ -225,13 +225,13 @@ _-_ : ℚ → ℚ → ℚ
225
225
p - q = p + (- q)
226
226
227
227
-- reciprocal: requires a proof that the numerator is not zero
228
- 1/_ : (p : ℚ) → .{n≢0 : ℤ.∣ ↥ p ∣ ≢0 } → ℚ
228
+ 1/_ : (p : ℚ) → .{{_ : NonZero p} } → ℚ
229
229
1/ mkℚ +[1+ n ] d prf = mkℚ +[1+ d ] n (C.sym prf)
230
230
1/ mkℚ -[1+ n ] d prf = mkℚ -[1+ d ] n (C.sym prf)
231
231
232
232
-- division: requires a proof that the denominator is not zero
233
- _÷_ : (p q : ℚ) → .{n≢0 : ℤ.∣ ↥ q ∣ ≢0 } → ℚ
234
- ( p ÷ q) {n≢0} = p * (1/ q) {n≢0}
233
+ _÷_ : (p q : ℚ) → .{{_ : NonZero q} } → ℚ
234
+ p ÷ q = p * (1/ q)
235
235
236
236
-- max
237
237
_⊔_ : (p q : ℚ) → ℚ
0 commit comments