@@ -12,25 +12,24 @@ Highlights
12
12
13
13
* Fresh lists.
14
14
15
- * First algebraic proofs for ℚ.
15
+ * First proofs of algebraic properties for operations over ℚ.
16
16
17
17
* Improved reduction behaviour for all decidability proofs.
18
18
19
19
Bug-fixes
20
20
---------
21
21
22
- * The record ` RawRing ` from ` Algebra ` now contains an equality relation to
22
+ * The record ` RawRing ` from ` Algebra ` now includes an equality relation to
23
23
make it consistent with the othor ` Raw ` bundles.
24
24
25
25
* In ` Relation.Binary ` :
26
26
- ` IsStrictTotalOrder ` now exports ` isDecStrictPartialOrder `
27
27
- ` IsDecStrictPartialOrder ` now re-exports the contents of ` IsStrictPartialOrder ` .
28
28
29
29
* Due to bug #3879 in Agda, the pattern synonyms ` 0F ` , ` 1F ` , ... added to
30
- ` Data.Fin.Base ` in version 1.1 have been found to result in unavoidable and
31
- undesirable behaviour when case splitting on ` ℕ ` when ` Data.Fin ` has been
32
- imported. These pattern synonyms have therefore been moved to the new module
33
- ` Data.Fin.Patterns ` .
30
+ ` Data.Fin.Base ` in version 1.1 resulted in unavoidable and undesirable behaviour
31
+ when case splitting on ` ℕ ` when ` Data.Fin ` has been imported. These pattern
32
+ synonyms have therefore been moved to the new module ` Data.Fin.Patterns ` .
34
33
35
34
Non-backwards compatible changes
36
35
--------------------------------
@@ -71,16 +70,16 @@ Non-backwards compatible changes
71
70
not just that of ` Algebra.Bundles ` .
72
71
* ** Compatibility:** Modules which previously imported both ` Algebra ` and
73
72
` Algebra.FunctionProperties ` and/or ` Algebra.Structures ` will need small changes.
74
- - If either of ` FunctionProperties ` or ` Structures ` are explicitly parameterised by an
75
- equality relation then import ` Algebra.Bundles ` instead of ` Algebra ` .
76
- - Otherwise just remove the ` FunctionProperties ` and ` Structures ` imports entirely.
73
+ - If either of ` FunctionProperties ` or ` Structures ` are explicitly parameterised by an
74
+ equality relation then import ` Algebra.Bundles ` instead of ` Algebra ` .
75
+ - Otherwise just remove the ` FunctionProperties ` and ` Structures ` imports entirely.
77
76
78
77
### New function hierarchy
79
78
80
- * The current function hierarchy has several deeper problems than the other two:
79
+ * The problems with the current function hierarchy run deeper problems than the other two:
81
80
1 . The raw functions are wrapped in the equality-preserving
82
81
type ` _⟶_ ` from ` Function.Equality ` . As the rest of the library
83
- very rarely uses such wrapped functions, it is almost impossible
82
+ rarely uses such wrapped functions, it is very difficult
84
83
to write code that interfaces neatly between the ` Function ` hierarchy
85
84
and, for example, the ` Algebra ` hierarchy.
86
85
2 . The hierarchy doesn't follow the same pattern as the other record
@@ -129,16 +128,17 @@ Non-backwards compatible changes
129
128
that occurs is when importing both ` Function ` and e.g. ` Function.Injection ` . In this
130
129
case the old and new definitions of ` Injection ` will clash. In the short term this
131
130
can be fixed immediately by importing ` Function.Base ` instead of ` Function ` .
132
- However in the longer term it is encouraged to migrate to the new hierarchy.
131
+ However in the longer term it is encouraged to migrate away from ` Function.Injection `
132
+ and to use the new hierarchy instead.
133
133
134
- * Finally in the new hierarchy the propositional bundle for left inverses in
135
- ` Function.Bundles ` has been renamed from ` _↞_ ` to ` _↩_ ` in order to make room for
134
+ * Finally the propositional bundle for left inverses in ` Function.Bundles ` has been
135
+ renamed in the new hierarchy from ` _↞_ ` to ` _↩_ ` . This is in order to make room for
136
136
the new bundle for right inverse ` _↪_ ` .
137
137
138
138
#### Harmonizing ` List.All ` and ` Vec ` in their role as finite maps.
139
139
140
140
* The function ` updateAt ` in ` Data.List.Relation.Unary.All ` is analogous
141
- to ` updateAt ` in ` Data.Vec.Base ` and hence, the API for the former has
141
+ to ` updateAt ` in ` Data.Vec.Base ` and hence the API for the former has
142
142
been refactored to match the latter.
143
143
144
144
* Added a new "points-to" relation ` _[_]=_ ` in ` Data.List.Relation.Unary.All ` :
@@ -151,19 +151,14 @@ Non-backwards compatible changes
151
151
relation rather than the function ` lookup ` . The old proofs are available with
152
152
minor variations under the names ` lookup∘updateAt ` and ` updateAt-cong-relative ` .
153
153
154
- #### Removing irrelevance where not strictly necessary
154
+ #### Other
155
155
156
156
* Version 1.1 in the library added irrelevance to various places in the library.
157
- Unfortunately this exposed the library to several irrelevance related bugs.
157
+ Unfortunately this exposed the library to several irrelevance- related bugs.
158
158
The decision has therefore been taken to roll-back these additions until
159
- irrelevance is more stable. In particular it has been removed from the
160
- following functions:
161
-
162
- * In ` Data.Nat.DivMod ` : ` _%_ ` , ` _/_ ` , ` _div_ ` , ` _mod_ ` .
163
-
164
- * In ` Data.Fin.Base ` : ` fromℕ≤ ` , ` inject≤ ` .
165
-
166
- #### Other
159
+ irrelevance is more stable. In particular it has been removed from
160
+ ` _%_ ` , ` _/_ ` , ` _div_ ` , ` _mod_ ` in ` Data.Nat.DivMod ` and from ` fromℕ≤ ` , ` inject≤ `
161
+ in ` Data.Fin.Base ` .
167
162
168
163
* The proofs ` isPreorder ` and ` preorder ` have been moved from the ` Setoid `
169
164
record to the module ` Relation.Binary.Properties.Setoid ` .
@@ -173,14 +168,14 @@ Non-backwards compatible changes
173
168
GCD. Although less elegant than the previous implementation, it's
174
169
reduction behaviour is much easier to reason about.
175
170
176
- Re-implementations/ deprecations
171
+ Re-implementations and deprecations
177
172
-------------------------------
178
173
179
174
### ` Data.Bin ` → ` Data.Nat.Binary `
180
175
181
- * The current implementation of naturals represented in binary natively in Agda
182
- has proven hard to work with. Therefore a new, simpler implementation which avoids
183
- using ` List ` has been added as ` Data.Nat.Binary ` .
176
+ * The current implementation of binary naturals in Agda has proven hard to work with.
177
+ Therefore a new, simpler implementation which avoids using ` List ` has been added
178
+ as ` Data.Nat.Binary ` .
184
179
``` agda
185
180
Data.Nat.Binary
186
181
Data.Nat.Binary.Base
@@ -309,26 +304,27 @@ Other major additions
309
304
310
305
### Other new modules
311
306
312
- * Properties for ` Semigroup ` and ` CommutativeSemigroup ` .
307
+ * Properties for ` Semigroup ` and ` CommutativeSemigroup ` . Contains all the
308
+ non-trivial 3 element permutations. Useful for equational reasoning.
313
309
``` agda
314
310
Algebra.Properties.Semigroup
315
311
Algebra.Properties.CommutativeSemigroup
316
312
```
317
- Contains all the non-trivial 3 element permutations. Useful for equational
318
- reasoning.
313
+
319
314
320
315
* A map interface for AVL trees.
321
316
``` agda
322
317
Data.AVL.Map
323
318
```
324
319
325
- * Level polymorphic versions for the bottom and top types.
320
+ * Level polymorphic versions for the bottom and top types. Useful in
321
+ getting rid of the need to use ` Lift ` .
326
322
``` agda
327
323
Data.Unit.Polymorphic
328
324
Data.Unit.Polymorphic.Properties
329
325
Data.Empty.Polymorphic
330
326
```
331
- Useful in getting rid of the need to use ` Lift ` .
327
+
332
328
333
329
* Greatest common divisor and least common multiples for integers:
334
330
``` agda
@@ -348,23 +344,25 @@ Other major additions
348
344
Data.List.Fresh.Membership.Properties
349
345
```
350
346
351
- * Kleene lists.
347
+ * Kleene lists. Useful when needing to distinguish between empty and non-empty lists.
352
348
``` agda
353
349
Data.List.Kleene
354
350
Data.List.Kleene.AsList
355
351
Data.List.Kleene.Base
356
352
```
357
- Useful when needing to distinguish between empty and non-empty lists.
353
+
358
354
359
355
* Predicate over lists in which every neighbouring pair of elements is related.
356
+ Useful for implementing paths in graphs.
360
357
``` agda
361
358
Data.List.Relation.Unary.Linked
362
359
Data.List.Relation.Unary.Linked.Properties
363
360
```
364
- Useful for implementing paths.
365
361
366
- *
362
+ * Disjoint sublists.
363
+ ``` agda
367
364
Data.List.Relation.Binary.Sublist.Propositional.Disjoint
365
+ ```
368
366
369
367
* Rationals whose numerator and denominator are not necessarily normalised (i.e. coprime).
370
368
```
@@ -375,7 +373,8 @@ Other major additions
375
373
and that evaluation is inefficient as the top and the bottom will inevitably
376
374
blow up. However they are significantly easier to reason about then the existing
377
375
normalised implementation in ` Data.Rational ` . The new monomorphism infrastructure
378
- (see below) can therefore be used to transfer proofs to the normalised implementation.
376
+ (see below) is used to transfer proofs from these new unnormalised rationals
377
+ to the existing normalised implementation.
379
378
380
379
* Basic constructions for the new funciton hierarchy.
381
380
``` agda
@@ -389,12 +388,12 @@ Other major additions
389
388
Foreign.Haskell.Either
390
389
```
391
390
392
- * Properties of setoids
391
+ * Properties of setoids.
393
392
``` agda
394
393
Relation.Binary.Properties.Setoid
395
394
```
396
395
397
- * New modules for reasoning over partial setoids.
396
+ * Reasoning over partial setoids.
398
397
```
399
398
Relation.Binary.Reasoning.Base.Partial
400
399
Relation.Binary.Reasoning.PartialSetoid
0 commit comments