@@ -23,7 +23,7 @@ import Data.Nat.Properties as ℕ
2323open import Data.Nat.Solver
2424open import Data.Product.Base using (proj₁; proj₂; _,_; _×_)
2525open 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)
2727import Data.Sign.Properties as Sign
2828open import Function.Base using (_∘_; _$_; id)
2929open import Level using (0ℓ)
@@ -508,6 +508,10 @@ neg-cancel-< { -[1+ m ]} { -[1+ n ]} (+<+ m<n) = -<- (s<s⁻¹ m<n)
508508------------------------------------------------------------------------
509509-- Properties of sign and _◃_
510510
511+ ◃-nonZero : ∀ s n .{{_ : ℕ.NonZero n}} → NonZero (s ◃ n)
512+ ◃-nonZero Sign.- (ℕ.suc _) = _
513+ ◃-nonZero Sign.+ (ℕ.suc _) = _
514+
511515◃-inverse : ∀ i → sign i ◃ ∣ i ∣ ≡ i
512516◃-inverse -[1+ n ] = refl
513517◃-inverse +0 = refl
@@ -1348,7 +1352,7 @@ private
13481352*-assoc i j +0 rewrite
13491353 ℕ.*-zeroʳ ∣ j ∣
13501354 | ℕ.*-zeroʳ ∣ i ∣
1351- | ℕ.*-zeroʳ ∣ sign i 𝕊 * sign j ◃ ∣ i ∣ ℕ.* ∣ j ∣ ∣
1355+ | ℕ.*-zeroʳ ∣ sign i Sign. * sign j ◃ ∣ i ∣ ℕ.* ∣ j ∣ ∣
13521356 = refl
13531357*-assoc -[1+ m ] -[1+ n ] +[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
13541358*-assoc -[1+ m ] +[1+ n ] -[1+ o ] = cong (+_ ∘ suc) (lemma m n o)
@@ -1390,11 +1394,11 @@ private
13901394 = refl
13911395*-distribʳ-+ x +0 z
13921396 rewrite +-identityˡ z
1393- | +-identityˡ (sign z 𝕊 * sign x ◃ ∣ z ∣ ℕ.* ∣ x ∣)
1397+ | +-identityˡ (sign z Sign. * sign x ◃ ∣ z ∣ ℕ.* ∣ x ∣)
13941398 = refl
13951399*-distribʳ-+ x y +0
13961400 rewrite +-identityʳ y
1397- | +-identityʳ (sign y 𝕊 * sign x ◃ ∣ y ∣ ℕ.* ∣ x ∣)
1401+ | +-identityʳ (sign y Sign. * sign x ◃ ∣ y ∣ ℕ.* ∣ x ∣)
13981402 = refl
13991403*-distribʳ-+ -[1+ m ] -[1+ n ] -[1+ o ] = cong (+_) $
14001404 solve 3 (λ m n o → (con 2 :+ n :+ o) :* (con 1 :+ m)
@@ -1594,6 +1598,9 @@ private
15941598abs-* : ℤtoℕ.Homomorphic₂ ∣_∣ _*_ ℕ._*_
15951599abs-* i j = abs-◃ _ _
15961600
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+
15971604*-cancelʳ-≡ : ∀ i j k .{{_ : NonZero k}} → i * k ≡ j * k → i ≡ j
15981605*-cancelʳ-≡ i j k eq with sign-cong′ eq
15991606... | 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
16311638... | inj₁ ∣i∣≡0 = inj₁ (∣i∣≡0⇒i≡0 ∣i∣≡0)
16321639... | inj₂ ∣j∣≡0 = inj₂ (∣i∣≡0⇒i≡0 ∣j∣≡0)
16331640
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+
16341644------------------------------------------------------------------------
16351645-- Properties of _^_
16361646------------------------------------------------------------------------
@@ -1704,7 +1714,7 @@ neg-distribʳ-* i j = begin
17041714------------------------------------------------------------------------
17051715-- Properties of _*_ and _◃_
17061716
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)
17081718◃-distrib-* s t zero zero = refl
17091719◃-distrib-* s t zero (suc n) = refl
17101720◃-distrib-* s t (suc m) zero =
@@ -1713,7 +1723,7 @@ neg-distribʳ-* i j = begin
17131723 (*-comm (t ◃ zero) (s ◃ suc m))
17141724◃-distrib-* s t (suc m) (suc n) =
17151725 sym (cong₂ _◃_
1716- (cong₂ _𝕊 *_ (sign-◃ s (suc m)) (sign-◃ t (suc n)))
1726+ (cong₂ Sign._ *_ (sign-◃ s (suc m)) (sign-◃ t (suc n)))
17171727 (∣s◃m∣*∣t◃n∣≡m*n s t (suc m) (suc n)))
17181728
17191729------------------------------------------------------------------------
@@ -1828,7 +1838,7 @@ neg-distribʳ-* i j = begin
18281838-- Properties of _*_ and ∣_∣
18291839
18301840∣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-*
18321842
18331843------------------------------------------------------------------------
18341844-- Properties of _⊓_ and _⊔_
0 commit comments