@@ -12,6 +12,20 @@ Highlights
12
12
Bug-fixes
13
13
---------
14
14
15
+ * The example module ` Maybe ` in ` Relation.Binary.Construct.Closure.Reflexive ` was
16
+ accidentally exposed publicly. It has been made private.
17
+
18
+ * Fixed the type of the proof ` map-id ` in ` List.Relation.Unary.All.Properties ` ,
19
+ which was incorrectly abstracted over unused module parameters.
20
+
21
+ * Fixed bug where ` IsRelIsomorphism ` in ` Relation.Binary.Morphism.Structures ` did not
22
+ publicly re-export the contents of ` IsRelMonomorphism ` .
23
+
24
+ * The binary relation ` _≉_ ` exposed by records in ` Relation.Binary.Bundles ` now has
25
+ the correct infix precedence.
26
+
27
+ * Added version to library name
28
+
15
29
Non-backwards compatible changes
16
30
--------------------------------
17
31
@@ -46,12 +60,69 @@ Non-backwards compatible changes
46
60
` Agda.Builtin.Maybe ` . The ` Foreign.Haskell ` modules and definitions
47
61
corresponding to ` Maybe ` have been removed.
48
62
63
+ * The internal build utilities package ` lib.cabal ` has been renamed
64
+ ` agda-stdlib-utils.cabal ` to avoid potential conflict or confusion.
65
+ Please note that the package is not intended for external use.
66
+
67
+ * The module ` Algebra.Construct.Zero ` and ` Algebra.Module.Construct.Zero `
68
+ are now level-polymorphic, each taking two implicit level parameters.
69
+
70
+ * Previously the definition of ` _⊖_ ` in ` Data.Integer.Base ` was defined
71
+ inductively as:
72
+ ``` agda
73
+ _⊖_ : ℕ → ℕ → ℤ
74
+ m ⊖ ℕ.zero = + m
75
+ ℕ.zero ⊖ ℕ.suc n = -[1+ n ]
76
+ ℕ.suc m ⊖ ℕ.suc n = m ⊖ n
77
+ ```
78
+ which meant that the unary arguments had to be evaluated. To make it
79
+ much faster it's definition has been changed to use operations on ` ℕ `
80
+ that are backed by builtin operations:
81
+ ``` agda
82
+ _⊖_ : ℕ → ℕ → ℤ
83
+ m ⊖ n with m ℕ.<ᵇ n
84
+ ... | true = - + (n ℕ.∸ m)
85
+ ... | false = + (m ℕ.∸ n)
86
+ ```
87
+
49
88
Deprecated modules
50
89
------------------
51
90
91
+ * The module ` TransitiveClosure ` in ` Induction.WellFounded ` has been deprecated.
92
+ You should instead use the standard definition of transitive closure and the
93
+ accompanying proof of well-foundness defined in ` Relation.Binary.Construct.Closure.Transitive ` .
94
+
95
+ * The module ` Relation.Binary.OrderMorphism ` has been deprecated, as the new
96
+ ` (Homo/Mono/Iso)morphism ` infrastructure in ` Algebra.Morphism.Structures ` is now
97
+ complete. The new definitions are parameterised by raw bundles instead of bundles
98
+ meaning they are much more flexible to work with.
99
+
52
100
Deprecated names
53
101
----------------
54
102
103
+ * The immediate contents of ` Algebra.Morphism ` have been deprecated, as the new
104
+ ` (Homo/Mono/Iso)morphism ` infrastructure in ` Algebra.Morphism.Structures ` is now
105
+ complete. The new definitions are parameterised by raw bundles instead of bundles
106
+ meaning they are much more flexible to work with. The replacements are as following:
107
+ ``` agda
108
+ IsSemigroupMorphism ↦ IsSemigroupHomomorphism
109
+ IsMonoidMorphism ↦ IsMonoidHomomorphism
110
+ IsCommutativeMonoidMorphism ↦ IsMonoidHomomorphism
111
+ IsIdempotentCommutativeMonoidMorphism ↦ IsMonoidHomomorphism
112
+ IsGroupMorphism ↦ IsGroupHomomorphism
113
+ IsAbelianGroupMorphism ↦ IsGroupHomomorphism
114
+ ```
115
+
116
+ * In ` Relation.Binary.Construct.Closure.Reflexive ` :
117
+ ``` agda
118
+ Refl ↦ ReflClosure
119
+ ```
120
+
121
+ * In ` Relation.Binary.Construct.Closure.Transitive ` :
122
+ ``` agda
123
+ Plus′ ↦ TransClosure
124
+ ```
125
+
55
126
New modules
56
127
-----------
57
128
@@ -61,6 +132,13 @@ New modules
61
132
```
62
133
which re-exports and augments the contents of ` Agda.Builtin.Reflection.External ` .
63
134
135
+ * Added various generic morphism constructions for binary relations:
136
+ ``` agda
137
+ Relation.Binary.Morphism.Construct.Composition
138
+ Relation.Binary.Morphism.Construct.Constant
139
+ Relation.Binary.Morphism.Construct.Identity
140
+ ```
141
+
64
142
* Added ` Reflection.Traversal ` for generic de Bruijn-aware traversals of reflected terms.
65
143
* Added ` Reflection.DeBruijn ` with weakening, strengthening and free variable operations
66
144
on reflected terms.
@@ -72,13 +150,141 @@ New modules
72
150
73
151
* Added ` Relation.Unary.Sized ` for unary relations over sized types now that ` Size ` lives in it's own universe since Agda 2.6.2.
74
152
153
+ * Added ` Relation.Binary.TypeClasses ` for type classes to be used with instance search.
154
+ * Added various modules containing ` instance ` declarations:
155
+ ` Data.Bool.Instances ` , ` Data.Char.Instances ` , ` Data.Fin.Instances ` ,
156
+ ` Data.Float.Instances ` , ` Data.Integer.Instances ` ,
157
+ ` Data.List.Instances ` , ` Data.Nat.Instances ` ,
158
+ ` Data.Nat.Binary.Instances ` , ` Data.Product.Instances ` ,
159
+ ` Data.Rational.Instances ` , ` Data.Sign.Instances ` ,
160
+ ` Data.String.Instances ` , ` Data.Sum.Instances ` ,
161
+ ` Data.These.Instances ` , ` Data.Unit.Instances ` ,
162
+ ` Data.Unit.Polymorphic.Instances ` , ` Data.Vec.Instances ` ,
163
+ ` Data.Word.Instances ` , and ` Reflection.Instances ` .
164
+
165
+ * Generic divisibility over algebraic structures
166
+ ```
167
+ Algebra.Divisibility
168
+ Algebra.Properties.Magma.Divisibility
169
+ Algebra.Properties.Semigroup.Divisibility
170
+ Algebra.Properties.Monoid.Divisibility
171
+ Algebra.Properties.CommutativeSemigroup.Divisibility
172
+ ```
173
+
75
174
Other major changes
76
175
-------------------
77
176
177
+ * The new module ` Relation.Binary.TypeClasses ` re-exports ` _≟_ ` from
178
+ ` IsDecEquivalence ` and ` _≤?_ ` from ` IsDecTotalOrder ` where the
179
+ principal argument has been made into an instance argument. This
180
+ enables automatic resolution if the corresponding module
181
+ ` Data.*.Instances ` (or ` Reflection.Instances ` ) is imported as well.
182
+ For example, if ` Relation.Binary.TypeClasses ` , ` Data.Nat.Instances ` ,
183
+ and ` Data.Bool.Instances ` have been imported, then ` true ≟ true ` has
184
+ type ` Dec (true ≡ true) ` , while ` 0 ≟ 1 ` has type ` Dec (0 ≡ 1) ` . More
185
+ examples can be found in ` README.Relation.Binary.TypeClasses ` .
186
+
78
187
Other minor additions
79
188
---------------------
80
189
81
190
* Added new type in ` Size ` :
82
191
``` agda
83
192
SizedSet ℓ = Size → Set ℓ
84
193
```
194
+
195
+ * All bundles in ` Algebra.Bundles ` now re-export the binary relation ` _≉_ ` from the underlying ` Setoid ` .
196
+
197
+ * Added ` Reflection.TypeChecking.Format.errorPartFmt ` .
198
+
199
+ * Added new properties to ` Data.List.Properties ` :
200
+ ``` agda
201
+ concat-++ : concat xss ++ concat yss ≡ concat (xss ++ yss)
202
+ concat-concat : concat ∘ map concat ≗ concat ∘ concat
203
+ concat-[-] : concat ∘ map [_] ≗ id
204
+ ```
205
+
206
+ * Added new records to ` Algebra.Bundles ` :
207
+ ``` agda
208
+ CommutativeMagma c ℓ : Set (suc (c ⊔ ℓ))
209
+ RawNearSemiring c ℓ : Set (suc (c ⊔ ℓ))
210
+ RawLattice c ℓ : Set (suc (c ⊔ ℓ))
211
+ CancellativeCommutativeSemiring c ℓ : Set (suc (c ⊔ ℓ))
212
+ ```
213
+
214
+ * Added new definitions to ` Algebra.Definitions ` :
215
+ ``` agda
216
+ AlmostLeftCancellative e _•_ = ∀ {x} y z → ¬ x ≈ e → (x • y) ≈ (x • z) → y ≈ z
217
+ AlmostRightCancellative e _•_ = ∀ {x} y z → ¬ x ≈ e → (y • x) ≈ (z • x) → y ≈ z
218
+ AlmostCancellative e _•_ = AlmostLeftCancellative e _•_ × AlmostRightCancellative e _•_
219
+ ```
220
+
221
+ * Added new records to ` Algebra.Morphism.Structures ` :
222
+ ``` agda
223
+ IsNearSemiringHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
224
+ IsNearSemiringMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
225
+ IsNearSemiringIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
226
+ IsSemiringHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
227
+ IsSemiringMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
228
+ IsSemiringIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
229
+ IsLatticeHomomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
230
+ IsLatticeMonomorphism (⟦_⟧ : A → B) : Set (a ⊔ ℓ₁ ⊔ ℓ₂)
231
+ IsLatticeIsomorphism (⟦_⟧ : A → B) : Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
232
+ ```
233
+
234
+ * Added new definitions to ` Algebra.Structures ` :
235
+ ``` agda
236
+ IsCommutativeMagma (• : Op₂ A) : Set (a ⊔ ℓ)
237
+ IsCancellativeCommutativeSemiring (+ * : Op₂ A) (0# 1# : A) : Set (a ⊔ ℓ)
238
+ ```
239
+
240
+ * Added new proofs in ` Data.Integer.Properties ` :
241
+ ``` agda
242
+ [1+m]⊖[1+n]≡m⊖n : suc m ⊖ suc n ≡ m ⊖ n
243
+ ⊖-≤ : m ≤ n → m ⊖ n ≡ - + (n ∸ m)
244
+ -m+n≡n⊖m : - (+ m) + + n ≡ n ⊖ m
245
+ m-n≡m⊖n : + m + (- + n) ≡ m ⊖ n
246
+ ```
247
+
248
+ * Added new definition in ` Data.Nat.Base ` :
249
+ ``` agda
250
+ _≤ᵇ_ : (m n : ℕ) → Bool
251
+ ```
252
+
253
+ * Added new proofs in ` Data.Nat.Properties ` :
254
+ ``` agda
255
+ ≤ᵇ⇒≤ : T (m ≤ᵇ n) → m ≤ n
256
+ ≤⇒≤ᵇ : m ≤ n → T (m ≤ᵇ n)
257
+
258
+ <ᵇ-reflects-< : Reflects (m < n) (m <ᵇ n)
259
+ ≤ᵇ-reflects-≤ : Reflects (m ≤ n) (m ≤ᵇ n)
260
+ ```
261
+
262
+ * Added new proof in ` Relation.Nullary.Reflects ` :
263
+ ``` agda
264
+ fromEquivalence : (T b → P) → (P → T b) → Reflects P b
265
+ ```
266
+
267
+ * Add new properties to ` Data.Vec.Properties ` :
268
+ ``` agda
269
+ take-distr-zipWith : take m (zipWith f u v) ≡ zipWith f (take m u) (take m v)
270
+ take-distr-map : take m (map f v) ≡ map f (take m v)
271
+ drop-distr-zipWith : drop m (zipWith f u v) ≡ zipWith f (drop m u) (drop m v)
272
+ drop-distr-map : drop m (map f v) ≡ map f (drop m v)
273
+ take-drop-id : take m v ++ drop m v ≡ v
274
+ zipWith-replicate : zipWith {n = n} _⊕_ (replicate x) (replicate y) ≡ replicate (x ⊕ y)
275
+ ```
276
+
277
+ * Added new proofs to ` Relation.Binary.Construct.Closure.Transitive ` :
278
+ ``` agda
279
+ reflexive : Reflexive _∼_ → Reflexive _∼⁺_
280
+ symmetric : Symmetric _∼_ → Symmetric _∼⁺_
281
+ transitive : Transitive _∼⁺_
282
+ wellFounded : WellFounded _∼_ → WellFounded _∼⁺_
283
+ ```
284
+
285
+ * Add new properties to ` Data.Integer.Properties ` :
286
+ ``` agda
287
+ +-*-commutativeSemiring : CommutativeSemiring 0ℓ 0ℓ
288
+ ```
289
+
290
+ * Added infix declarations to ` Data.Product.∃-syntax ` and ` Data.Product.∄-syntax ` .
0 commit comments