@@ -23,7 +23,7 @@ import Data.Nat.Properties as ℕ
23
23
open import Data.Nat.Solver
24
24
open import Data.Product.Base using (proj₁; proj₂; _,_; _×_)
25
25
open import Data.Sum.Base as Sum using (_⊎_; inj₁; inj₂; [_,_]′)
26
- open import Data.Sign as Sign using (Sign) renaming (_*_ to _𝕊*_)
26
+ open import Data.Sign as Sign using (Sign)
27
27
import Data.Sign.Properties as Sign
28
28
open import Function.Base using (_∘_; _$_; id)
29
29
open import Level using (0ℓ)
@@ -508,6 +508,10 @@ neg-cancel-< { -[1+ m ]} { -[1+ n ]} (+<+ m<n) = -<- (s<s⁻¹ m<n)
508
508
------------------------------------------------------------------------
509
509
-- Properties of sign and _◃_
510
510
511
+ ◃-nonZero : ∀ s n .{{_ : ℕ.NonZero n}} → NonZero (s ◃ n)
512
+ ◃-nonZero Sign.- (ℕ.suc _) = _
513
+ ◃-nonZero Sign.+ (ℕ.suc _) = _
514
+
511
515
◃-inverse : ∀ i → sign i ◃ ∣ i ∣ ≡ i
512
516
◃-inverse -[1+ n ] = refl
513
517
◃-inverse +0 = refl
@@ -1348,7 +1352,7 @@ private
1348
1352
*-assoc i j +0 rewrite
1349
1353
ℕ.*-zeroʳ ∣ j ∣
1350
1354
| ℕ.*-zeroʳ ∣ i ∣
1351
- | ℕ.*-zeroʳ ∣ sign i 𝕊 * sign j ◃ ∣ i ∣ ℕ.* ∣ j ∣ ∣
1355
+ | ℕ.*-zeroʳ ∣ sign i Sign. * sign j ◃ ∣ i ∣ ℕ.* ∣ j ∣ ∣
1352
1356
= refl
1353
1357
*-assoc -[1+ m ] -[1+ n ] +[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
1354
1358
*-assoc -[1+ m ] +[1+ n ] -[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
@@ -1390,11 +1394,11 @@ private
1390
1394
= refl
1391
1395
*-distribʳ-+ x +0 z
1392
1396
rewrite +-identityˡ z
1393
- | +-identityˡ (sign z 𝕊 * sign x ◃ ∣ z ∣ ℕ.* ∣ x ∣)
1397
+ | +-identityˡ (sign z Sign. * sign x ◃ ∣ z ∣ ℕ.* ∣ x ∣)
1394
1398
= refl
1395
1399
*-distribʳ-+ x y +0
1396
1400
rewrite +-identityʳ y
1397
- | +-identityʳ (sign y 𝕊 * sign x ◃ ∣ y ∣ ℕ.* ∣ x ∣)
1401
+ | +-identityʳ (sign y Sign. * sign x ◃ ∣ y ∣ ℕ.* ∣ x ∣)
1398
1402
= refl
1399
1403
*-distribʳ-+ -[1+ m ] -[1+ n ] -[1+ o ] = cong (+_) $
1400
1404
solve 3 (λ m n o → (con 2 :+ n :+ o) :* (con 1 :+ m)
@@ -1594,6 +1598,9 @@ private
1594
1598
abs-* : ℤtoℕ.Homomorphic₂ ∣_∣ _*_ ℕ._*_
1595
1599
abs-* i j = abs-◃ _ _
1596
1600
1601
+ sign-* : ∀ i j → .{{NonZero (i * j)}} → sign (i * j) ≡ sign i Sign.* sign j
1602
+ sign-* i j rewrite abs-* i j = sign-◃ (sign i Sign.* sign j) (∣ i ∣ ℕ.* ∣ j ∣)
1603
+
1597
1604
*-cancelʳ-≡ : ∀ i j k .{{_ : NonZero k}} → i * k ≡ j * k → i ≡ j
1598
1605
*-cancelʳ-≡ i j k eq with sign-cong′ eq
1599
1606
... | inj₁ s[ik]≡s[jk] = ◃-cong
@@ -1631,6 +1638,9 @@ i*j≡0⇒i≡0∨j≡0 i p with ℕ.m*n≡0⇒m≡0∨n≡0 ∣ i ∣ (abs-cong
1631
1638
... | inj₁ ∣i∣≡0 = inj₁ (∣i∣≡0⇒i≡0 ∣i∣≡0)
1632
1639
... | inj₂ ∣j∣≡0 = inj₂ (∣i∣≡0⇒i≡0 ∣j∣≡0)
1633
1640
1641
+ i*j≢0 : ∀ i j .{{_ : NonZero i}} .{{_ : NonZero j}} → NonZero (i * j)
1642
+ i*j≢0 i j rewrite abs-* i j = ℕ.m*n≢0 ∣ i ∣ ∣ j ∣
1643
+
1634
1644
------------------------------------------------------------------------
1635
1645
-- Properties of _^_
1636
1646
------------------------------------------------------------------------
@@ -1704,7 +1714,7 @@ neg-distribʳ-* i j = begin
1704
1714
------------------------------------------------------------------------
1705
1715
-- Properties of _*_ and _◃_
1706
1716
1707
- ◃-distrib-* : ∀ s t m n → (s 𝕊 * t) ◃ (m ℕ.* n) ≡ (s ◃ m) * (t ◃ n)
1717
+ ◃-distrib-* : ∀ s t m n → (s Sign. * t) ◃ (m ℕ.* n) ≡ (s ◃ m) * (t ◃ n)
1708
1718
◃-distrib-* s t zero zero = refl
1709
1719
◃-distrib-* s t zero (suc n) = refl
1710
1720
◃-distrib-* s t (suc m) zero =
@@ -1713,7 +1723,7 @@ neg-distribʳ-* i j = begin
1713
1723
(*-comm (t ◃ zero) (s ◃ suc m))
1714
1724
◃-distrib-* s t (suc m) (suc n) =
1715
1725
sym (cong₂ _◃_
1716
- (cong₂ _𝕊 *_ (sign-◃ s (suc m)) (sign-◃ t (suc n)))
1726
+ (cong₂ Sign._ *_ (sign-◃ s (suc m)) (sign-◃ t (suc n)))
1717
1727
(∣s◃m∣*∣t◃n∣≡m*n s t (suc m) (suc n)))
1718
1728
1719
1729
------------------------------------------------------------------------
@@ -1828,7 +1838,7 @@ neg-distribʳ-* i j = begin
1828
1838
-- Properties of _*_ and ∣_∣
1829
1839
1830
1840
∣i*j∣≡∣i∣*∣j∣ : ∀ i j → ∣ i * j ∣ ≡ ∣ i ∣ ℕ.* ∣ j ∣
1831
- ∣i*j∣≡∣i∣*∣j∣ i j = abs-◃ (sign i 𝕊* sign j) (∣ i ∣ ℕ.* ∣ j ∣)
1841
+ ∣i*j∣≡∣i∣*∣j∣ = abs-*
1832
1842
1833
1843
------------------------------------------------------------------------
1834
1844
-- Properties of _⊓_ and _⊔_
0 commit comments