@@ -2,7 +2,8 @@ module Cubical.Data.Int.Fast.Base where
22
33open import Cubical.Foundations.Prelude
44open import Cubical.Data.Nat as ℕ hiding (_+_ ; _·_)
5- open import Cubical.Data.Int.Base hiding (_ℕ-_ ; _+_ ; _-_ ; _·_) public
5+ open import Cubical.Data.Int.Base hiding (_ℕ-_ ; _+_ ; _-_ ; _·_ ; sumFinℤ ; sumFinℤId) public
6+ open import Cubical.Data.Fin.Inductive.Base
67
78infixl 7 _·_
89infixl 6 _+_ _-_
@@ -15,18 +16,25 @@ _ℕ-_ : ℕ → ℕ → ℤ
1516m ℕ- n = ℕ-hlp (m ℕ.∸ n) (n ℕ.∸ m)
1617
1718_+_ : ℤ → ℤ → ℤ
18- pos n + pos n₁ = pos (n ℕ.+ n₁ )
19- negsuc n + negsuc n₁ = negsuc (suc (n ℕ.+ n₁ ))
20- pos n + negsuc n₁ = n ℕ- (suc n₁ )
21- negsuc n + pos n₁ = n₁ ℕ- (suc n )
19+ pos m + pos n = pos (m ℕ.+ n)
20+ negsuc m + negsuc n = negsuc (suc (m ℕ.+ n))
21+ pos m + negsuc n = m ℕ- (suc n)
22+ negsuc m + pos n = n ℕ- (suc m )
2223
2324_-_ : ℤ → ℤ → ℤ
2425m - n = m + (- n)
2526
2627_·_ : ℤ → ℤ → ℤ
27- pos n · pos n₁ = pos (n ℕ.· n₁)
28- pos zero · negsuc n₁ = pos zero
29- pos (suc n) · negsuc n₁ = negsuc (predℕ (suc n ℕ.· suc n₁))
30- negsuc n · pos zero = pos zero
31- negsuc n · pos (suc n₁) = negsuc (predℕ (suc n ℕ.· suc n₁))
32- negsuc n · negsuc n₁ = pos (suc n ℕ.· suc n₁)
28+ pos m · pos n = pos (m ℕ.· n)
29+ pos zero · negsuc n = pos zero
30+ pos (suc m) · negsuc n = negsuc (predℕ (suc m ℕ.· suc n))
31+ negsuc m · pos zero = pos zero
32+ negsuc m · pos (suc n) = negsuc (predℕ (suc m ℕ.· suc n))
33+ negsuc m · negsuc n = pos (suc m ℕ.· suc n)
34+
35+ sumFinℤ : {n : ℕ} (f : Fin n → ℤ) → ℤ
36+ sumFinℤ {n = n} f = sumFinGen {n = n} _+_ 0 f
37+
38+ sumFinℤId : (n : ℕ) {f g : Fin n → ℤ}
39+ → ((x : _) → f x ≡ g x) → sumFinℤ {n = n} f ≡ sumFinℤ {n = n} g
40+ sumFinℤId n t i = sumFinℤ {n = n} λ x → t x i
0 commit comments