Skip to content

Commit bde655f

Browse files
authored
Remove all external use of less-than-or-equal beyond Data.Nat.* (#2256)
* removed all external use of `less-than-or-equal` beyond `Data.Nat.*` * use of `variable`s
1 parent f59a634 commit bde655f

File tree

1 file changed

+48
-49
lines changed

1 file changed

+48
-49
lines changed

src/Data/Vec/Bounded/Base.agda

+48-49
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
module Data.Vec.Bounded.Base where
1010

1111
open import Data.Nat.Base
12-
import Data.Nat.Properties as ℕₚ
12+
import Data.Nat.Properties as
1313
open import Data.List.Base as List using (List)
14-
open import Data.List.Extrema ℕₚ.≤-totalOrder
14+
open import Data.List.Extrema .≤-totalOrder
1515
open import Data.List.Relation.Unary.All as All using (All)
16-
import Data.List.Relation.Unary.All.Properties as Allₚ
16+
import Data.List.Relation.Unary.All.Properties as All
1717
open import Data.List.Membership.Propositional using (mapWith∈)
1818
open import Data.Product.Base using (∃; _×_; _,_; proj₁; proj₂)
1919
open import Data.Vec.Base as Vec using (Vec)
2020
open import Data.These.Base as These using (These)
2121
open import Function.Base using (_∘_; id; _$_)
2222
open import Level using (Level)
2323
open import Relation.Nullary.Decidable.Core using (recompute)
24-
open import Relation.Binary.PropositionalEquality.Core as P using (_≡_; refl)
24+
open import Relation.Binary.PropositionalEquality.Core as using (_≡_)
2525
open import Relation.Binary.PropositionalEquality.Properties
2626
using (module ≡-Reasoning)
2727

@@ -31,6 +31,7 @@ private
3131
A : Set a
3232
B : Set b
3333
C : Set c
34+
m n :
3435

3536
------------------------------------------------------------------------
3637
-- Types
@@ -45,97 +46,95 @@ record Vec≤ (A : Set a) (n : ℕ) : Set a where
4546
------------------------------------------------------------------------
4647
-- Conversion functions
4748

48-
fromVec : {n} Vec A n Vec≤ A n
49-
fromVec v = v , ℕₚ.≤-refl
49+
fromVec : Vec A n Vec≤ A n
50+
fromVec v = v , .≤-refl
5051

51-
padRight : {n} A Vec≤ A n Vec A n
52+
padRight : A Vec≤ A n Vec A n
5253
padRight a (vs , m≤n)
53-
with recompute (_ ℕₚ.≤″? _) (ℕₚ.≤⇒≤″ m≤n)
54-
... | less-than-or-equal refl = vs Vec.++ Vec.replicate _ a
54+
with ≤″-offset k recompute (_ .≤″? _) (.≤⇒≤″ m≤n)
55+
= vs Vec.++ Vec.replicate k a
5556

56-
padLeft : {n} A Vec≤ A n Vec A n
57-
padLeft a as@(vs , m≤n)
58-
with recompute (_ ℕₚ.≤″? _) (ℕₚ.≤⇒≤″ m≤n)
59-
... | less-than-or-equal {k} ∣as∣+k≡n
60-
with P.trans (ℕₚ.+-comm k (Vec≤.length as)) ∣as∣+k≡n
61-
... | refl = Vec.replicate k a Vec.++ vs
57+
padLeft : A Vec≤ A n Vec A n
58+
padLeft a record { length = m ; vec = vs ; bound = m≤n }
59+
with ≤″-offset k recompute (_ ℕ.≤″? _) (ℕ.≤⇒≤″ m≤n)
60+
rewrite ℕ.+-comm m k
61+
= Vec.replicate k a Vec.++ vs
6262

6363
private
64-
split : {m n} k m + k ≡ n ⌊ k /2⌋ + (m + ⌈ k /2⌉) ≡ n
65-
split {m} {n} k eq = begin
66-
⌊ k /2⌋ + (m + ⌈ k /2⌉) ≡⟨ ℕₚ.+-comm ⌊ k /2⌋ _ ⟩
67-
m + ⌈ k /2⌉ + ⌊ k /2⌋ ≡⟨ ℕₚ.+-assoc m ⌈ k /2⌉ ⌊ k /2⌋ ⟩
68-
m + (⌈ k /2⌉ + ⌊ k /2⌋) ≡⟨ P.cong (m +_) (ℕₚ.+-comm ⌈ k /2⌉ ⌊ k /2⌋) ⟩
69-
m + (⌊ k /2⌋ + ⌈ k /2⌉) ≡⟨ P.cong (m +_) (ℕₚ.⌊n/2⌋+⌈n/2⌉≡n k) ⟩
70-
m + k ≡⟨ eq ⟩
71-
n ∎ where open ≡-Reasoning
72-
73-
padBoth : {n} A A Vec≤ A n Vec A n
74-
padBoth aₗ aᵣ as@(vs , m≤n)
75-
with recompute (_ ℕₚ.≤″? _) (ℕₚ.≤⇒≤″ m≤n)
76-
... | less-than-or-equal {k} ∣as∣+k≡n
77-
with split k ∣as∣+k≡n
78-
... | refl = Vec.replicate ⌊ k /2⌋ aₗ
64+
split : m k m + k ≡ ⌊ k /2⌋ + (m + ⌈ k /2⌉)
65+
split m k = begin
66+
m + k ≡⟨ ≡.cong (m +_) (ℕ.⌊n/2⌋+⌈n/2⌉≡n k) ⟨
67+
m + (⌊ k /2⌋ + ⌈ k /2⌉) ≡⟨ ≡.cong (m +_) (ℕ.+-comm ⌊ k /2⌋ ⌈ k /2⌉) ⟩
68+
m + (⌈ k /2⌉ + ⌊ k /2⌋) ≡⟨ ℕ.+-assoc m ⌈ k /2⌉ ⌊ k /2⌋ ⟨
69+
m + ⌈ k /2⌉ + ⌊ k /2⌋ ≡⟨ ℕ.+-comm _ ⌊ k /2⌋ ⟩
70+
⌊ k /2⌋ + (m + ⌈ k /2⌉) ∎
71+
where open ≡-Reasoning
72+
73+
padBoth : A A Vec≤ A n Vec A n
74+
padBoth aₗ aᵣ record { length = m ; vec = vs ; bound = m≤n }
75+
with ≤″-offset k recompute (_ ℕ.≤″? _) (ℕ.≤⇒≤″ m≤n)
76+
rewrite split m k
77+
= Vec.replicate ⌊ k /2⌋ aₗ
7978
Vec.++ vs
8079
Vec.++ Vec.replicate ⌈ k /2⌉ aᵣ
8180

8281

8382
fromList : (as : List A) Vec≤ A (List.length as)
8483
fromList = fromVec ∘ Vec.fromList
8584

86-
toList : {n} Vec≤ A n List A
85+
toList : Vec≤ A n List A
8786
toList = Vec.toList ∘ Vec≤.vec
8887

8988
------------------------------------------------------------------------
9089
-- Creating new Vec≤ vectors
9190

92-
replicate : {m n} .(m≤n : m ≤ n) A Vec≤ A n
91+
replicate : .(m≤n : m ≤ n) A Vec≤ A n
9392
replicate m≤n a = Vec.replicate _ a , m≤n
9493

95-
[] : {n} Vec≤ A n
94+
[] : Vec≤ A n
9695
[] = Vec.[] , z≤n
9796

9897
infixr 5 _∷_
99-
_∷_ : {n} A Vec≤ A n Vec≤ A (suc n)
98+
_∷_ : A Vec≤ A n Vec≤ A (suc n)
10099
a ∷ (as , p) = a Vec.∷ as , s≤s p
101100

102101
------------------------------------------------------------------------
103102
-- Modifying Vec≤ vectors
104103

105-
≤-cast : {m n} .(m≤n : m ≤ n) Vec≤ A m Vec≤ A n
106-
≤-cast m≤n (v , p) = v , ℕₚ.≤-trans p m≤n
104+
≤-cast : .(m≤n : m ≤ n) Vec≤ A m Vec≤ A n
105+
≤-cast m≤n (v , p) = v , .≤-trans p m≤n
107106

108-
≡-cast : {m n} .(eq : m ≡ n) Vec≤ A m Vec≤ A n
109-
≡-cast m≡n = ≤-cast (ℕₚ.≤-reflexive m≡n)
107+
≡-cast : .(eq : m ≡ n) Vec≤ A m Vec≤ A n
108+
≡-cast m≡n = ≤-cast (.≤-reflexive m≡n)
110109

111-
map : (A B) {n} Vec≤ A n Vec≤ B n
110+
map : (A B) Vec≤ A n Vec≤ B n
112111
map f (v , p) = Vec.map f v , p
113112

114-
reverse : {n} Vec≤ A n Vec≤ A n
113+
reverse : Vec≤ A n Vec≤ A n
115114
reverse (v , p) = Vec.reverse v , p
116115

117116
-- Align and Zip.
118117

119-
alignWith : (These A B C) {n} Vec≤ A n Vec≤ B n Vec≤ C n
120-
alignWith f (as , p) (bs , q) = Vec.alignWith f as bs , ℕₚ.⊔-lub p q
118+
alignWith : (These A B C) Vec≤ A n Vec≤ B n Vec≤ C n
119+
alignWith f (as , p) (bs , q) = Vec.alignWith f as bs , .⊔-lub p q
121120

122-
zipWith : (A B C) {n} Vec≤ A n Vec≤ B n Vec≤ C n
123-
zipWith f (as , p) (bs , q) = Vec.restrictWith f as bs , ℕₚ.m≤n⇒m⊓o≤n _ p
121+
zipWith : (A B C) Vec≤ A n Vec≤ B n Vec≤ C n
122+
zipWith f (as , p) (bs , q) = Vec.restrictWith f as bs , .m≤n⇒m⊓o≤n _ p
124123

125-
zip : {n} Vec≤ A n Vec≤ B n Vec≤ (A × B) n
124+
zip : Vec≤ A n Vec≤ B n Vec≤ (A × B) n
126125
zip = zipWith _,_
127126

128-
align : {n} Vec≤ A n Vec≤ B n Vec≤ (These A B) n
127+
align : Vec≤ A n Vec≤ B n Vec≤ (These A B) n
129128
align = alignWith id
130129

131130
-- take and drop
132131

133-
take : {m} n Vec≤ A m Vec≤ A (n ⊓ m)
132+
take : n Vec≤ A m Vec≤ A (n ⊓ m)
134133
take zero _ = []
135134
take (suc n) (Vec.[] , p) = []
136135
take {m = suc m} (suc n) (a Vec.∷ as , p) = a ∷ take n (as , s≤s⁻¹ p)
137136

138-
drop : {m} n Vec≤ A m Vec≤ A (m ∸ n)
137+
drop : n Vec≤ A m Vec≤ A (m ∸ n)
139138
drop zero v = v
140139
drop (suc n) (Vec.[] , p) = []
141140
drop {m = suc m} (suc n) (a Vec.∷ as , p) = drop n (as , s≤s⁻¹ p)
@@ -150,7 +149,7 @@ rectangle {A = A} rows = width , padded where
150149
width = max 0 sizes
151150

152151
all≤ : All (λ v proj₁ v ≤ width) rows
153-
all≤ = Allₚ.map⁻ (xs≤max 0 sizes)
152+
all≤ = All.map⁻ (xs≤max 0 sizes)
154153

155154
padded : List (Vec≤ A width)
156155
padded = mapWith∈ rows $ λ {x} x∈rows

0 commit comments

Comments
 (0)