@@ -12,25 +12,24 @@ Highlights
1212
1313* Fresh lists.
1414
15- * First algebraic proofs for ℚ.
15+ * First proofs of algebraic properties for operations over ℚ.
1616
1717* Improved reduction behaviour for all decidability proofs.
1818
1919Bug-fixes
2020---------
2121
22- * The record ` RawRing ` from ` Algebra ` now contains an equality relation to
22+ * The record ` RawRing ` from ` Algebra ` now includes an equality relation to
2323 make it consistent with the othor ` Raw ` bundles.
2424
2525* In ` Relation.Binary ` :
2626 - ` IsStrictTotalOrder ` now exports ` isDecStrictPartialOrder `
2727 - ` IsDecStrictPartialOrder ` now re-exports the contents of ` IsStrictPartialOrder ` .
2828
2929* 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 ` .
3433
3534Non-backwards compatible changes
3635--------------------------------
@@ -71,16 +70,16 @@ Non-backwards compatible changes
7170 not just that of ` Algebra.Bundles ` .
7271 * ** Compatibility:** Modules which previously imported both ` Algebra ` and
7372 ` 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.
7776
7877### New function hierarchy
7978
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:
8180 1 . The raw functions are wrapped in the equality-preserving
8281 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
8483 to write code that interfaces neatly between the ` Function ` hierarchy
8584 and, for example, the ` Algebra ` hierarchy.
8685 2 . The hierarchy doesn't follow the same pattern as the other record
@@ -129,16 +128,17 @@ Non-backwards compatible changes
129128 that occurs is when importing both ` Function ` and e.g. ` Function.Injection ` . In this
130129 case the old and new definitions of ` Injection ` will clash. In the short term this
131130 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.
133133
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
136136 the new bundle for right inverse ` _↪_ ` .
137137
138138#### Harmonizing ` List.All ` and ` Vec ` in their role as finite maps.
139139
140140* 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
142142 been refactored to match the latter.
143143
144144* Added a new "points-to" relation ` _[_]=_ ` in ` Data.List.Relation.Unary.All ` :
@@ -151,19 +151,14 @@ Non-backwards compatible changes
151151 relation rather than the function ` lookup ` . The old proofs are available with
152152 minor variations under the names ` lookup∘updateAt ` and ` updateAt-cong-relative ` .
153153
154- #### Removing irrelevance where not strictly necessary
154+ #### Other
155155
156156* 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.
158158 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 ` .
167162
168163* The proofs ` isPreorder ` and ` preorder ` have been moved from the ` Setoid `
169164 record to the module ` Relation.Binary.Properties.Setoid ` .
@@ -173,14 +168,14 @@ Non-backwards compatible changes
173168 GCD. Although less elegant than the previous implementation, it's
174169 reduction behaviour is much easier to reason about.
175170
176- Re-implementations/ deprecations
171+ Re-implementations and deprecations
177172-------------------------------
178173
179174### ` Data.Bin ` → ` Data.Nat.Binary `
180175
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 ` .
184179 ``` agda
185180 Data.Nat.Binary
186181 Data.Nat.Binary.Base
@@ -309,26 +304,27 @@ Other major additions
309304
310305### Other new modules
311306
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.
313309 ``` agda
314310 Algebra.Properties.Semigroup
315311 Algebra.Properties.CommutativeSemigroup
316312 ```
317- Contains all the non-trivial 3 element permutations. Useful for equational
318- reasoning.
313+
319314
320315* A map interface for AVL trees.
321316 ``` agda
322317 Data.AVL.Map
323318 ```
324319
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 ` .
326322 ``` agda
327323 Data.Unit.Polymorphic
328324 Data.Unit.Polymorphic.Properties
329325 Data.Empty.Polymorphic
330326 ```
331- Useful in getting rid of the need to use ` Lift ` .
327+
332328
333329* Greatest common divisor and least common multiples for integers:
334330 ``` agda
@@ -348,23 +344,25 @@ Other major additions
348344 Data.List.Fresh.Membership.Properties
349345 ```
350346
351- * Kleene lists.
347+ * Kleene lists. Useful when needing to distinguish between empty and non-empty lists.
352348 ``` agda
353349 Data.List.Kleene
354350 Data.List.Kleene.AsList
355351 Data.List.Kleene.Base
356352 ```
357- Useful when needing to distinguish between empty and non-empty lists.
353+
358354
359355* Predicate over lists in which every neighbouring pair of elements is related.
356+ Useful for implementing paths in graphs.
360357 ``` agda
361358 Data.List.Relation.Unary.Linked
362359 Data.List.Relation.Unary.Linked.Properties
363360 ```
364- Useful for implementing paths.
365361
366- *
362+ * Disjoint sublists.
363+ ``` agda
367364 Data.List.Relation.Binary.Sublist.Propositional.Disjoint
365+ ```
368366
369367* Rationals whose numerator and denominator are not necessarily normalised (i.e. coprime).
370368 ```
@@ -375,7 +373,8 @@ Other major additions
375373 and that evaluation is inefficient as the top and the bottom will inevitably
376374 blow up. However they are significantly easier to reason about then the existing
377375 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.
379378
380379* Basic constructions for the new funciton hierarchy.
381380 ``` agda
@@ -389,12 +388,12 @@ Other major additions
389388 Foreign.Haskell.Either
390389 ```
391390
392- * Properties of setoids
391+ * Properties of setoids.
393392 ``` agda
394393 Relation.Binary.Properties.Setoid
395394 ```
396395
397- * New modules for reasoning over partial setoids.
396+ * Reasoning over partial setoids.
398397 ```
399398 Relation.Binary.Reasoning.Base.Partial
400399 Relation.Binary.Reasoning.PartialSetoid
0 commit comments