diff --git a/.gitignore b/.gitignore index 5377b52f..9ba42424 100644 --- a/.gitignore +++ b/.gitignore @@ -1,24 +1,85 @@ +# ================================================================================== +# agda-algebras — .gitignore +# ================================================================================== +# +# Organized by category. The final section lists patterns kept for historical +# reasons (old paper submissions, scratch dirs) that may no longer be generated by +# anything in the current repo; will prune in a follow-up PR after confirming nothing +# live depends on them. +# +# gitignore syntax reminders: +# + Lines starting with `#` are comments. Inline comments are NOT supported. +# + A leading `/` anchors the pattern to the repo root. +# + A trailing `/` restricts the pattern to directories. +# + Without `/`, the pattern matches at any depth. +# + `!pattern` un-ignores a previously-ignored path. +# + Trailing whitespace is ignored unless escaped with backslash. +# ================================================================================== + +# -- Editor and OS ----------------------------------------------------------------- *~ +.#* +\#*\# +.DS_Store +*.swp +*.swo + +# -- Agda build artifacts ---------------------------------------------------------- *.agdai +_build/ +# Auto-generated module index (regenerated by the Makefile). +src/Everything.agda + +# -- LaTeX build artifacts --------------------------------------------------------- *.aux -*.blg *.bbl +*.blg *.log -*.orig *.out *.ptb -*.tar.gz *.vtc +# AUCTeX auto-generated completions. +auto/ + +# -- Merge-conflict leftovers ------------------------------------------------------ +# Never commit — these are tool residue from diff3 / merge resolution. +*.orig +*-orig.lagda *_BACKUP_*.lagda *_BASE_*.lagda *_LOCAL_*.lagda *_REMOTE_*.lagda -*-orig.lagda -.DS_Store -ARCHIVE -auto/ -_build/ + +# -- Nix --------------------------------------------------------------------------- +# Project-local AGDA_DIR (written fresh by `nix develop`). +/.agda/ +# `nix build` output symlinks. +/result +/result-* +# nix-direnv cache (only relevant if a contributor uses direnv). +.direnv/ + +# -- Release / packaging ----------------------------------------------------------- +*.tar.gz +source.zip + +# -- Generated documentation outputs ----------------------------------------------- +# Outputs of `agda --html` / `agda --latex` / LaTeX doc builds. +html/ +html-old/ +latex/ doc/*.pdf + +# ================================================================================== +# Legacy / historical — review and prune in a follow-up PR. +# +# These are artifacts of past paper submissions and local scratch workflows. +# Many may no longer be generated by anything the current build produces. +# Before removing each line, grep the Makefile, doc/, and CI configs to confirm +# nothing still writes to these paths. +# ================================================================================== +ARCHIVE +Notes/Complexity doc/ITP2021 doc/TYPES2021/abstract doc/TYPES2021/agda-hsp @@ -27,12 +88,6 @@ doc/TYPES2021/tmp.tex doc/TYPES2021/zen.css doc/TYPES2021/*.pdf doc/TYPES2021/Demos -html -html-old -latex makefile- mk -Notes/Complexity referee -source.zip -src/Everything.agda diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 00000000..65544513 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,131 @@ +# Installing agda-algebras + +This document describes how to set up a development environment for the agda-algebras library. The **recommended** path is Nix, which pins Agda 2.8.0 and standard-library 2.3 automatically. The alternative paths are for contributors who cannot or prefer not to use Nix. + +## Requirements + ++ [Agda](https://agda.readthedocs.io) 2.8.0 or later (2.8.0 is what we pin) ++ [standard-library](https://github.com/agda/agda-stdlib) 2.3 ++ GNU Make ++ A text editor with Agda support (Emacs with `agda-mode`, VSCode with `banacorn.agda-mode`, or equivalent) + +Older versions of Agda or the standard library are not supported on `master`. If you must work with an older configuration, check out a pre-2.0 tag. + +--- + +## Option 1 (recommended): Nix + +Install Nix from [https://nixos.org/download.html](https://nixos.org/download.html), then enable flakes by adding the following to `~/.config/nix/nix.conf`: + +``` +experimental-features = nix-command flakes +``` + +Clone the repository and enter the development shell: + +```bash +git clone https://github.com/ualib/agda-algebras.git +cd agda-algebras +nix develop +``` + +The `nix develop` command will download and build (on first invocation) the pinned versions of Agda and the standard library, and drop you in a shell where: + ++ `agda` is on `PATH` and points to 2.8.0 ++ standard-library 2.3 is registered via a project-local `AGDA_DIR` at `.agda/` ++ any `~/.config/agda/libraries` entries on the host are ignored for the duration of the shell + +Inside the shell: + +```bash +make check # type-check the entire library +make html # generate clickable HTML to ./html/ +make clean # remove build artifacts +``` + +To exit the shell, type `exit` or Ctrl-D. + +### Editor integration under Nix + +`agda-mode` is available inside the Nix shell. The simplest pattern is to launch your editor from within `nix develop`. If you use Emacs, `M-x load-library RET agda2-mode RET` will pick up the wrapped Agda. If you use VSCode with the `banacorn.agda-mode` extension, the extension's "Agda Path" setting can be pointed at the `agda` inside the Nix shell (use `which agda` to find the absolute path). + +Contributors who prefer a persistent editor configuration across shells may find [`nix-direnv`](https://github.com/nix-community/nix-direnv) useful for auto-entering the shell when they `cd` into the repo. + +--- + +## Option 2: Agda's official Python installer + +As of 2.8.0, Agda is a self-contained single binary distributed via the Python Package Index. This is the simplest non-Nix path: + +```bash +pipx install agda==2.8.0 +``` + +(or `pip install --user agda==2.8.0` if you don't have [pipx](https://pipx.pypa.io/)). + +Then install standard-library 2.3: + +```bash +git clone --branch v2.3 --depth 1 https://github.com/agda/agda-stdlib.git ~/agda-stdlib-2.3 +mkdir -p ~/.config/agda +echo "$HOME/agda-stdlib-2.3/standard-library.agda-lib" >> ~/.config/agda/libraries +echo "standard-library-2.3" >> ~/.config/agda/defaults +``` + +Verify the installation from a clone of agda-algebras: + +```bash +git clone https://github.com/ualib/agda-algebras.git +cd agda-algebras +make check +``` + +--- + +## Option 3: Prebuilt binary from the Agda GitHub release + +Prebuilt binaries for Linux, macOS, and Windows are available on the [Agda 2.8.0 release page](https://github.com/agda/agda/releases/tag/v2.8.0). Download the appropriate archive, extract the `agda` binary, and place it somewhere on your `PATH`. + +On macOS, prebuilt binaries are not notarized; you may need to remove the quarantine attribute before they run. See the [Agda 2.8.0 installation documentation](https://agda.readthedocs.io/en/v2.8.0/getting-started/installation.html) for details. + +Set up the standard library as in Option 2. + +--- + +## Option 4: Build from source via cabal + +```bash +cabal update +cabal install Agda-2.8.0 --program-suffix=-2.8.0 +``` + +Then run `agda-2.8.0 --emacs-mode setup` to configure Emacs. (Note: as of Agda 2.8.0, the `agda-mode` executable has been superseded by `agda --emacs-mode`; your editor configuration may need updating. See the [Agda 2.8.0 changelog](https://hackage.haskell.org/package/Agda-2.8.0/changelog) for details.) + +Set up the standard library as in Option 2. + +--- + +## Verifying the installation + +From a clone of agda-algebras: + +```bash +agda --version # should print "Agda version 2.8.0" +make check # should run to completion without errors +``` + +`make check` takes a few minutes on a laptop. + +--- + +## Troubleshooting + +**Agda can't find standard-library.** Inside `nix develop`, the shell writes a project-local libraries file that should Just Work. Outside the Nix shell, verify that `~/.config/agda/libraries` references your standard-library 2.3 installation (note that older Agda versions used `~/.agda/libraries`; 2.8.0 uses `~/.config/agda/` but falls back to `~/.agda/` for backward compatibility). + +**Warnings about `UnsupportedIndexedMatch`.** These are expected on some of our own pattern-matching definitions under `--cubical-compatible` and are suppressed at the library level via a flag in `agda-algebras.agda-lib`. They do not indicate bugs. + +**Build is slow.** The library is large and uses computationally expensive features (`--cubical-compatible` implies full unfolding). A full `make check` is ~5 minutes on a modern laptop. Incremental rebuilds (changing one module) are much faster thanks to Agda's interface-file caching. + +For other issues, please [open a GitHub issue](https://github.com/ualib/agda-algebras/issues). + + diff --git a/LICENSE b/LICENSE index a73481c4..0f44aca4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,428 +1,202 @@ -Attribution-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-ShareAlike 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-ShareAlike 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - l. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - m. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - - including for purposes of Section 3(b); and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public -licenses. Notwithstanding, Creative Commons may elect to apply one of -its public licenses to material it publishes and in those instances -will be considered the “Licensor.” The text of the Creative Commons -public licenses is dedicated to the public domain under the CC0 Public -Domain Dedication. Except for the limited purpose of indicating that -material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the -public licenses. - -Creative Commons may be contacted at creativecommons.org. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025-2026 William DeMeo and Contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/LICENSE-docs b/LICENSE-docs new file mode 100644 index 00000000..36bfeae1 --- /dev/null +++ b/LICENSE-docs @@ -0,0 +1,32 @@ +Creative Commons Attribution 4.0 International License + +The documentation and the papers, notes, and tutorials in this repository +(docs/) are licensed under the Creative Commons Attribution 4.0 International +License. + +Copyright 2025-2026 William DeMeo and Contributors + +You are free to: + + Share — copy and redistribute the material in any medium or format + + Adapt — remix, transform, and build upon the material for any purpose, + even commercially + +Under the following terms: + + Attribution — You must give appropriate credit, provide a link to the + license, and indicate if changes were made. You may do so + in any reasonable manner, but not in any way that suggests + the licensor endorses you or your use. + + No additional restrictions — You may not apply legal terms or technological + measures that legally restrict others from doing anything the + license permits. + +Full license text: https://creativecommons.org/licenses/by/4.0/legalcode + +--- + +Note: The source code in this repository (src/) is licensed separately +under the Apache License, Version 2.0. See LICENSE for details. diff --git a/Makefile b/Makefile index 8af34b28..d1fcd8bc 100644 --- a/Makefile +++ b/Makefile @@ -1,74 +1,70 @@ -# This file is essentially a copy of the Makefile in the agda-categories library by Jacques Carette. -# The only difference is that this version works with .lagda files instead of .agda files. -# The original Makefile from agda-categories is https://github.com/agda/agda-categories/blob/master/Makefile - -.PHONY: test Everything.agda clean md html profile latex pandoc - -OTHEROPTS= -RTSARGS = +RTS -M6G -A128M ${OTHEROPTS} -RTS - -# Locations -SRCDIR := src -TEXDIR := tex -LATEXDIR := latex -HTMLDIR := html -INCLDIR := _includes - -# File names -SRC := $(shell find $(SRCDIR) -name "*.lagda") -MODULES := $(shell find $(SRCDIR) -name "*.lagda" | sed -e 's|^src/[/]*||' -e 's|/|.|g') - -TEXFILES = $(shell find . -name "*.tex") -TEXMDFILES = $(wildcard $(HTMLDIR)/*.tex) -MDFILES = $(TEXMDFILES:.tex=.md) -LINKFILE = $(INCLDIR)/UALib.Links.md +# ============================================================================= +# agda-algebras — Makefile +# ============================================================================= +# +# Run from repo root inside `nix develop` so `agda` and the pinned stdlib +# are on PATH. If running outside the Nix shell, ensure your Agda and +# standard-library versions match the targets declared in flake.nix and +# agda-algebras.agda-lib. +# +# Primary targets: +# make Regenerate src/Everything.agda from the current tree. +# make check Type-check the entire library (what CI runs). +# make test Alias for `make check`. +# make html Generate clickable HTML (in ./html/). +# make profile Type-check with Agda profiling enabled. +# make clean Remove .agdai artifacts and the generated Everything. +# +# Notes: +# + Everything.agda is a PHONY target — always regenerated — so that +# adding or removing a module is picked up without the user having +# to remember. +# + We use `find` rather than `git ls-tree` so that untracked-but-present +# files in the working tree are included. This matters during active +# development. +# + The sed pipeline strips ONLY the trailing `.agda` extension +# (anchored with `$` and an escaped `\.`), avoiding a class of bugs +# where a path segment happens to contain the substring `agda`. +# ============================================================================= + +.PHONY: default all check test clean html profile Everything.agda + +# -- Configuration ----------------------------------------------------------- +SRCDIR := src +AGDA ?= agda +RTS_OPTS := +RTS -M6G -A128M -RTS +AGDA_OPTS ?= + +# -- Targets ----------------------------------------------------------------- default: Everything.agda -all: html Everything.agda md $(MDFILES) - @echo "target: $@ prereq: $<" - -test: Everything.agda - @echo "target: $@ prereq: $<" - agda ${RTSARGS} $(SRCDIR)/Everything.agda - Everything.agda: - @echo "target: $@ prereq: $<" - git ls-tree --full-tree -r --name-only HEAD | grep '^src/[^\.]*.lagda' | sed -e 's|^src/[/]*|import |' -e 's|/|.|g' -e 's/.lagda//' -e '/import Everything/d' | LC_COLLATE='C' sort > $(SRCDIR)/Everything.agda - -# Make markdown files for html documentation served by jekyll -md: html $(MDFILES) - @echo "target: $@ prereq: $<" - -docs: html $(HTMLDIR)/index.markdown $(TEXDIR)/agda-algebras.tex - @echo "target: $@ prereq: $<" + @echo "target: $@" + @find $(SRCDIR) -name '*.agda' \ + ! -name 'Everything.agda' \ + ! -path '$(SRCDIR)/Legacy/*' \ + | sed -e 's|^$(SRCDIR)/||' \ + -e 's|\.agda$$||' \ + -e 's|/|.|g' \ + -e 's|^|import |' \ + | LC_ALL=C sort \ + > $(SRCDIR)/Everything.agda + @echo " wrote $(SRCDIR)/Everything.agda ($$(wc -l < $(SRCDIR)/Everything.agda) modules)" + +check test: Everything.agda + @echo "target: $@" + $(AGDA) $(RTS_OPTS) $(AGDA_OPTS) $(SRCDIR)/Everything.agda html: Everything.agda - @echo "target: $@ prereq: $<" - @echo $@ - agda ${RTSARGS} --html --html-highlight=code $(SRCDIR)/Everything.agda - -$(HTMLDIR)/index.markdown: $(HTMLDIR)/agda-algebras.md - @echo "target: $@ prereq: $<" - cp $< $@ - -## Rule for converting all the agda generated markdown files from .tex to .md -$(MDFILES): $(TEXMDFILES) - @echo "target: $@ prereq: $<" - mv $< $@ - -clean: - find . -name '*.agdai' -exec rm \{\} \; + @echo "target: $@" + $(AGDA) $(RTS_OPTS) --html --html-highlight=code $(SRCDIR)/Everything.agda profile: Everything.agda - @echo "target: $@ prereq: $<" - agda ${RTSARGS} -v profile:7 -v profile.definitions:15 $(SRCDIR)/Everything.agda - - - -# ## default rule for converting a markdown file to a latex file -# %.tex: %.md -# @echo "target: $@ prereq: $<" -# cat $(LINKFILE) >> $< ## first add links to bottom of md so pandoc can insert them as \hrefs -# pandoc -f markdown -t latex $< -o $@ + @echo "target: $@" + $(AGDA) $(RTS_OPTS) -v profile:7 -v profile.definitions:15 $(SRCDIR)/Everything.agda +clean: + @echo "target: $@" + find . -name '*.agdai' -delete + rm -f $(SRCDIR)/Everything.agda diff --git a/README.md b/README.md index e5431904..2b62fdcb 100644 --- a/README.md +++ b/README.md @@ -1,109 +1,122 @@ # agda-algebras -This is a copy of the Agda Universal Algebra Library which depends the [Standard Library](https://github.com/agda/agda-stdlib) of the [Agda](https://wiki.portal.chalmers.se/agda/pmwiki.php) proof assistant language. -It is currently under active reconstruction, and should be regarded as α software. +[![CI](https://github.com/ualib/agda-algebras/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/ualib/agda-algebras/actions/workflows/ci.yml) +[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](./LICENSE) +[![Docs License: CC BY 4.0](https://img.shields.io/badge/Docs-CC_BY_4.0-lightgrey.svg)](./LICENSE-docs) +[![Agda 2.8.0](https://img.shields.io/badge/Agda-2.8.0-purple.svg)](https://github.com/agda/agda/releases/tag/v2.8.0) +[![stdlib 2.3](https://img.shields.io/badge/stdlib-2.3-orange.svg)](https://github.com/agda/agda-stdlib/releases/tag/v2.3) -The **previous version** of the library (which was called `UALib` and relied more heavily on the [Type Topology](https://github.com/martinescardo/TypeTopology) library of [Martín Escardó][]) is no longer maintained, but is still available at the following urls. +A formalization of universal algebra in [Agda](https://wiki.portal.chalmers.se/agda/pmwiki.php), built on the [Agda standard library](https://github.com/agda/agda-stdlib). -+ [UALib source code repository](https://gitlab.com/ualib/ualib.gitlab.io): [https://gitlab.com/ualib/ualib.gitlab.io](https://gitlab.com/ualib/ualib.gitlab.io) -+ [UALib documentation](https://ualib.gitlab.io): [https://ualib.gitlab.io](https://ualib.gitlab.io) +**Status.** Version 2.0 is under active development on `master`. The library currently targets Agda 2.8.0 and standard-library 2.3. Expect breaking changes until 2.0 is released; see [docs/GITHUB_PROJECT.md](docs/GITHUB_PROJECT.md) for the milestone plan. ---------------------------- +The **previous** version (called `UALib`, built against [TypeTopology](https://github.com/martinescardo/TypeTopology)) is no longer maintained but remains available: -## Introduction ++ Source: [https://gitlab.com/ualib/ualib.gitlab.io](https://gitlab.com/ualib/ualib.gitlab.io) ++ Docs: [https://ualib.gitlab.io](https://ualib.gitlab.io) -This repository contains the source code, as well as the files used to generate -the [documentation](https://ualib.github.io/agda-algebras/), of the -[Agda Universal Algebra Library](https://github.com/ualib/agda-algebras). - ------------------------------ +--- ## Documentation -Agda was used to generate html pages for each module. These pages are now served at +HTML documentation for the current line is served at [https://ualib.org](https://ualib.org). -[https://ualib.org](https://ualib.org) +The library's structure, design decisions, and roadmap are documented in [docs/GITHUB_PROJECT.md](docs/GITHUB_PROJECT.md). ----------------------------------- +--- ## Installation -### Install Agda +The recommended development environment is [Nix](https://nixos.org/download.html). + +Inside the main directory of a clone of the `agda-algebras` repository, enter -The library has been developed and tested with [Agda version 2.6.2](https://agda.readthedocs.io/en/v2.6.1/getting-started/installation.html) and the [Agda Standard Library][] version 1.7. (It may work with more recent versions, but there are no guarantees.) +```bash +nix develop +``` -If you don't have [Agda][], follow the [official Agda installation instructions](https://agda.readthedocs.io/en/v2.6.0/getting-started/installation.html). +This pins Agda 2.8.0 and standard-library 2.3 automatically, writes a project-local Agda library configuration, and bypasses any Agda or standard-library versions you may have installed elsewhere on the machine. -For reference, the following is a list of commands that should correctly install Agda version 2.6.2 on a Linux machine. These commands were tested on a Ubuntu 22.04 machine. Please submit a [new issue][] or [merge request][] if these commands don't work for you. +Once in the Nix shell, enter -``` -cabal update -git clone git@github.com:agda/agda.git -cd agda -git checkout release-2.6.2 -cabal install Agda-2.6.2 --program-suffix=-2.6.2 # (takes a very long time) -cd ~/.cabal/bin/ -touch ~/.emacs -cp ~/.emacs ~/.emacs.backup -./agda-mode-2.6.2 setup -./agda-mode-2.6.2 compile -mkdir -p ~/bin -cp ~/.emacs ~/bin -cp ~/.emacs.backup ~/.emacs -cd ~/bin -echo '#!/bin/bash' > agdamacs -echo 'PATH=~/.cabal/bin:$PATH emacs --no-init-file --load ~/bin/.emacs $@' >> agdamacs -chmod +x agdamacs -echo 'export PATH=~/bin:~/.cabal/bin:$PATH' >> ~/.profile +```bash +make check # type-check the library +make html # build clickable HTML to ./html/ ``` -Now invoking the command `agdamacs` will launch emacs with Agda 2.6.2 and agda-mode installed.) +Contributors who prefer not to use Nix should install Agda 2.8.0 and standard-library 2.3 by other means (see [docs/INSTALL.md](docs/INSTALL.md) for options) and register them in `~/.config/agda/libraries` before running `make check`. -For more details, see also: [INSTALL_AGDA.md](INSTALL_AGDA.md) +--- ------------------------------ +## Requirements -## Contributing to this repository ++ [Agda](https://agda.readthedocs.io) 2.8.0 (released 2025-07) ++ [standard-library](https://github.com/agda/agda-stdlib) 2.3 (released 2025-08) ++ GNU Make -If you wish to contribute to this repository, the best way is to use the -standard [fork-clone-pull-request](https://gist.github.com/Chaser324/ce0505fbed06b947d962) -workflow. +Older versions of either component are **not** supported on the `master` branch. -------------------------------------- +--- -## Credits +## Contributing + +Contributions are welcome via the standard +[fork-clone-pull-request](https://gist.github.com/Chaser324/ce0505fbed06b947d962) +workflow. Please read the contributor documentation in `CONTRIBUTING.md` and the +style guide in `docs/STYLE.md` (both currently being drafted as part of Milestone 1; +see the GitHub project board). -The [agda-algebras][] library is developed and maintained by the *ualib/agda-algebras development team*. +For questions about mathematical content or large design changes, open a GitHub issue +labeled `design-discussion` before writing code. -### The agda-algebras development team +--- -[Jacques Carette][] -[William DeMeo][] +## Licensing +agda-algebras is dual-licensed to match the dual nature of the project: -### Acknowledgements and attributions ++ **Source code** (under `src/`) is licensed under the [Apache License, Version 2.0](./LICENSE). This is a permissive, industry-standard software license compatible with essentially all other open-source licenses and commercial use. -We thank [Andreas Abel][], [Jeremy Avigad][], [Andrej Bauer][], [Clifford Bergman][], [Venanzio Capretta][], [Martín Escardó][], [Ralph Freese][], [Hyeyoung Shin][], and [Siva Somayyajula][] for helpful discussions, corrections, advice, inspiration and encouragement. ++ **Documentation, papers, and tutorials** (under `docs/`) are licensed under the [Creative Commons Attribution 4.0 International License](./LICENSE-docs). CC BY 4.0 is the standard license for academic-style written material; it permits sharing and adaptation with attribution. -Most of the mathematical results formalized in the [agda-algebras][] are well known. Regarding the source code in the [agda-algebras][] library, this is mainly due to the contributors listed above. +If you are redistributing or building on agda-algebras, please respect both licenses for their respective parts of the repository. + +--- + +## Credits + +The `agda-algebras` library is developed and maintained by the *agda-algebras development team*: + ++ [Jacques Carette][] ++ [William DeMeo][] + +### Acknowledgements + +We thank [Andreas Abel][], [Jeremy Avigad][], [Andrej Bauer][], [Clifford Bergman][], [Venanzio Capretta][], [Martín Escardó][], [Ralph Freese][], [Hyeyoung Shin][], and [Siva Somayyajula][] for helpful discussions, corrections, advice, inspiration, and encouragement. + +Most of the mathematical results formalized in agda-algebras are well known. The novelty is in the Agda formalization itself, which is mainly due to the contributors listed above. ### References -The following Agda documentation and tutorials helped inform and improve the [agda-algebras][] library, especially the first one in the list. +The following Agda documentation and tutorials informed the development of agda-algebras: -* Escardo, [Introduction to Univalent Foundations of Mathematics with Agda][] -* Wadler, [Programming Languages Foundations in Agda][] -* Bove and Dybjer, [Dependent Types at Work][] -* Gunther, Gadea, Pagano, [Formalization of Universal Algebra in Agda][] -* Norell and Chapman, [Dependently Typed Programming in Agda][] ++ Escardó, [Introduction to Univalent Foundations of Mathematics with Agda][] ++ Wadler, [Programming Languages Foundations in Agda][] ++ Bove and Dybjer, [Dependent Types at Work][] ++ Gunther, Gadea, Pagano, [Formalization of Universal Algebra in Agda][] ++ Norell and Chapman, [Dependently Typed Programming in Agda][] -Finally, the official [Agda Wiki][], [Agda User's Manual][], [Agda Language Reference][], and the (open source) [Agda Standard Library][] source code are also quite useful. +The official [Agda Wiki][], [Agda User's Manual][], [Agda Language Reference][], and the open-source [Agda Standard Library][] source code are also indispensable. +--- -### How to cite the Agda Universal Algebra Library +## Citing [![DOI](https://zenodo.org/badge/360493064.svg)](https://zenodo.org/badge/latestdoi/360493064) +[bibtex / new Zenodo entry to be added] + + To cite the [agda-algebras][] software library in a publication or on a web page, please use the following BibTeX entry: ```bibtex @@ -139,55 +152,35 @@ To cite the [formalization of Birkhoff's HSP Theorem](https://ualib.org/Setoid.V If you're looking for the latest (setoid-based) formalization of Brkhoff's Theorem, see the [Proof of the HSP Theorem](https://ualib.org/Setoid.Varieties.HSP.html#proof-of-the-hsp-theorem) in the html documentation, or the source code of the [Setoid.Varieties.HSP][] module in the file [Setoid/Varieties/HSP.lagda][] in the [agda-algebras][] GitHub repository. -------------------------------- - -## License - -
The Agda Universal -Algebra Library by William DeMeo and the [Agda Algebras Development Team](https://github.com/ualib/agda-algebras#the-agda-algebras-development-team) is licensed under a Creative Commons -Attribution-ShareAlike 4.0 International License.
Based on a work at -https://gitlab.com/ualib/ualib.gitlab.io. +--- + +[agda-algebras]: https://github.com/ualib/agda-algebras +[Agda]: https://wiki.portal.chalmers.se/agda/pmwiki.php +[Agda Language Reference]: https://agda.readthedocs.io/en/latest/language/ +[Agda Standard Library]: https://github.com/agda/agda-stdlib +[Agda Tools]: https://agda.readthedocs.io/en/latest/tools/ +[Agda Tutorial]: https://people.inf.elte.hu/pgj/agda/tutorial/Index.html +[Agda User's Manual]: https://agda.readthedocs.io/en/latest/ +[Agda Wiki]: https://wiki.portal.chalmers.se/agda/pmwiki.php -[Jeremy Avigad]: http://www.andrew.cmu.edu/user/avigad/ [Andreas Abel]: http://www.cse.chalmers.se/~abela/ -[Andrej Bauer]: http://www.andrej.com/index.html +[Andrej Bauer]: http://www.andrej.com/ [Clifford Bergman]: https://orion.math.iastate.edu/cbergman/ -[Cliff Bergman]: https://orion.math.iastate.edu/cbergman/ -[Venanzio Capretta]: https://www.duplavis.com/venanzio/ -[Jacques Carette]: http://www.cas.mcmaster.ca/~carette/ -[William DeMeo]: https://williamdemeo.gitlab.io/ -[Martín Escardó]: https://www.cs.bham.ac.uk/~mhe -[Ralph Freese]: https://math.hawaii.edu/~ralph/ -[Bill Lampe]: https://math.hawaii.edu/wordpress/people/william/ -[Miklós Maróti]: http://www.math.u-szeged.hu/~mmaroti/ -[JB Nation]: http://www.math.hawaii.edu/~jb/ [Hyeyoung Shin]: https://hyeyoungshin.github.io/ -[Siva Somayyajula]: http://www.cs.cmu.edu/~ssomayya/ - -[agda-algebras]: https://github.com/ualib/agda-algebras/ -[Introduction to Univalent Foundations of Mathematics with Agda]: https://www.cs.bham.ac.uk/~mhe/HoTT-UF-in-Agda-Lecture-Notes/index.html +[Introduction to Univalent Foundations of Mathematics with Agda]: https://www.cs.bham.ac.uk/~mhe/HoTT-UF-in-Agda-Lecture-Notes/ +[Jacques Carette]: https://www.cas.mcmaster.ca/~carette/ +[Jeremy Avigad]: https://www.andrew.cmu.edu/user/avigad/ +[Martín Escardó]: https://www.cs.bham.ac.uk/~mhe/ +[Ralph Freese]: https://math.hawaii.edu/~ralph/ +[Siva Somayyajula]: https://cs.stanford.edu/~siva/ +[Venanzio Capretta]: https://www.cs.nott.ac.uk/~pszvc/ +[William DeMeo]: https://williamdemeo.github.io/ + +[Dependent Types at Work]: https://www.cse.chalmers.se/~peterd/papers/DependentTypesAtWork.pdf +[Dependently Typed Programming in Agda]: https://link.springer.com/chapter/10.1007/978-3-642-04652-0_5 +[Formalization of Universal Algebra in Agda]: https://www.sciencedirect.com/science/article/pii/S1571066118300768 +[Introduction to Univalent Foundations of Mathematics with Agda]: https://www.cs.bham.ac.uk/~mhe/HoTT-UF-in-Agda-Lecture-Notes/ [Programming Languages Foundations in Agda]: https://plfa.github.io/ -[Dependent Types at Work]: http://www.cse.chalmers.se/~peterd/papers/DependentTypesAtWork.pdf -[Formalization of Universal Algebra in Agda]: http://www.sciencedirect.com/science/article/pii/S1571066118300768 -[Dependently Typed Programming in Agda]: http://www.cse.chalmers.se/~ulfn/papers/afp08/tutorial.pdf -[Agda]: https://wiki.portal.chalmers.se/agda/pmwiki.php -[Agda Language Reference]: https://agda.readthedocs.io/en/v2.6.1.3/language -[Agda Standard Library]: https://agda.github.io/agda-stdlib/ -[Agda Tools]: https://agda.readthedocs.io/en/v2.6.1.3/tools/ -[Agda Tutorial]: https://people.inf.elte.hu/pgj/agda/tutorial/Index.html -[Agda User's Manual]: https://agda.readthedocs.io/en/v2.6.1.3/ -[Agda Wiki]: https://wiki.portal.chalmers.se/agda/pmwiki.php -[agda2-mode]: https://agda.readthedocs.io/en/v2.6.1.3/tools/emacs-mode.html -[Algebraic Effects and Handlers]: https://www.cs.uoregon.edu/research/summerschool/summer18/topics.php#Bauer -[Bergman (2012)]: https://www.amazon.com/gp/product/1439851298/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1439851298&linkCode=as2&tag=typefunc-20&linkId=440725c9b1e60817d071c1167dff95fa -[new issue]: https://github.com/ualib/agda-algebras/issues/new/choose -[merge request]: https://github.com/ualib/agda-algebras/compare + + diff --git a/admin/generate-html b/admin/generate-html index 62dd5587..0478688c 100755 --- a/admin/generate-html +++ b/admin/generate-html @@ -20,7 +20,7 @@ echo " " echo "STEP 1. Generating agda program Everything.agda which imports all modules..." echo " " -echo "{-# OPTIONS --without-K --exact-split --safe #-}" > $SRCDIR/$TARGET.agda +echo "{-# OPTIONS --cubical-compatible --exact-split --safe #-}" > $SRCDIR/$TARGET.agda echo " " >> $SRCDIR/$TARGET.agda git ls-tree --full-tree -r --name-only HEAD | grep '^src/[^\.]*.lagda' | sed -e 's|^src/[/]*|import |' -e 's|/|.|g' -e 's/.lagda//' -e '/import Everything/d' | LC_COLLATE='C' sort >> $SRCDIR/$TARGET.agda diff --git a/agda-algebras.agda-lib b/agda-algebras.agda-lib index 57b265c8..634d692f 100644 --- a/agda-algebras.agda-lib +++ b/agda-algebras.agda-lib @@ -1,3 +1,4 @@ name: agda-algebras -depend: standard-library +depend: standard-library-2.3 include: src +flags: -WnoUnsupportedIndexedMatch diff --git a/doc/GITHUB_PROJECT.md b/doc/GITHUB_PROJECT.md deleted file mode 100644 index 9511727e..00000000 --- a/doc/GITHUB_PROJECT.md +++ /dev/null @@ -1,1444 +0,0 @@ -# agda-algebras — GitHub Project Roadmap - -**Project Title:** agda-algebras 2.0 — Infrastructure, Consolidation, Classical Structures -**Repository:** `ualib/agda-algebras` -**Date:** 2026-04-17 - ---- - -## Project Description - -A structured plan to modernize the agda-algebras library. The work is -organized into eight milestones: tooling upgrade and infrastructure -(M1), consolidation of the Base/Setoid fork (M2), introduction of the -long-missing classical structures layer (M3), style and naming -uniformity (M4), a Cubical Agda proof-of-concept as the canonical -long-term target (M5), prerequisites for work on the Finite Lattice -Representation Problem (M6), an extension of the existing algebraic -complexity / CSP module (M7), and publication of a training corpus for -language-model work (M8). After M1 lands, the remaining milestones run -largely in parallel. - ---- - -## Labels - -- `milestone-1-infra` (0075ca) — Milestone 1: Infrastructure health -- `milestone-2-consolidation` (0075ca) — Milestone 2: Consolidation -- `milestone-3-classical` (0075ca) — Milestone 3: Classical structures layer -- `milestone-4-style` (0075ca) — Milestone 4: Style and naming uniformity -- `milestone-5-cubical` (5319e7) — Milestone 5: Cubical track -- `milestone-6-flrp` (5319e7) — Milestone 6: FLRP prerequisites -- `milestone-7-csp` (5319e7) — Milestone 7: Algebraic complexity / CSP -- `milestone-8-llm` (5319e7) — Milestone 8: LLM readiness -- `stdlib-bridge` (fbca04) — Bridges to the Agda standard library -- `breaking-change` (d93f0b) — Breaking change to the public API -- `good first issue` (7057ff) — Good for newcomers -- `help-wanted` (0e8a16) — Community help wanted -- `design-discussion` (c5def5) — Needs design discussion before implementation -- `documentation` (0e8a16) — Documentation changes - ---- - -## Milestones - -### Milestone 1 — Infrastructure health (BLOCKING) - -**Description:** -Modernize the library's tooling, establish baseline project hygiene, and -unblock every subsequent milestone. The library is currently pinned to -Agda 2.6.2 / stdlib 1.7; it must move to Agda 2.8.0 / stdlib v2.3 with -`--cubical-compatible` replacing `--without-K`. Standard community-health -files (CONTRIBUTING, CHANGELOG, CODE_OF_CONDUCT, STYLE) must land. -GitHub Actions CI must stand up. README and installation docs must be -rewritten for the 2.0 line. - -**Exit criterion:** `make check` passes under GitHub Actions CI against -Agda 2.8.0 / stdlib v2.3; CONTRIBUTING.md, docs/STYLE.md, ROADMAP.md, -CHANGELOG.md are merged; README documents the new install path. - ---- - -### Milestone 2 — Consolidation - -**Description:** -Resolve the parallel Base/Setoid fork by freezing `Base/` and moving it -to `Legacy/Base/`. `Setoid/` is the canonical development tree for 2.0. -Within Legacy, consolidate redundant `Base.Structures` implementations and -remove abandoned experimental modules. Designate a single canonical proof -of Birkhoff's HSP theorem while preserving the pedagogical demonstration -variants. - -**Exit criterion:** `src/Base/` is in `src/Legacy/Base/` with a -deprecation note; `Setoid.Varieties.HSP.Birkhoff` is designated -canonical; ADR-001 (Setoid as canonical) is merged; no duplicate -implementations of the same concept remain in `Setoid/` or `Legacy/Base/`. - ---- - -### Milestone 3 — Classical structures layer - -**Description:** -Introduce the long-missing tower of classical algebraic structures as -Σ-typed specific theories over the universal-algebra framework, with -record-typed bundle views matching the stdlib `Algebra.Bundles` idiom. -Each structure ships as a Signatures / Theories / Structures / Bundles / -Small quintuple. Designed so that the underlying equivalence (Setoid in -2.0) can be mechanically substituted for a Cubical path type in 3.0. - -Phase 1: Magma, Semigroup, CommutativeSemigroup, Monoid, -CommutativeMonoid, Group, AbelianGroup, Semilattice, Lattice. Phase 2: -Ring, CommutativeRing, Field, Module, DistributiveLattice, -BooleanAlgebra. - -**Exit criterion:** Phase 1 classical structures are implemented, -documented, bridged to stdlib, and exercised by at least one worked -example each (e.g. `(ℕ, +, 0)` as a CommutativeMonoid; `(ℤ, +, -, 0)` as -an AbelianGroup). - ---- - -### Milestone 4 — Style and naming uniformity sweep - -**Description:** -Apply `docs/STYLE.md` consistently across `Setoid/` and `Classical/`. -Audit naming (one preferred name per concept; synonyms deprecated); -audit notation (one canonical symbol table); audit module structure -(one concept per module where feasible); ensure every user-facing -definition has a prose comment block. - -**Exit criterion:** No undocumented public definitions remain in -`Setoid/` or `Classical/`; no synonym pairs (e.g. `is-homomorphism` + -`IsHom`) exist in the public API; the canonical symbol table in -`docs/STYLE.md` matches the notation actually used in the library. - ---- - -### Milestone 5 — Cubical track (canonical long-term target) - -**Description:** -Prepare the path for `Cubical/` to become the canonical development tree -in version 3.0. Port `Algebra` to cubical Agda, prove the structure -identity principle (SIP), prove equivalence of `≅` with path equality, -and demonstrate end-to-end workflow by porting at least one classical -structure (Monoid is the natural choice). - -**Exit criterion:** `Cubical/Algebras/Basic.agda` compiles; SIP is -proven for the cubical Algebra record; Monoid has a working cubical port -that is essentially a mechanical substitution from its Setoid analog; -ADR-003 (Cubical as canonical target) is merged. - ---- - -### Milestone 6 — Toward the Finite Lattice Representation Problem - -**Description:** -Build the specialized universal-algebraic infrastructure needed to -tackle the Finite Lattice Representation Problem: "Does every finite -lattice occur as the congruence lattice of a finite algebra?" Near-term -prerequisites include `Con 𝑨` and `Sub 𝑨` as complete lattices, -subdirect products, subdirectly irreducible algebras, and basic Maltsev -conditions relevant to lattice representations. Medium-term: Jónsson's -theorem, Day's theorem. Long-term (out of scope for 2.0): tame -congruence theory, commutator theory, explicit representations of small -lattices. - -**Exit criterion:** `Con 𝑨` is a complete lattice; subdirect products -and subdirectly irreducible algebras are defined with basic properties -proven; at least one Maltsev condition (congruence permutability via -the Maltsev term characterization) is proven. - ---- - -### Milestone 7 — Algebraic complexity / CSP extensions - -**Description:** -Extend the existing `Base.Complexity` / `Exercises.Complexity.FiniteCSP` -work into a proper algebraic-complexity development. This is a separate -research program from Milestone 6 (the FLRP is about lattice -representation theory; CSP is about the complexity of constraint -satisfaction). Candidate content includes polymorphism clones, -the Jeavons Galois connection, Post's lattice, and a statement of the -Bulatov–Zhuk algebraic dichotomy. - -**Exit criterion:** At least one substantial algebraic-CSP theorem is -formalized (e.g. the Jeavons Galois connection for a fixed finite -domain); polymorphism clones are available as a first-class type. - ---- - -### Milestone 8 — LLM readiness and corpus artifacts - -**Description:** -Make the library maximally useful as a training and retrieval corpus for -language models. Extract (theorem statement, proof term) pairs with -metadata; publish as a Hugging Face dataset; explore agda-native-air -integration; publish a short paper or blog post describing the corpus -and its intended uses. - -**Exit criterion:** Initial corpus artifact is published with at least -500 (theorem, proof) pairs; a CI job regenerates the corpus on each -release; a public-facing write-up describing the dataset is available. - ---- - -### Milestone Dependencies - -```mermaid -graph TD - M1["M1 — Infrastructure"] - M2["M2 — Consolidation"] - M3["M3 — Classical structures"] - M4["M4 — Style sweep"] - M5["M5 — Cubical"] - M6["M6 — FLRP prerequisites"] - M7["M7 — CSP"] - M8["M8 — LLM corpus"] - - M1 --> M2 - M1 --> M4 - M1 --> M5 - M2 --> M3 - M2 --> M7 - M3 --> M5 - M3 --> M6 - M3 --> M7 - M4 --> M8 -``` - - - - ---- - -## Issues - -Below, each issue is tagged with its milestone (**M1**, **M2**, etc.), -suggested labels, and a full issue body ready for GitHub. Cross-milestone -dependencies are noted in the body; see the Mermaid graph at the end of -this file for a visual summary. - ---- ---- - -## Milestone 1 — Infrastructure health - ---- - -### Issue M1-1: Upgrade to Agda 2.8.0 and stdlib v2.3; replace `--without-K` with `--cubical-compatible` - -**Labels:** `milestone-1-infra`, `breaking-change` -**Milestone:** 1 — Infrastructure health - -#### Description - -The library is currently pinned to Agda 2.6.2 / stdlib 1.7. The Agda -ecosystem has moved on: the current stable is Agda 2.8.0 (July 2025) and -stdlib v2.3. `--without-K` has been superseded by `--cubical-compatible` -since Agda 2.6.3. This issue tracks the full upgrade. Blocks essentially -every other issue in this project. - -#### Tasks - -- [ ] Update `agda-algebras.agda-lib` to `depend: standard-library-2.3` - and document the minimum Agda version as 2.8.0 -- [ ] Replace every `{-# OPTIONS --without-K --exact-split --safe #-}` - with `{-# OPTIONS --cubical-compatible --exact-split --safe #-}` -- [ ] Fix any regressions from the flag change -- [ ] Update import paths for anything that moved between stdlib 1.7 and 2.3 - (expected hotspots: `Function.Bundles`, `Relation.Binary.*` renamings, - `Data.*` reorganizations) -- [ ] Update CI config to test against Agda 2.8.0 / stdlib 2.3 -- [ ] Update `README.md` and `doc/INSTALL.md` to reflect the new requirements -- [ ] Update the Nix flake - -#### Acceptance criteria - -- [ ] Library type-checks under Agda 2.8.0 / stdlib v2.3 -- [ ] `make check` succeeds locally -- [ ] No file still declares `--without-K` -- [ ] Once 2.0 is stable, consider adding a CI job against Agda 2.9/dev - to catch forward-compatibility issues early - ---- - -### Issue M1-2: Add GitHub Actions CI to type-check the library - -**Labels:** `milestone-1-infra`, `good first issue` -**Milestone:** 1 — Infrastructure health - -#### Description - -The library has no CI. Contributors can break type-checking without -maintainers noticing. Add a GitHub Actions workflow that type-checks the -library on each push and pull request. Reference workflows: -`agda-categories` and the stdlib itself both have well-maintained CI -that can be adapted. - -#### Tasks - -- [ ] Add `.github/workflows/ci.yml` -- [ ] Install Agda at the pinned version (Agda 2.8.0; see M1-1) -- [ ] Install stdlib v2.3 -- [ ] Run `make check` (or equivalent) on every push to `main` and on PRs -- [ ] Cache the Agda binary and `.agdai` files between runs -- [ ] Display a CI badge in the README - -#### Acceptance criteria - -- [ ] CI runs green on `main` -- [ ] CI triggers on every pull request -- [ ] Average job time < 10 min after caching -- [ ] README shows a green CI badge - ---- - -### Issue M1-3: Add CONTRIBUTING.md, CHANGELOG.md, CODE_OF_CONDUCT.md - -**Labels:** `milestone-1-infra`, `documentation`, `good first issue` -**Milestone:** 1 — Infrastructure health - -#### Description - -Standard community-health files are missing. Drafts of CONTRIBUTING and -STYLE exist from the 2.0 planning cycle and can be merged after review. - -#### Tasks - -- [ ] Add `CONTRIBUTING.md` (draft from planning cycle) -- [ ] Add `CHANGELOG.md` seeded with the 2.0 milestone entry -- [ ] Add `CODE_OF_CONDUCT.md` (Contributor Covenant 2.1) -- [ ] Add `.github/ISSUE_TEMPLATE/` with bug-report, feature-request, and - design-discussion templates -- [ ] Add `.github/PULL_REQUEST_TEMPLATE.md` - -#### Acceptance criteria - -- [ ] All four files exist at the repo root (or in `.github/`) -- [ ] GitHub recognizes the community-health files (green checkmarks on - the "Insights → Community" page) - ---- - -### Issue M1-4: Adopt docs/STYLE.md as the project style guide - -**Labels:** `milestone-1-infra`, `documentation` -**Milestone:** 1 — Infrastructure health - -#### Description - -Create `docs/STYLE.md` documenting file format, module structure, -naming conventions, notation, universe-polymorphism practices, record vs -Σ guidance, proof style, and library-as-training-corpus considerations. -A draft from the planning cycle is ready for review. Applying the style -guide across `Setoid/` and `Classical/` is tracked in M4-1. - -#### Tasks - -- [ ] Merge `docs/STYLE.md` (draft from planning cycle) -- [ ] Link `STYLE.md` from `README.md` and `CONTRIBUTING.md` - -#### Acceptance criteria - -- [ ] `docs/STYLE.md` is merged -- [ ] Links from README and CONTRIBUTING work - ---- - -### Issue M1-5: Rewrite README and Preface for the 2.0 release - -**Labels:** `milestone-1-infra`, `documentation` -**Milestone:** 1 — Infrastructure health - -#### Description - -The current `README.md` and `doc/lagda/Preface.lagda` are 1.x-era: wrong -Agda versions, obsolete installation paths, pre-consolidation library -structure. They need a rewrite aligned with the 2.0 release. Depends on -M1-1 through M1-4 and M2-1. - -#### Tasks - -- [ ] Pin Agda 2.8.0 / stdlib 2.3 in install instructions -- [ ] Describe the Setoid-as-canonical structure and point to `Classical/` -- [ ] Link `CONTRIBUTING.md`, `ROADMAP.md`, `docs/STYLE.md` -- [ ] Concrete quickstart for new users (5-command install → `make check`) -- [ ] Add CI badge (from M1-2) and documentation site link - -#### Acceptance criteria - -- [ ] A reviewer can follow the README on a clean machine to a working - `make check` without asking questions -- [ ] All links resolve -- [ ] No references to Agda 2.6.x or stdlib 1.x remain - ---- - -### Issue M1-6: Establish docs/adr/ for Architecture Decision Records - -**Labels:** `milestone-1-infra`, `documentation`, `good first issue` -**Milestone:** 1 — Infrastructure health - -#### Description - -As the library evolves, design decisions (Setoid vs Base canonicality, -record vs Σ for classical structures, Cubical track planning) should be -recorded so future contributors understand the rationale. Use Michael -Nygard's lightweight ADR format (one page per decision). - -#### Tasks - -- [ ] Create `docs/adr/` directory -- [ ] Add `docs/adr/README.md` explaining the ADR format -- [ ] Add `docs/adr/000-template.md` -- [ ] Seed with decisions ratified in 2.0: - - `001-setoid-as-canonical.md` (from M2-1) - - `002-classical-layer-design.md` (from M3-1) - - `003-cubical-canonical-target.md` (from M5-1) - -#### Acceptance criteria - -- [ ] `docs/adr/` exists with README and template -- [ ] All three seeded ADRs are drafted (full content can land with the - associated implementation issues) - ---- - - -### Milestone 1 Dependencies - -M1-5 is the integration node: the new README / Preface needs all the other M1 deliverables to exist before it can refer to them. M1-6 (docs/adr/) is structurally independent but is gated on M1-1 because it references the 2.0 release. - - -```mermaid -graph TD - M1_1["M1-1: Agda 2.8 / stdlib 2.3"] - M1_2["M1-2: GitHub Actions CI"] - M1_3["M1-3: Community files"] - M1_4["M1-4: STYLE.md"] - M1_5["M1-5: README / Preface"] - M1_6["M1-6: docs/adr/"] - - M1_1 --> M1_2 - M1_1 --> M1_3 - M1_1 --> M1_4 - M1_1 --> M1_6 - M1_2 --> M1_5 - M1_3 --> M1_5 - M1_4 --> M1_5 -``` - ---- ---- - -## Milestone 2 — Consolidation - ---- - -### Issue M2-1: Freeze Base/, adopt Setoid/ as canonical - -**Labels:** `milestone-2-consolidation`, `breaking-change` -**Milestone:** 2 — Consolidation - -#### Description - -The decision is ratified: `Setoid/` is the canonical development tree -for 2.0; `Base/` is frozen and moved to `Legacy/Base/`. - -Rationale: `Setoid/` is fully constructive (no extensionality -postulates); it matches the stdlib `Algebra.Bundles` idiom which -simplifies bridges; maintaining two trees indefinitely doubles every -theorem's cost; `Setoid/` already contains the definitive HSP proof. - -Note: `Base/` remains in the repo — frozen, not deleted — for posterity -and as a reference. Parts may be ported back to `Setoid/` or `Cubical/` -as needed. - -This is a breaking change for downstream users of `Base/`. Announce -prominently in the 2.0 CHANGELOG. - -#### Tasks - -- [ ] Move `src/Base/` → `src/Legacy/Base/` -- [ ] Update `src/agda-algebras.agda` to re-export `Legacy.Base` with a - deprecation note -- [ ] Add `DEPRECATED.md` in `Legacy/Base/` explaining the status and - pointing users to `Setoid/` -- [ ] Write ADR `docs/adr/001-setoid-as-canonical.md` -- [ ] Announce in CHANGELOG - -#### Acceptance criteria - -- [ ] `src/Base/` no longer exists at the old path -- [ ] `src/Legacy/Base/` exists and type-checks -- [ ] ADR-001 is merged -- [ ] CHANGELOG entry documents the move prominently - ---- - -### Issue M2-2: Consolidate parallel implementations within Legacy/Base/Structures - -**Labels:** `milestone-2-consolidation` -**Milestone:** 2 — Consolidation - -#### Description - -`Base.Structures.Basic` defines multi-sorted structures as records; -`Base.Structures.Sigma.*` does the same thing as Σ-types. They are -parallel implementations of the same concept, each with its own -`Products`, `Congruences`, `Homs`, `Isos`. Since `Base/` is frozen (see -M2-1), scope is limited to Legacy cleanup, but worth doing for clarity. - -#### Tasks - -- [ ] Pick one formulation (record or Σ) as canonical within Legacy -- [ ] Add conversion functions where they don't already exist -- [ ] Update internal uses to the canonical form -- [ ] Keep the non-canonical form under a distinct namespace with a - deprecation note - -#### Acceptance criteria - -- [ ] `Legacy/Base/Structures/` has a single canonical implementation of - each concept -- [ ] The non-canonical namespace is clearly marked deprecated - ---- - -### Issue M2-3: Remove Base.Structures.Graphs0 (unused experimental duplicate) - -**Labels:** `milestone-2-consolidation`, `good first issue` -**Milestone:** 2 — Consolidation - -#### Description - -`src/Base/Structures/Graphs0.agda` is not exported `public` from -`Base/Structures.agda` and appears to be an abandoned experimental -earlier version of `Base/Structures/Graphs.agda`. - -#### Tasks - -- [ ] Investigate for any downstream dependency on `Graphs0` -- [ ] If none, delete the file -- [ ] If still referenced, rename to `Graphs.Alternative` with a comment - explaining the distinction - -#### Acceptance criteria - -- [ ] `Graphs0` is either deleted or clearly renamed with documentation -- [ ] Library still type-checks - ---- - -### Issue M2-4: Designate a canonical HSP proof; consolidate the others - -**Labels:** `milestone-2-consolidation`, `documentation` -**Milestone:** 2 — Consolidation - -#### Description - -The library contains three proofs of Birkhoff's HSP theorem: - -1. `Base.Varieties.FreeAlgebras.Birkhoff` (original Base-tree proof) -2. `Setoid.Varieties.HSP.Birkhoff` (definitive setoid proof) -3. `Demos.HSP.Birkhoff` (self-contained pedagogical version for TYPES 2021) - -#### Tasks - -- [ ] Designate `Setoid.Varieties.HSP.Birkhoff` as canonical -- [ ] Keep `Demos.HSP` as the self-contained pedagogical presentation - (it was created for TYPES 2021 and remains valuable as a teaching artifact) -- [ ] Move `Base.Varieties.FreeAlgebras.Birkhoff` into Legacy (implicit - via M2-1, but cross-reference explicitly) -- [ ] Add cross-references among the three so a reader starting at any - of them can find the canonical statement -- [ ] Update paper citations in `doc/papers/` - -#### Acceptance criteria - -- [ ] `Setoid.Varieties.HSP.Birkhoff` is marked canonical in its module header -- [ ] `Demos.HSP` contains a reference to the canonical version -- [ ] The paper citation table is up to date - ---- - -### Milestone 2 Dependencies - -M2-1 (freeze Base/) is the fork point: everything else in this milestone is internal cleanup within what becomes `Legacy/Base/`, and all three depend on the move happening first. M1-1 is shown dashed to indicate it's an upstream dependency from a different milestone. - -```mermaid -graph TD - M1_1["M1-1: Agda 2.8 / stdlib 2.3"]:::ext - M2_1["M2-1: Freeze Base"] - M2_2["M2-2: Consolidate Base.Structures"] - M2_3["M2-3: Remove Graphs0"] - M2_4["M2-4: Canonical HSP"] - - M1_1 --> M2_1 - M2_1 --> M2_2 - M2_1 --> M2_3 - M2_1 --> M2_4 - - classDef ext fill:#f0f0f0,stroke:#999,stroke-dasharray: 4 3,color:#555 -``` - ---- ---- - -## Milestone 3 — Classical structures layer - ---- - -### Issue M3-1: Introduce the Classical/ tree — Signatures, Theories, Structures, Bundles, Small - -**Labels:** `milestone-3-classical`, `design-discussion` -**Milestone:** 3 — Classical structures layer - -#### Description - -The library has no formalized classical algebraic structures despite -this being a long-stated vision. This issue creates the scaffold; -subsequent issues add specific structures. - -Ratified design decisions (to be recorded in -`docs/adr/002-classical-layer.md`): - -1. Each classical structure `X` is Σ-typed at the core: - `X α ρ = Σ[ 𝑨 ∈ Algebra 𝑆ₓ α ρ ] 𝑨 ⊨ Eₓ`. - The mathematical reading "X *is* an algebra equipped with a proof it - satisfies the X-theory" motivates Σ over record for classical - structures. The core `Algebra` type stays a record. -2. A parallel record-typed "bundle view" in `Classical/Bundles/X` - matches the stdlib `Algebra.Bundles` idiom for interop. -3. Built on `Setoid/` (not `Base/`). A helper - `fromPropEq : Type α → ... → X α α` lets users build classical - structures from propositional-equality-based definitions without - explicit Setoid wrapping. -4. Designed for Cubical portability. Equations stated purely in terms of - `Algebra.Domain`'s equivalence — never reaching for Setoid-specific - features without a Cubical analog. When `Cubical/` becomes canonical - in 3.0, the port should be mechanical. -5. Two levels of specificity per structure: polymorphic core - (`Classical.Structures.X`) and level-fixed veneer - (`Classical.Small.Structures.X`) for the common `ℓ₀` case. - -#### Tasks - -- [ ] Create the directory skeleton: -``` -src/Classical/ - Classical.agda - Signatures/ - Theories/ - Structures/ - Bundles/ - Small/Structures/ -``` -- [ ] Add placeholder modules that type-check -- [ ] Write `Classical.agda` that re-exports everything -- [ ] Write `docs/adr/002-classical-layer.md` recording the design decisions - -#### Acceptance criteria - -- [ ] Scaffold type-checks -- [ ] `Classical.agda` re-exports the empty scaffold cleanly -- [ ] ADR-002 is merged - ---- - -### Issue M3-2: Add Classical.Structures.Semigroup (pattern-setting first structure) - -**Labels:** `milestone-3-classical` -**Milestone:** 3 — Classical structures layer - -#### Description - -After the M3-1 scaffold lands, add Semigroup as the pattern-setting -first non-trivial classical structure. Every subsequent classical -structure will imitate this pattern, so getting it right is -disproportionately important. - -#### Tasks - -- [ ] `Classical/Signatures/Semigroup.agda`: one binary operation, `𝑆ₛ` -- [ ] `Classical/Theories/Semigroup.agda`: associativity as the single - equation in `Theory 𝑆ₛ` -- [ ] `Classical/Structures/Semigroup.agda`: the Σ-typed definition - `Semigroup α ρ = Σ[ 𝑨 ∈ Algebra 𝑆ₛ α ρ ] 𝑨 ⊨ Eₛ` with convenience - projections -- [ ] Basic lemmas: every semigroup is an `Algebra`; composition of - semigroup morphisms is a semigroup morphism -- [ ] `fromPropEq` helper for propositional-equality-based definitions -- [ ] At least one worked example: `(ℕ, +)` as a `Semigroup` -- [ ] `Classical/Bundles/Semigroup.agda` with stdlib bridge (see M3-3) -- [ ] `Classical/Small/Structures/Semigroup.agda` level-fixed veneer - -#### Acceptance criteria - -- [ ] All files type-check -- [ ] The worked example `ℕ-semigroup` type-checks -- [ ] The bridge to `Algebra.Bundles.Semigroup` round-trips on `ℕ` -- [ ] Module header comment documents the pattern for future structures - ---- - -### Issue M3-3: Bridges between Classical.Structures and Algebra.Bundles - -**Labels:** `milestone-3-classical`, `stdlib-bridge` -**Milestone:** 3 — Classical structures layer - -#### Description - -For each classical structure `X`, provide `Classical/Bundles/X.agda` -with bidirectional conversion between the Σ-typed core and the stdlib's -`Algebra.Bundles.X`. - -#### Tasks - -Phase 1 (after M3-2): - -- [ ] Magma -- [ ] Semigroup -- [ ] CommutativeSemigroup -- [ ] Monoid -- [ ] CommutativeMonoid -- [ ] Group -- [ ] AbelianGroup - -Phase 2: - -- [ ] Semilattice -- [ ] Lattice (bridges to both `Algebra.Bundles.Lattice` and - `Algebra.Lattice.Bundles.Lattice`) -- [ ] Semiring -- [ ] Ring -- [ ] CommutativeRing - -#### Acceptance criteria - -- [ ] Each bundle file proves round-trip properties where applicable -- [ ] A stdlib concrete instance (e.g. stdlib's `ℕ-+-commutativeMonoid`) - round-trips through the bridge - ---- - -### Issue M3-4: Classical structures — Monoid, CommutativeMonoid, Group, AbelianGroup - -**Labels:** `milestone-3-classical`, `help-wanted` -**Milestone:** 3 — Classical structures layer - -#### Description - -Follow the pattern established in M3-2 to add the monoid-and-group -family, with corresponding signatures, theories, bundle views, and -level-fixed veneers. - -#### Tasks - -- [ ] `Classical/Structures/Monoid.agda` -- [ ] `Classical/Structures/CommutativeMonoid.agda` -- [ ] `Classical/Structures/Group.agda` -- [ ] `Classical/Structures/AbelianGroup.agda` -- [ ] Corresponding signatures, theories, bundles (per M3-3), Small veneers -- [ ] Worked examples: `(ℕ, +, 0)` as CommutativeMonoid; `(ℤ, +, 0, -)` - as AbelianGroup - -#### Acceptance criteria - -- [ ] All four structures type-check and round-trip through their bundles -- [ ] Worked examples type-check - ---- - -### Issue M3-5: Classical.Semilattice and Classical.Lattice - -**Labels:** `milestone-3-classical`, `help-wanted` -**Milestone:** 3 — Classical structures layer - -#### Description - -Lattices are centrally important because `Con 𝑨` and `Sub 𝑨` are -naturally lattices, and the Finite Lattice Representation Problem (M6) -is stated in terms of lattices. - -#### Tasks - -- [ ] `Classical/Signatures/Lattice.agda`: two binary operations - (`∧`, `∨`) or one (meet), depending on formulation -- [ ] `Classical/Theories/Lattice.agda`: associativity, commutativity, - idempotence, absorption -- [ ] `Classical/Structures/Semilattice.agda` -- [ ] `Classical/Structures/Lattice.agda` -- [ ] Bridge to `Algebra.Lattice.Bundles` -- [ ] Prove equivalence of algebraic (meet-join) and order-theoretic - formulations - -#### Acceptance criteria - -- [ ] Both structures type-check -- [ ] The meet-join / order-theoretic equivalence theorem is proved -- [ ] Bridge to stdlib round-trips on `𝟚` as a Boolean lattice - ---- - -### Issue M3-6: Classical.Ring and Classical.CommutativeRing - -**Labels:** `milestone-3-classical`, `help-wanted` -**Milestone:** 3 — Classical structures layer - -#### Description - -Rings depend on AbelianGroup for the additive structure, so this issue -comes after M3-4. - -#### Tasks - -- [ ] `Classical/Signatures/Ring.agda` -- [ ] `Classical/Theories/Ring.agda` -- [ ] `Classical/Structures/Ring.agda` -- [ ] `Classical/Structures/CommutativeRing.agda` -- [ ] Bridge to stdlib -- [ ] Worked example: `(ℤ, +, *, 0, 1, -)` as CommutativeRing - -#### Acceptance criteria - -- [ ] Both structures type-check -- [ ] The worked example `ℤ-ring` type-checks -- [ ] Bridge to stdlib `CommutativeRing` round-trips on `ℤ` - ---- - -### Issue M3-7: Expand Examples/ with worked classical-structure instances - -**Labels:** `milestone-3-classical`, `documentation`, `good first issue`, `help-wanted` -**Milestone:** 3 — Classical structures layer - -#### Description - -The `Examples/` directory is thin. Add worked examples that exercise the -Classical/ layer. - -#### Tasks - -- [ ] `(ℕ, +, 0)` as a `CommutativeMonoid`, with HSP specialized to it -- [ ] `(ℤ, +, 0, -)` as an `AbelianGroup` -- [ ] `𝟚` with two operations as a `DistributiveLattice` -- [ ] A small finite group (`ℤ/3ℤ`) with its congruence lattice computed -- [ ] A finite Heyting algebra as a Lattice example - -#### Acceptance criteria - -- [ ] At least five new example files in `Examples/Classical/` -- [ ] Each example type-checks and is documented in a prose header - ---- - -### Milestone 3 Dependencies - -M3-2 (Semigroup) is the pattern-setter — the design choices made there propagate to every other structure. M3-4 (Monoid/Group) and M3-5 (Lattice) are the mid-level hubs; M3-6 (Ring) needs M3-4 because rings are abelian groups with extra structure, and M3-7 (Examples) aggregates from several of the structure issues. - -```mermaid -graph TD - M2_1["M2-1: Freeze Base"]:::ext - M3_1["M3-1: Classical/ scaffold"] - M3_2["M3-2: Semigroup (pattern-setting)"] - M3_3["M3-3: Stdlib bridges"] - M3_4["M3-4: Monoid / Group"] - M3_5["M3-5: Lattice"] - M3_6["M3-6: Ring"] - M3_7["M3-7: Examples"] - - M2_1 --> M3_1 - M3_1 --> M3_2 - M3_2 --> M3_3 - M3_2 --> M3_4 - M3_3 --> M3_5 - M3_4 --> M3_5 - M3_4 --> M3_6 - M3_2 --> M3_7 - M3_4 --> M3_7 - M3_5 --> M3_7 - - classDef ext fill:#f0f0f0,stroke:#999,stroke-dasharray: 4 3,color:#555 -``` - ---- ---- - -## Milestone 4 — Style and naming uniformity sweep - ---- - -### Issue M4-1: Style uniformity sweep across Setoid/ - -**Labels:** `milestone-4-style`, `documentation` -**Milestone:** 4 — Style and naming uniformity sweep - -#### Description - -Apply `docs/STYLE.md` across the `Setoid/` tree. This is a long-tail -task that can be decomposed into per-submodule issues for parallel work. - -#### Tasks - -- [ ] Audit naming: `IsHom` vs `is-homomorphism` vs `Hom` — pick one, - deprecate others -- [ ] Audit notation against the canonical symbol table in STYLE.md -- [ ] Audit imports (tighten `using` clauses; remove unused) -- [ ] Ensure every public definition has a prose comment block -- [ ] Rich comment headers on every module - -#### Acceptance criteria - -- [ ] No synonym pairs remain in the `Setoid/` public API -- [ ] All notation in `Setoid/` matches the canonical table in STYLE.md -- [ ] Every public definition in `Setoid/` has a docstring - ---- - -### Issue M4-2: Docstring pass for all user-facing definitions - -**Labels:** `milestone-4-style`, `documentation`, `help-wanted` -**Milestone:** 4 — Style and naming uniformity sweep - -#### Description - -Every record, type family, and top-level function in the public API -should have a prose comment block explaining what it is, when to use it, -and cross-references to related definitions. Long-tail task; pursue in -small per-module PRs. - -#### Tasks - -- [ ] Walk every public module in `Setoid/` and add missing docstrings -- [ ] Walk every public module in `Classical/` and add missing docstrings -- [ ] Enforce via a linter or review checklist - -#### Acceptance criteria - -- [ ] `grep`-based audit finds zero public definitions without a - preceding comment block - ---- - -### Issue M4-3: Design discussion — scope of 𝓞 and 𝓥 universe variables - -**Labels:** `milestone-4-style`, `design-discussion`, `good first issue` -**Milestone:** 4 — Style and naming uniformity sweep - -#### Description - -`Overture.Signatures` declares `variable 𝓞 𝓥 : Level` without `private`. -They leak through every downstream module, which is convenient but can -be confusing for new contributors shadowing the names. - -#### Tasks - -- [ ] Write up the three options in an ADR or design-discussion issue: - 1. Keep current behavior; document clearly - 2. Make them `private` in `Overture.Signatures`; downstream modules re-declare - 3. Move to a dedicated `Overture.UniverseLevels` module imported explicitly -- [ ] Collect input; pick one -- [ ] Document the decision in STYLE.md -- [ ] Apply consistently - -#### Acceptance criteria - -- [ ] Decision is recorded (ADR or STYLE.md section) -- [ ] `𝓞` and `𝓥` are handled uniformly across the library - ---- - ---- - -## Milestone 5 — Cubical track - ---- - -### Issue M5-1: Cubical track — Cubical/Algebras/Basic with SIP and Monoid port - -**Labels:** `milestone-5-cubical` -**Milestone:** 5 — Cubical track (canonical long-term target) - -#### Description - -Cubical Agda is the canonical long-term target for this library. This -issue establishes the path: port the core algebra types, prove the -structure identity principle (SIP), and demonstrate end-to-end workflow -by porting Monoid from the Setoid-based Classical layer to a Cubical -counterpart. The ultimate goal is for Cubical to become the default -development track in version 3.0, with `Setoid/` moving to Legacy. - -Design implication for M3: the Classical layer must be designed so that -the Setoid-to-Cubical port is mechanical — equations stated purely in -terms of the `Algebra` record's Domain equivalence, no Setoid-specific -gadgets in the definitions of classical structures themselves. - -#### Tasks - -- [ ] `Cubical/Algebras/Basic.agda`: cubical counterpart of - `Setoid.Algebras.Basic`. Carrier is a Type; equality is the path type -- [ ] `Cubical/Algebras/SIP.agda`: structure identity principle. Port or - adapt from the `cubical` or `1Lab` library -- [ ] Prove: `≅` as defined for Cubical algebras is equivalent to path - equality (the central "transport does what we want" result) -- [ ] End-to-end port: take `Classical/Structures/Monoid.agda` from the - Setoid-based version (post M3-4) and produce the Cubical analog. - Verify that equations transport by substitution alone -- [ ] Write `docs/adr/003-cubical-canonical-target.md` explicitly - planning the 3.0 transition and the criteria for promoting - Cubical from experimental to canonical - -#### Acceptance criteria - -- [ ] `Cubical/Algebras/Basic.agda` and `SIP.agda` compile under `--cubical` -- [ ] The `≅`-is-path theorem is proved -- [ ] `Cubical/Classical/Monoid.agda` compiles and is substitutionally - derived from its Setoid analog -- [ ] ADR-003 is merged - ---- - ---- - -## Milestone 6 — Toward the Finite Lattice Representation Problem - ---- - -### Issue M6-1: Con(A) as a complete lattice - -**Labels:** `milestone-6-flrp` -**Milestone:** 6 — Toward the Finite Lattice Representation Problem - -#### Description - -The current `Setoid.Algebras.Congruences` defines congruences but does -not organize them as a lattice. For the FLRP, commutator theory, and -subdirect product theorems, `Con 𝑨` as a complete lattice is -foundational infrastructure. Likely requires a congruence-generation -theorem as a subsidiary result. - -#### Tasks - -- [ ] Define `Con 𝑨` as a type (may exist already; promote to a - first-class lattice object) -- [ ] Define the partial order `_≤_` (containment) -- [ ] Define meet: `θ ∧ φ = θ ∩ φ` -- [ ] Define join: `θ ∨ φ = Cg(θ ∪ φ)` (congruence generated by union) -- [ ] `Con-Lattice : (𝑨 : Algebra α ρ) → Lattice _ _` -- [ ] `Con-CompleteLattice` with infinite meets and joins -- [ ] Zero and total congruences as `⊥` and `⊤` -- [ ] Subsidiary: congruence-generation theorem - -#### Acceptance criteria - -- [ ] `Con-Lattice 𝑨` type-checks and satisfies the Lattice axioms -- [ ] Infinite meets and joins are proved -- [ ] At least one small worked example (e.g. `Con` of a 2-element algebra) - ---- - -### Issue M6-2: Subdirect products and subdirectly irreducible algebras - -**Labels:** `milestone-6-flrp` -**Milestone:** 6 — Toward the Finite Lattice Representation Problem - -#### Description - -Subdirect products and subdirect irreducibility are foundational for -both the FLRP and for general universal-algebraic theorems (e.g. -Birkhoff's subdirect product theorem). - -#### Tasks - -- [ ] `SubdirectProduct : (𝒜 : I → Algebra α ρ) → Algebra _ _` — embeds - into `⨅ 𝒜` with each projection surjective -- [ ] `IsSubdirectlyIrreducible : Algebra α ρ → Type _` -- [ ] Birkhoff's subdirect product theorem: every algebra is a - subdirect product of SI algebras -- [ ] SI characterization via monolithic congruences - -#### Acceptance criteria - -- [ ] Subdirect product construction type-checks -- [ ] Birkhoff's subdirect product theorem is proved -- [ ] SI characterization is proved - ---- - -### Issue M6-3: Basic Maltsev conditions (CD, CM, CP) - -**Labels:** `milestone-6-flrp`, `design-discussion` -**Milestone:** 6 — Toward the Finite Lattice Representation Problem - -#### Description - -Maltsev conditions characterize varieties by the existence of terms with -specific properties. The three most basic are congruence distributivity -(CD), congruence modularity (CM), and congruence permutability (CP). -For the FLRP, congruence modularity is particularly relevant because -modular congruence lattices are a natural testing ground for -representation questions. - -Design discussion: how to encode Maltsev conditions uniformly? Options -include (a) a record bundling a term and its identities; (b) an -inductive type of schemes. Lift from Taylor 1977 where possible. - -#### Tasks - -- [ ] `HasMaltsevTerm : Variety → Term → Type` -- [ ] Specific Maltsev terms: Jónsson terms (CD), Day terms (CM), - Maltsev operation `p(x,y,y) = x = p(y,y,x)` (CP) -- [ ] Jónsson's theorem: a variety is CD iff Jónsson terms exist -- [ ] CP iff a Maltsev term exists -- [ ] Day's theorem for CM - -#### Acceptance criteria - -- [ ] At least CP's Maltsev-term characterization is proved -- [ ] Jónsson's theorem and Day's theorem are either proved or have a - clear stub indicating what remains - ---- - -### Milestone 6 Dependencies - -M6-1 (Con(A) as a lattice) is the foundation: both subdirect products and Maltsev conditions need congruences-as-a-lattice to be phrasable in the form the classical proofs use. - -```mermaid -graph TD - M3_5["M3-5: Lattice"]:::ext - M6_1["M6-1: Con(A) lattice"] - M6_2["M6-2: Subdirect products"] - M6_3["M6-3: Maltsev conditions"] - - M3_5 --> M6_1 - M6_1 --> M6_2 - M6_1 --> M6_3 - - classDef ext fill:#f0f0f0,stroke:#999,stroke-dasharray: 4 3,color:#555 -``` - ---- - -## Milestone 7 — Algebraic complexity / CSP extensions - ---- - -### Issue M7-1: Extend Complexity module beyond Basic and CSP - -**Labels:** `milestone-7-csp`, `help-wanted`, `design-discussion` -**Milestone:** 7 — Algebraic complexity / CSP extensions - -#### Description - -The current `Base.Complexity` module has only two submodules (`Basic` -and `CSP`). The CSP module is little more than a bare definition with -no theorems. This is a separate research track from the FLRP (M6): the -FLRP is about which lattices arise as congruence lattices of finite -algebras, while algebraic CSP is about the complexity of constraint -satisfaction problems as a function of the polymorphism clone of the -underlying relational structure. Both use universal algebra, but they -are different questions. - -This issue is research-flavored and best decomposed after discussion. - -#### Tasks - -Candidate content, to be prioritized: - -- [ ] Polymorphism clones: `Pol(A, Γ)` as a first-class type -- [ ] The Jeavons Galois connection between invariant relations and - polymorphism clones -- [ ] Post's lattice (for Boolean clones) -- [ ] Specific CSP tractability classes as worked examples (Horn-SAT, - 2-SAT, linear systems over finite fields) -- [ ] Statement (not necessarily proof) of the Bulatov–Zhuk algebraic - dichotomy - -#### Acceptance criteria - -- [ ] Polymorphism clones available as a type with basic operations -- [ ] Jeavons Galois connection is proved for a fixed finite domain, OR - a clear research-plan issue is filed continuing the work - ---- - ---- - -## Milestone 8 — LLM readiness and corpus artifacts - ---- - -### Issue M8-1: Publish (theorem, proof) corpus for LLM training - -**Labels:** `milestone-8-llm`, `documentation` -**Milestone:** 8 — LLM readiness and corpus artifacts - -#### Description - -Once `Setoid/` and `Classical/` are stable post-M4, publish a training -and retrieval corpus for language models. - -#### Tasks - -- [ ] Design a schema for corpus records: module path, theorem statement, - proof term, dependencies, prose summary, keywords -- [ ] Implement an extractor that walks the library and emits records -- [ ] Publish as a Hugging Face dataset -- [ ] Add a CI job that regenerates the corpus on each release -- [ ] Write a short paper or blog post describing the dataset - -#### Acceptance criteria - -- [ ] Dataset published with ≥ 500 (theorem, proof) records -- [ ] CI regenerates on release -- [ ] Write-up is public - ---- - -### Issue M8-2: Explore integration with agda-native-air - -**Labels:** `milestone-8-llm`, `design-discussion` -**Milestone:** 8 — LLM readiness and corpus artifacts - -#### Description - -agda-native-air (the developer's parallel project on AI-assisted formal -proof) is a natural consumer of the agda-algebras corpus. This issue -tracks the integration. Exploratory; low-priority until agda-native-air -stabilizes. - -#### Tasks - -- [ ] Document what API / metadata / annotations agda-native-air needs - from agda-algebras -- [ ] Identify any agda-algebras design choices that help or hinder - agda-native-air consumption -- [ ] Write an integration report - -#### Acceptance criteria - -- [ ] Integration report exists in `docs/integration-agda-native-air.md` -- [ ] Any design changes required are filed as separate issues - ---- - ---- - -## Summary: Issue Index by Milestone - -### M1 — Infrastructure health (6 issues) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|-------------------------------------| -| M1-1 | Upgrade to Agda 2.8.0 / stdlib 2.3 | milestone-1-infra, breaking-change | -| M1-2 | Add GitHub Actions CI | milestone-1-infra, good first issue | -| M1-3 | Add CONTRIBUTING, CHANGELOG, CoC | milestone-1-infra, documentation | -| M1-4 | Adopt docs/STYLE.md | milestone-1-infra, documentation | -| M1-5 | Rewrite README and Preface | milestone-1-infra, documentation | -| M1-6 | Establish docs/adr/ | milestone-1-infra, documentation | - -### M2 — Consolidation (4 issues) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|----------------------------------------------| -| M2-1 | Freeze Base/, adopt Setoid/ as canonical | milestone-2-consolidation, breaking-change | -| M2-2 | Consolidate Base.Structures implementations | milestone-2-consolidation | -| M2-3 | Remove Base.Structures.Graphs0 | milestone-2-consolidation, good first issue | -| M2-4 | Designate canonical HSP proof | milestone-2-consolidation, documentation | - -### M3 — Classical structures layer (7 issues) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|-------------------------------------------------| -| M3-1 | Classical/ tree scaffold | milestone-3-classical, design-discussion | -| M3-2 | Classical.Semigroup (pattern-setting) | milestone-3-classical | -| M3-3 | Stdlib bundle bridges | milestone-3-classical, stdlib-bridge | -| M3-4 | Monoid, CommutativeMonoid, Group, AbelianGroup | milestone-3-classical, help-wanted | -| M3-5 | Semilattice, Lattice | milestone-3-classical, help-wanted | -| M3-6 | Ring, CommutativeRing | milestone-3-classical, help-wanted | -| M3-7 | Examples/ expansion | milestone-3-classical, documentation | - -### M4 — Style and naming uniformity (3 issues) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|--------------------------------------------------| -| M4-1 | Style sweep across Setoid/ | milestone-4-style, documentation | -| M4-2 | Docstring pass | milestone-4-style, documentation, help-wanted | -| M4-3 | Scope of 𝓞 and 𝓥 | milestone-4-style, design-discussion | - -### M5 — Cubical track (1 issue) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|-----------------------| -| M5-1 | Cubical/Algebras/Basic + SIP + Monoid port | milestone-5-cubical | - -### M6 — FLRP prerequisites (3 issues) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|-----------------------------------------------| -| M6-1 | Con(A) as complete lattice | milestone-6-flrp | -| M6-2 | Subdirect products; SI algebras | milestone-6-flrp | -| M6-3 | Basic Maltsev conditions | milestone-6-flrp, design-discussion | - -### M7 — Algebraic complexity / CSP (1 issue) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|---------------------------------------------------------------------| -| M7-1 | Extend Complexity / CSP module | milestone-7-csp, help-wanted, design-discussion | - -### M8 — LLM readiness (2 issues) - -| ID | Title | Labels | -|------|-----------------------------------------------------------|-------------------------------------------| -| M8-1 | Publish (theorem, proof) corpus | milestone-8-llm, documentation | -| M8-2 | Explore agda-native-air integration | milestone-8-llm, design-discussion | - -**Total: 27 issues across 8 milestones.** - ---- - -## Dependency Graph (Mermaid) - -```mermaid -graph TD - subgraph "M1 — Infrastructure" - M1_1["M1-1: Agda 2.8 / stdlib 2.3"] - M1_2["M1-2: GitHub Actions CI"] - M1_3["M1-3: Community files"] - M1_4["M1-4: STYLE.md"] - M1_5["M1-5: README / Preface"] - M1_6["M1-6: docs/adr/"] - end - subgraph "M2 — Consolidation" - M2_1["M2-1: Freeze Base"] - M2_2["M2-2: Consolidate Base.Structures"] - M2_3["M2-3: Remove Graphs0"] - M2_4["M2-4: Canonical HSP"] - end - subgraph "M3 — Classical structures" - M3_1["M3-1: Classical/ scaffold"] - M3_2["M3-2: Semigroup"] - M3_3["M3-3: Stdlib bridges"] - M3_4["M3-4: Monoid / Group"] - M3_5["M3-5: Lattice"] - M3_6["M3-6: Ring"] - M3_7["M3-7: Examples"] - end - subgraph "M4 — Style sweep" - M4_1["M4-1: Style audit"] - M4_2["M4-2: Docstrings"] - M4_3["M4-3: 𝓞/𝓥 scope"] - end - subgraph "M5 — Cubical" - M5_1["M5-1: Cubical Algebra + SIP + Monoid"] - end - subgraph "M6 — FLRP" - M6_1["M6-1: Con(A) lattice"] - M6_2["M6-2: Subdirect products"] - M6_3["M6-3: Maltsev conditions"] - end - subgraph "M7 — CSP" - M7_1["M7-1: Complexity / CSP"] - end - subgraph "M8 — LLM corpus" - M8_1["M8-1: Corpus artifact"] - M8_2["M8-2: agda-native-air"] - end - - %% M1 internal - M1_1 --> M1_2 - M1_1 --> M1_3 - M1_1 --> M1_4 - M1_1 --> M1_6 - M1_1 --> M1_5 - M1_2 --> M1_5 - M1_3 --> M1_5 - M1_4 --> M1_5 - - %% M2 depends on M1 - M1_1 --> M2_1 - M2_1 --> M2_2 - M2_1 --> M2_3 - M2_1 --> M2_4 - M2_1 --> M1_5 - - %% M3 depends on M2 - M2_1 --> M3_1 - M3_1 --> M3_2 - M3_2 --> M3_3 - M3_2 --> M3_4 - M3_3 --> M3_5 - M3_4 --> M3_5 - M3_4 --> M3_6 - M3_2 --> M3_7 - M3_4 --> M3_7 - M3_5 --> M3_7 - - %% M4 depends on M1-4 - M1_4 --> M4_1 - M1_4 --> M4_2 - M1_4 --> M4_3 - - %% M5 depends on M1 and M3-4 - M1_1 --> M5_1 - M3_4 --> M5_1 - - %% M6 depends on M3-5 - M3_5 --> M6_1 - M6_1 --> M6_2 - M6_1 --> M6_3 - - %% M7 depends on M2-1 and M3-5 - M2_1 --> M7_1 - M3_5 --> M7_1 - - %% M8 depends on M4 - M4_1 --> M8_1 - M4_2 --> M8_1 - M8_1 --> M8_2 -``` - ---- - -## How to Create This Project on GitHub - -Use the companion script `gh_project_populate.py` (patched as described -in the project planning notes to read labels from the `## Labels` -section above). - -### Prerequisites - -- Python 3.8+ -- `gh` CLI installed and authenticated -- The `ualib/agda-algebras` repo must already exist - -### Quick start - -```zsh -# 1. Dry run — see what would be created: -python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --dry-run - -# 2. Create everything (will prompt for confirmation): -python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras - -# 3. Or create in stages: -python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --labels-only -python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --milestones-only -python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only - -# 4. Resume if interrupted (e.g. start from M3-2): -python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only --start-from M3-2 -``` - -### Notes - -- The patched `_parse_labels` reads from the `## Labels` section of this - file. See the companion patch file for the small diff. -- Labels and milestones are idempotent — re-running skips existing ones. -- Issue titles are prefixed with `[M1-1]`, `[M2-3]`, etc. for easy - identification and ordering. -- A 1.5-second delay between API calls avoids GitHub rate limiting - (adjustable with `--delay`). - diff --git a/doc/papers/TYPES2021/README.md b/doc/papers/TYPES2021/README.md deleted file mode 100644 index 2b91ea0c..00000000 --- a/doc/papers/TYPES2021/README.md +++ /dev/null @@ -1,7 +0,0 @@ -## doc/TYPES2021/README - -Here is the workflow used to develop the document `agda-hsp.pdf`. - -1. Edit/improve the literate Agda file `src/Demos/HSP.lagda`. -2. Invoke `agda --latex --latex-dir=doc/TYPES2021 src/Demos/HSP.lagda` from the main `agda-algebras` directory. -3. Invoke `pdflatex agda-hsp` from within the `doc/TYPES2021` directory. diff --git a/docs/GITHUB_PROJECT.md b/docs/GITHUB_PROJECT.md new file mode 100644 index 00000000..c2a50987 --- /dev/null +++ b/docs/GITHUB_PROJECT.md @@ -0,0 +1,1416 @@ + + +# agda-algebras — GitHub Project Roadmap + +**Project Title**: agda-algebras 2.0 — Infrastructure, Consolidation, Classical Structures, Applications + +**Repository**: `ualib/agda-algebras` + +**Date**: 2026-04-19 + +--- + +## Short Description + +Modernization of agda-algebras in 9 milestones: tooling upgrade/infra (M1), consolidate Base/Setoid (M2), classical structures (M3), style/naming uniformity (M4), Cubical Agda (M5), FLRP (M6), complexity/CSP module (M7), training corpus/LLM (M8), novel-research apps of `Continuous` relation API (M9). + + +## Project Description + +A structured plan to modernize the agda-algebras library. The work is organized into nine milestones: tooling upgrade and infrastructure (M1), consolidation of the Base/Setoid fork (M2), introduction of the long-missing classical structures layer (M3), style and naming uniformity (M4), a Cubical Agda proof-of-concept as the canonical long-term target (M5), prerequisites for work on the Finite Lattice Representation Problem (M6), an extension of the existing algebraic complexity / CSP module for finite templates (M7), publication of a training corpus for language-model work (M8), and novel-research applications of the `Continuous` relation API (M9). After M1 lands, the remaining milestones run largely in parallel. + +--- + +## Labels + +- `milestone-1-infra` (0075ca) — Milestone 1: Infrastructure health. +- `milestone-2-consolidation` (0075ca) — Milestone 2: Consolidation. +- `milestone-3-classical` (0075ca) — Milestone 3: Classical structures layer. +- `milestone-4-style` (0075ca) — Milestone 4: Style and naming uniformity. +- `milestone-5-cubical` (5319e7) — Milestone 5: Cubical track. +- `milestone-6-flrp` (5319e7) — Milestone 6: FLRP prerequisites. +- `milestone-7-csp` (5319e7) — Milestone 7: Algebraic complexity / CSP. +- `milestone-8-llm` (5319e7) — Milestone 8: LLM readiness. +- `milestone-9-apps` (5319e7) — Milestone 9: Applications of continuous relations. +- `stdlib-bridge` (fbca04) — Bridges to the Agda standard library. +- `breaking-change` (d93f0b) — Breaking change to the public API. +- `good first issue` (7057ff) — Good for newcomers. +- `help-wanted` (0e8a16) — Community help wanted. +- `design-discussion` (c5def5) — Needs design discussion before implementation. +- `documentation` (0e8a16) — Documentation changes. + +--- + +## Milestones + +### Milestone 1 — Infrastructure health (BLOCKING) + +**Description**. Modernize the library's tooling, establish baseline project hygiene, and unblock every subsequent milestone. The library is currently pinned to Agda 2.6.2 / stdlib 1.7; it must move to Agda 2.8.0 / stdlib v2.3 with `--cubical-compatible` replacing `--without-K`. Standard community-health files (CONTRIBUTING, CHANGELOG, CODE_OF_CONDUCT, STYLE) must land. GitHub Actions CI must stand up. README and installation docs must be rewritten for the 2.0 line. + +**Exit criterion**. `make check` passes under GitHub Actions CI against Agda 2.8.0 / stdlib v2.3; CONTRIBUTING.md, docs/STYLE.md, ROADMAP.md, CHANGELOG.md are merged; README documents the new install path. + +--- + +### Milestone 2 — Consolidation + +**Description**. Resolve the parallel Base/Setoid fork by freezing `Base/` and moving it to `Legacy/Base/`. `Setoid/` is the canonical development tree for 2.0. Within Legacy, consolidate redundant `Base.Structures` implementations and remove abandoned experimental modules. Designate a single canonical proof of Birkhoff's HSP theorem while preserving the pedagogical demonstration variants. + +**Exit criterion**. `src/Base/` is in `src/Legacy/Base/` with a deprecation note; `Setoid.Varieties.HSP.Birkhoff` is designated canonical; ADR-001 (Setoid as canonical) is merged; no duplicate implementations of the same concept remain in `Setoid/` or `Legacy/Base/`. + +--- + +### Milestone 3 — Classical structures layer + +**Description**. Introduce the long-missing tower of classical algebraic structures as Σ-typed specific theories over the universal-algebra framework, with record-typed bundle views matching the stdlib `Algebra.Bundles` idiom. Each structure ships as a Signatures / Theories / Structures / Bundles / Small quintuple. Designed so that the underlying equivalence (Setoid in 2.0) can be mechanically substituted for a Cubical path type in 3.0. + +Phase 1: Magma, Semigroup, CommutativeSemigroup, Monoid, CommutativeMonoid, Group, AbelianGroup, Semilattice, Lattice. + +Phase 2: Ring, CommutativeRing, Field, Module, DistributiveLattice, BooleanAlgebra. + +**Exit criterion**. Phase 1 classical structures are implemented, documented, bridged to stdlib, and exercised by at least one worked example each (e.g. `(ℕ, +, 0)` as a CommutativeMonoid; `(ℤ, +, -, 0)` as an AbelianGroup). + +--- + +### Milestone 4 — Style and naming uniformity sweep + +**Description**. Apply `docs/STYLE.md` consistently across `Setoid/` and `Classical/`. Audit naming (one preferred name per concept; synonyms deprecated); audit notation (one canonical symbol table); audit module structure (one concept per module where feasible); ensure every user-facing definition has a prose comment block. + +**Exit criterion**. No undocumented public definitions remain in `Setoid/` or `Classical/`; no synonym pairs (e.g. `is-homomorphism` + `IsHom`) exist in the public API; the canonical symbol table in `docs/STYLE.md` matches the notation actually used in the library. + +--- + +### Milestone 5 — Cubical track (canonical long-term target) + +**Description**. Prepare the path for `Cubical/` to become the canonical development tree in version 3.0. Port `Algebra` to cubical Agda, prove the structure identity principle (SIP), prove equivalence of `≅` with path equality, and demonstrate end-to-end workflow by porting at least one classical structure (Monoid is the natural choice). + +**Exit criterion**. `Cubical/Algebras/Basic.agda` compiles; SIP is proven for the cubical Algebra record; Monoid has a working cubical port that is essentially a mechanical substitution from its Setoid analog; ADR-003 (Cubical as canonical target) is merged. + +--- + +### Milestone 6 — Toward the Finite Lattice Representation Problem + +**Description**. Build the specialized universal-algebraic infrastructure needed to tackle the Finite Lattice Representation Problem: "Does every finite lattice occur as the congruence lattice of a finite algebra?" Near-term prerequisites include `Con 𝑨` and `Sub 𝑨` as complete lattices, subdirect products, subdirectly irreducible algebras, and basic Maltsev conditions relevant to lattice representations. *Medium-term*. Jónsson's theorem, Day's theorem. Long-term (out of scope for 2.0): tame congruence theory, commutator theory, explicit representations of small lattices. + +**Exit criterion**. `Con 𝑨` is a complete lattice; subdirect products and subdirectly irreducible algebras are defined with basic properties proven; at least one Maltsev condition (congruence permutability via the Maltsev term characterization) is proven. + +--- + +### Milestone 7 — Algebraic complexity / CSP extensions (finite templates) + +**Description**. Extend the existing `Base.Complexity` / `Exercises.Complexity.FiniteCSP` work into a proper algebraic-complexity development of **finite-template** constraint satisfaction. This is a separate research program from Milestone 6 (the FLRP is about lattice representation theory; finite CSP is about the complexity of constraint satisfaction with a fixed finite template over the algebraic approach of Bulatov, Zhuk, Barto, and others). Candidate content includes polymorphism clones, the Jeavons Galois connection, Post's lattice, and a statement of the Bulatov–Zhuk algebraic dichotomy. The infinite-template / ω-categorical extension is covered separately under Milestone 9. + +**Exit criterion**. At least one substantial algebraic-CSP theorem is formalized (e.g. the Jeavons Galois connection for a fixed finite domain); polymorphism clones are available as a first-class type. + +--- + +### Milestone 8 — LLM readiness and corpus artifacts + +**Description**. Make the library maximally useful as a training and retrieval corpus for language models. Extract (theorem statement, proof term) pairs with metadata; publish as a Hugging Face dataset; explore agda-native-air integration; publish a short paper or blog post describing the corpus and its intended uses. + +**Exit criterion**. Initial corpus artifact is published with at least 500 (theorem, proof) pairs; a CI job regenerates the corpus on each release; a public-facing write-up describing the dataset is available. + +--- + +### Milestone 9 — Applications of continuous relations + +**Description**. Explore substantive mathematical applications of the `Continuous` relation API — the generalization of classical relations to arbitrary arity types, developed in `Base.Relations.Continuous` and carried forward into `Setoid/`. Three directions are in scope, each intrinsically interesting and independent of the FLRP and finite-CSP programs. M9-1 formalizes Scott-continuous relations on directed-complete partial orders (DCPOs), connecting to domain theory and Escardó's work on searchable sets in the constructive-mathematics tradition. M9-2 formalizes infinitary CSP over ω-categorical templates in the Bodirsky–Pinsker program, where relations of countably infinite arity arise naturally. M9-3 is exploratory rather than deliverable-oriented: a reading-and-writing investigation into whether coalgebraic bisimulation has an under-exploited angle at the intersection with universal algebra in the Birkhoff sense. + +**Exit criterion**. At least one of M9-1 or M9-2 produces a formalized non-trivial example accompanied by a short public write-up (blog post, arXiv note, or similar); M9-3 produces a design-discussion document summarizing what was learned from the reading, with a concrete verdict ("pursue" or "saturated") regardless of whether formalization work follows. + +--- + +### Milestone Dependencies + +```mermaid +graph TD + M1["M1 — Infrastructure"] + M2["M2 — Consolidation"] + M3["M3 — Classical structures"] + M4["M4 — Style sweep"] + M5["M5 — Cubical"] + M6["M6 — FLRP prerequisites"] + M7["M7 — CSP (finite templates)"] + M8["M8 — LLM corpus"] + M9["M9 — Continuous-relation apps"] + + M1 --> M2 + M1 --> M4 + M1 --> M5 + M2 --> M3 + M2 --> M7 + M2 --> M9 + M3 --> M5 + M3 --> M6 + M3 --> M7 + M3 --> M9 + M4 --> M8 + M7 -.-> M9 +``` + +--- + +## Issues + +Below, each issue is tagged with its milestone (**M1**, **M2**, etc.), suggested labels, and a full issue body ready for GitHub. Cross-milestone dependencies are noted in the body; see the Mermaid graph at the end of this file for a visual summary. + +--- +--- + +## Milestone 1 — Infrastructure health + +--- + +### Issue M1-1: Upgrade to Agda 2.8.0 and stdlib v2.3; replace `--without-K` with `--cubical-compatible` + +**Labels**: `milestone-1-infra`, `breaking-change` + +**Milestone**: 1 — Infrastructure health + +## Description + +The library is currently pinned to Agda 2.6.2 / stdlib 1.7. The Agda ecosystem has moved on: the current stable is Agda 2.8.0 (July 2025) and stdlib v2.3. `--without-K` has been superseded by `--cubical-compatible` since Agda 2.6.3. This issue tracks the full upgrade. Blocks essentially every other issue in this project. + +## Tasks + +- [ ] Update `agda-algebras.agda-lib` to `depend: standard-library-2.3` and document the minimum Agda version as 2.8.0. +- [ ] Replace every `{-# OPTIONS --without-K --exact-split --safe #-}` with `{-# OPTIONS --cubical-compatible --exact-split --safe #-}`. +- [ ] Fix any regressions from the flag change. +- [ ] Update import paths for anything that moved between stdlib 1.7 and 2.3 (expected hotspots: `Function.Bundles`, `Relation.Binary.*` renamings, `Data.*` reorganizations). +- [ ] Update CI config to test against Agda 2.8.0 / stdlib 2.3. +- [ ] Update `README.md` and `INSTALL.md` to reflect the new requirements. +- [ ] Update the Nix flake. + +## Acceptance criteria + +- [ ] Library type-checks under Agda 2.8.0 / stdlib v2.3. +- [ ] `make check` succeeds locally. +- [ ] No file still declares `--without-K`. +- [ ] Once 2.0 is stable, consider adding a CI job against Agda 2.9/dev to catch forward-compatibility issues early. + +--- + +### Issue M1-2: Add GitHub Actions CI to type-check the library + +**Labels**: `milestone-1-infra`, `good first issue` + +**Milestone**: 1 — Infrastructure health + +## Description + +The library has no CI. Contributors can break type-checking without maintainers noticing. Add a GitHub Actions workflow that type-checks the library on each push and pull request. Reference workflows: `agda-categories` and the stdlib itself both have well-maintained CI that can be adapted. + +## Tasks + +- [ ] Add `.github/workflows/ci.yml`. +- [ ] Install Agda at the pinned version (Agda 2.8.0; see M1-1). +- [ ] Install stdlib v2.3. +- [ ] Run `make check` (or equivalent) on every push to `main` and on PRs. +- [ ] Cache the Agda binary and `.agdai` files between runs. +- [ ] Display a CI badge in the README. + +## Acceptance criteria + +- [ ] CI runs green on `main`. +- [ ] CI triggers on every pull request. +- [ ] Average job time < 10 min after caching. +- [ ] README shows a green CI badge. + +--- + +### Issue M1-3: Add CONTRIBUTING.md, CHANGELOG.md, CODE_OF_CONDUCT.md + +**Labels**: `milestone-1-infra`, `documentation`, `good first issue` + +**Milestone**: 1 — Infrastructure health + +## Description + +Standard community-health files are missing. Drafts of CONTRIBUTING and STYLE exist from the 2.0 planning cycle and can be merged after review. + +## Tasks + +- [ ] Add `CONTRIBUTING.md` (draft from planning cycle). +- [ ] Add `CHANGELOG.md` seeded with the 2.0 milestone entry. +- [ ] Add `CODE_OF_CONDUCT.md` (Contributor Covenant 2.1). +- [ ] Add `.github/ISSUE_TEMPLATE/` with bug-report, feature-request, and design-discussion templates. +- [ ] Add `.github/PULL_REQUEST_TEMPLATE.md`. + +## Acceptance criteria + +- [ ] All four files exist at the repo root (or in `.github/`). +- [ ] GitHub recognizes the community-health files (green checkmarks on the "Insights → Community" page). + +--- + +### Issue M1-4: Adopt docs/STYLE.md as the project style guide + +**Labels**: `milestone-1-infra`, `documentation` + +**Milestone**: 1 — Infrastructure health + +## Description + +Create `docs/STYLE.md` documenting file format, module structure, naming conventions, notation, universe-polymorphism practices, record vs Σ guidance, proof style, and library-as-training-corpus considerations. A draft from the planning cycle is ready for review. Applying the style guide across `Setoid/` and `Classical/` is tracked in M4-1. + +## Tasks + +- [ ] Merge `docs/STYLE.md` (draft from planning cycle). +- [ ] Link `STYLE.md` from `README.md` and `CONTRIBUTING.md`. + +## Acceptance criteria + +- [ ] `docs/STYLE.md` is merged. +- [ ] Links from README and CONTRIBUTING work. + +--- + +### Issue M1-5: Rewrite README and Preface for the 2.0 release + +**Labels**: `milestone-1-infra`, `documentation` + +**Milestone**: 1 — Infrastructure health + +## Description + +The current `README.md` and `docs/lagda/Preface.lagda` are 1.x-era: wrong Agda versions, obsolete installation paths, pre-consolidation library structure. They need a rewrite aligned with the 2.0 release. Depends on M1-1 through M1-4 and M2-1. + +## Tasks + +- [ ] Pin Agda 2.8.0 / stdlib 2.3 in install instructions. +- [ ] Describe the Setoid-as-canonical structure and point to `Classical/`. +- [ ] Link `CONTRIBUTING.md`, `ROADMAP.md`, `docs/STYLE.md`. +- [ ] Concrete quickstart for new users (5-command install → `make check`). +- [ ] Add CI badge (from M1-2) and documentation site link. + +## Acceptance criteria + +- [ ] A reviewer can follow the README on a clean machine to a working `make check` without asking questions. +- [ ] All links resolve. +- [ ] No references to Agda 2.6.x or stdlib 1.x remain. + +--- + +### Issue M1-6: Establish docs/adr/ for Architecture Decision Records + +**Labels**: `milestone-1-infra`, `documentation`, `good first issue` + +**Milestone**: 1 — Infrastructure health + +## Description + +As the library evolves, design decisions (Setoid vs Base canonicality, record vs Σ for classical structures, Cubical track planning) should be recorded so future contributors understand the rationale. Use Michael Nygard's lightweight ADR format (one page per decision). + +## Tasks + +- [ ] Create `docs/adr/` directory. +- [ ] Add `docs/adr/README.md` explaining the ADR format. +- [ ] Add `docs/adr/000-template.md`. +- [ ] Seed with decisions ratified in 2.0: + - `001-setoid-as-canonical.md` (from M2-1); + - `002-classical-layer-design.md` (from M3-1); + - `003-cubical-canonical-target.md` (from M5-1). + +## Acceptance criteria + +- [ ] `docs/adr/` exists with README and template. +- [ ] All three seeded ADRs are drafted (full content can land with the associated implementation issues). + +--- + +### Milestone 1 Dependencies + +M1-5 is the integration node: the new README / Preface needs all the other M1 deliverables to exist before it can refer to them. M1-6 (docs/adr/) is structurally independent but is gated on M1-1 because it references the 2.0 release. + +```mermaid +graph TD + M1_1["M1-1: Agda 2.8 / stdlib 2.3"] + M1_2["M1-2: GitHub Actions CI"] + M1_3["M1-3: Community files"] + M1_4["M1-4: STYLE.md"] + M1_5["M1-5: README / Preface"] + M1_6["M1-6: docs/adr/"] + M1_1 --> M1_2 + M1_1 --> M1_3 + M1_1 --> M1_4 + M1_1 --> M1_6 + M1_2 --> M1_5 + M1_3 --> M1_5 + M1_4 --> M1_5 +``` + +--- +--- + +## Milestone 2 — Consolidation + +--- + +### Issue M2-1: Freeze Base/, adopt Setoid/ as canonical + +**Labels**: `milestone-2-consolidation`, `breaking-change` + +**Milestone**: 2 — Consolidation + +## Description + +The decision is ratified: `Setoid/` is the canonical development tree for 2.0; `Base/` is frozen and moved to `Legacy/Base/`. Rationale: `Setoid/` is fully constructive (no extensionality postulates); it matches the stdlib `Algebra.Bundles` idiom which simplifies bridges; maintaining two trees indefinitely doubles every theorem's cost; `Setoid/` already contains the definitive HSP proof. + +Note: `Base/` remains in the repo — frozen, not deleted — for posterity and as a reference. Parts may be ported back to `Setoid/` or `Cubical/` as needed. + +This is a breaking change for downstream users of `Base/`. Announce prominently in the 2.0 CHANGELOG. + +## Tasks + +- [ ] Move `src/Base/` → `src/Legacy/Base/`. +- [ ] Update `src/agda-algebras.agda` to re-export `Legacy.Base` with a deprecation note. +- [ ] Add `DEPRECATED.md` in `Legacy/Base/` explaining the status and pointing users to `Setoid/`. +- [ ] Write ADR `docs/adr/001-setoid-as-canonical.md`. +- [ ] Announce in CHANGELOG. + +## Acceptance criteria + +- [ ] `src/Base/` no longer exists at the old path. +- [ ] `src/Legacy/Base/` exists and type-checks. +- [ ] ADR-001 is merged. +- [ ] CHANGELOG entry documents the move prominently. + +--- + +### Issue M2-2: Consolidate parallel implementations within Legacy/Base/Structures + +**Labels**: `milestone-2-consolidation` + +**Milestone**: 2 — Consolidation + +## Description + +`Base.Structures.Basic` defines multi-sorted structures as records; `Base.Structures.Sigma.*` does the same thing as Σ-types. They are parallel implementations of the same concept, each with its own `Products`, `Congruences`, `Homs`, `Isos`. Since `Base/` is frozen (see M2-1), scope is limited to Legacy cleanup, but worth doing for clarity. + +## Tasks + +- [ ] Pick one formulation (record or Σ) as canonical within Legacy. +- [ ] Add conversion functions where they don't already exist. +- [ ] Update internal uses to the canonical form. +- [ ] Keep the non-canonical form under a distinct namespace with a deprecation note. + +## Acceptance criteria + +- [ ] `Legacy/Base/Structures/` has a single canonical implementation of each concept. +- [ ] The non-canonical namespace is clearly marked deprecated. + +--- + +### Issue M2-3: Remove Base.Structures.Graphs0 (unused experimental duplicate) + +**Labels**: `milestone-2-consolidation`, `good first issue` + +**Milestone**: 2 — Consolidation + +## Description + +`src/Base/Structures/Graphs0.agda` is not exported `public` from `Base/Structures.agda` and appears to be an abandoned experimental earlier version of `Base/Structures/Graphs.agda`. + +## Tasks + +- [ ] Investigate for any downstream dependency on `Graphs0`. +- [ ] If none, delete the file. +- [ ] If still referenced, rename to `Graphs.Alternative` with a comment explaining the distinction. + +## Acceptance criteria + +- [ ] `Graphs0` is either deleted or clearly renamed with documentation. +- [ ] Library still type-checks. + +--- + +### Issue M2-4: Designate a canonical HSP proof; consolidate the others + +**Labels**: `milestone-2-consolidation`, `documentation` + +**Milestone**: 2 — Consolidation + +## Description + +The library contains three proofs of Birkhoff's HSP theorem: + +1. `Base.Varieties.FreeAlgebras.Birkhoff` (original Base-tree proof). +2. `Setoid.Varieties.HSP.Birkhoff` (definitive setoid proof). +3. `Demos.HSP.Birkhoff` (self-contained pedagogical version for TYPES 2021). + +## Tasks + +- [ ] Designate `Setoid.Varieties.HSP.Birkhoff` as canonical. +- [ ] Keep `Demos.HSP` as the self-contained pedagogical presentation (it was created for TYPES 2021 and remains valuable as a teaching artifact). +- [ ] Move `Base.Varieties.FreeAlgebras.Birkhoff` into Legacy (implicit via M2-1, but cross-reference explicitly). +- [ ] Add cross-references among the three so a reader starting at any of them can find the canonical statement. +- [ ] Update paper citations in `docs/papers/`. + +## Acceptance criteria + +- [ ] `Setoid.Varieties.HSP.Birkhoff` is marked canonical in its module header. +- [ ] `Demos.HSP` contains a reference to the canonical version. +- [ ] The paper citation table is up to date. + +--- + +### Milestone 2 Dependencies + +M2-1 (freeze Base/) is the fork point: everything else in this milestone is internal cleanup within what becomes `Legacy/Base/`, and all three depend on the move happening first. M1-1 is shown dashed to indicate it's an upstream dependency from a different milestone. + +```mermaid +graph TD + M1_1["M1-1: Agda 2.8 / stdlib 2.3"]:::ext + M2_1["M2-1: Freeze Base"] + M2_2["M2-2: Consolidate Base.Structures"] + M2_3["M2-3: Remove Graphs0"] + M2_4["M2-4: Canonical HSP"] + M1_1 --> M2_1 + M2_1 --> M2_2 + M2_1 --> M2_3 + M2_1 --> M2_4 + classDef ext fill:#f0f0f0,stroke:#999,stroke-dasharray: 4 3,color:#555 +``` + +--- +--- + +## Milestone 3 — Classical structures layer + +--- + +### Issue M3-1: Introduce the Classical/ tree — Signatures, Theories, Structures, Bundles, Small + +**Labels**: `milestone-3-classical`, `design-discussion` + +**Milestone**: 3 — Classical structures layer + +## Description + +The library has no formalized classical algebraic structures despite this being a long-stated vision. This issue creates the scaffold; subsequent issues add specific structures. + +Ratified design decisions (to be recorded in `docs/adr/002-classical-layer.md`): + +1. Each classical structure `X` is Σ-typed at the core: `X α ρ = Σ[ 𝑨 ∈ Algebra 𝑆ₓ α ρ ] 𝑨 ⊨ Eₓ`. The mathematical reading "X *is* an algebra equipped with a proof it satisfies the X-theory" motivates Σ over record for classical structures. The core `Algebra` type stays a record. +2. A parallel record-typed "bundle view" in `Classical/Bundles/X` matches the stdlib `Algebra.Bundles` idiom for interop. +3. Built on `Setoid/` (not `Base/`). A helper `fromPropEq : Type α → ... → X α α` lets users build classical structures from propositional-equality-based definitions without explicit Setoid wrapping. +4. Designed for Cubical portability. Equations stated purely in terms of `Algebra.Domain`'s equivalence — never reaching for Setoid-specific features without a Cubical analog. When `Cubical/` becomes canonical in 3.0, the port should be mechanical. +5. Two levels of specificity per structure: polymorphic core (`Classical.Structures.X`) and level-fixed veneer (`Classical.Small.Structures.X`) for the common `ℓ₀` case. + +## Tasks + +- [ ] Create the directory skeleton: + + ``` + src/Classical/ + Classical.agda + Signatures/ + Theories/ + Structures/ + Bundles/ + Small/Structures/ + ``` + +- [ ] Add placeholder modules that type-check. +- [ ] Write `Classical.agda` that re-exports everything. +- [ ] Write `docs/adr/002-classical-layer.md` recording the design decisions. + +## Acceptance criteria + +- [ ] Scaffold type-checks. +- [ ] `Classical.agda` re-exports the empty scaffold cleanly. +- [ ] ADR-002 is merged. + +--- + +### Issue M3-2: Add Classical.Structures.Semigroup (pattern-setting first structure) + +**Labels**: `milestone-3-classical` + +**Milestone**: 3 — Classical structures layer + +## Description + +After the M3-1 scaffold lands, add Semigroup as the pattern-setting first non-trivial classical structure. Every subsequent classical structure will imitate this pattern, so getting it right is disproportionately important. + +## Tasks + +- [ ] `Classical/Signatures/Semigroup.agda`: one binary operation, `𝑆ₛ`. +- [ ] `Classical/Theories/Semigroup.agda`: associativity as the single equation in `Theory 𝑆ₛ`. +- [ ] `Classical/Structures/Semigroup.agda`: the Σ-typed definition `Semigroup α ρ = Σ[ 𝑨 ∈ Algebra 𝑆ₛ α ρ ] 𝑨 ⊨ Eₛ` with convenience projections. +- [ ] Basic lemmas: every semigroup is an `Algebra`; composition of semigroup morphisms is a semigroup morphism. +- [ ] `fromPropEq` helper for propositional-equality-based definitions. +- [ ] At least one worked example: `(ℕ, +)` as a `Semigroup`. +- [ ] `Classical/Bundles/Semigroup.agda` with stdlib bridge (see M3-3). +- [ ] `Classical/Small/Structures/Semigroup.agda` level-fixed veneer. + +## Acceptance criteria + +- [ ] All files type-check. +- [ ] The worked example `ℕ-semigroup` type-checks. +- [ ] The bridge to `Algebra.Bundles.Semigroup` round-trips on `ℕ`. +- [ ] Module header comment documents the pattern for future structures. + +--- + +### Issue M3-3: Bridges between Classical.Structures and Algebra.Bundles + +**Labels**: `milestone-3-classical`, `stdlib-bridge` + +**Milestone**: 3 — Classical structures layer + +## Description + +For each classical structure `X`, provide `Classical/Bundles/X.agda` with bidirectional conversion between the Σ-typed core and the stdlib's `Algebra.Bundles.X`. + +## Tasks + +Phase 1 (after M3-2): + +- [ ] Magma. +- [ ] Semigroup. +- [ ] CommutativeSemigroup. +- [ ] Monoid. +- [ ] CommutativeMonoid. +- [ ] Group. +- [ ] AbelianGroup. + +Phase 2: + +- [ ] Semilattice. +- [ ] Lattice (bridges to both `Algebra.Bundles.Lattice` and `Algebra.Lattice.Bundles.Lattice`). +- [ ] Semiring. +- [ ] Ring. +- [ ] CommutativeRing. + +## Acceptance criteria + +- [ ] Each bundle file proves round-trip properties where applicable. +- [ ] A stdlib concrete instance (e.g. stdlib's `ℕ-+-commutativeMonoid`) round-trips through the bridge. + +--- + +### Issue M3-4: Classical structures — Monoid, CommutativeMonoid, Group, AbelianGroup + +**Labels**: `milestone-3-classical`, `help-wanted` + +**Milestone**: 3 — Classical structures layer + +## Description + +Follow the pattern established in M3-2 to add the monoid-and-group family, with corresponding signatures, theories, bundle views, and level-fixed veneers. + +## Tasks + +- [ ] `Classical/Structures/Monoid.agda`. +- [ ] `Classical/Structures/CommutativeMonoid.agda`. +- [ ] `Classical/Structures/Group.agda`. +- [ ] `Classical/Structures/AbelianGroup.agda`. +- [ ] Corresponding signatures, theories, bundles (per M3-3), Small veneers. +- [ ] Worked examples: `(ℕ, +, 0)` as CommutativeMonoid; `(ℤ, +, 0, -)` as AbelianGroup. + +## Acceptance criteria + +- [ ] All four structures type-check and round-trip through their bundles. +- [ ] Worked examples type-check. + +--- + +### Issue M3-5: Classical.Semilattice and Classical.Lattice + +**Labels**: `milestone-3-classical`, `help-wanted` + +**Milestone**: 3 — Classical structures layer + +## Description + +Lattices are centrally important because `Con 𝑨` and `Sub 𝑨` are naturally lattices, and the Finite Lattice Representation Problem (M6) is stated in terms of lattices. + +## Tasks + +- [ ] `Classical/Signatures/Lattice.agda`: two binary operations (`∧`, `∨`) or one (meet), depending on formulation. +- [ ] `Classical/Theories/Lattice.agda`: associativity, commutativity, idempotence, absorption. +- [ ] `Classical/Structures/Semilattice.agda`. +- [ ] `Classical/Structures/Lattice.agda`. +- [ ] Bridge to `Algebra.Lattice.Bundles`. +- [ ] Prove equivalence of algebraic (meet-join) and order-theoretic formulations. + +## Acceptance criteria + +- [ ] Both structures type-check. +- [ ] The meet-join / order-theoretic equivalence theorem is proved. +- [ ] Bridge to stdlib round-trips on `𝟚` as a Boolean lattice. + +--- + +### Issue M3-6: Classical.Ring and Classical.CommutativeRing + +**Labels**: `milestone-3-classical`, `help-wanted` + +**Milestone**: 3 — Classical structures layer + +## Description + +Rings depend on AbelianGroup for the additive structure, so this issue comes after M3-4. + +## Tasks + +- [ ] `Classical/Signatures/Ring.agda`. +- [ ] `Classical/Theories/Ring.agda`. +- [ ] `Classical/Structures/Ring.agda`. +- [ ] `Classical/Structures/CommutativeRing.agda`. +- [ ] Bridge to stdlib. +- [ ] Worked example: `(ℤ, +, *, 0, 1, -)` as CommutativeRing. + +## Acceptance criteria + +- [ ] Both structures type-check. +- [ ] The worked example `ℤ-ring` type-checks. +- [ ] Bridge to stdlib `CommutativeRing` round-trips on `ℤ`. + +--- + +### Issue M3-7: Expand Examples/ with worked classical-structure instances + +**Labels**: `milestone-3-classical`, `documentation`, `good first issue`, `help-wanted` + +**Milestone**: 3 — Classical structures layer + +## Description + +The `Examples/` directory is thin. Add worked examples that exercise the Classical/ layer. + +## Tasks + +- [ ] `(ℕ, +, 0)` as a `CommutativeMonoid`, with HSP specialized to it. +- [ ] `(ℤ, +, 0, -)` as an `AbelianGroup`. +- [ ] `𝟚` with two operations as a `DistributiveLattice`. +- [ ] A small finite group (`ℤ/3ℤ`) with its congruence lattice computed. +- [ ] A finite Heyting algebra as a Lattice example. + +## Acceptance criteria + +- [ ] At least five new example files in `Examples/Classical/`. +- [ ] Each example type-checks and is documented in a prose header. + +--- + +### Milestone 3 Dependencies + +M3-2 (Semigroup) is the pattern-setter — the design choices made there propagate to every other structure. M3-4 (Monoid/Group) and M3-5 (Lattice) are the mid-level hubs; M3-6 (Ring) needs M3-4 because rings are abelian groups with extra structure, and M3-7 (Examples) aggregates from several of the structure issues. + +```mermaid +graph TD + M2_1["M2-1: Freeze Base"]:::ext + M3_1["M3-1: Classical/ scaffold"] + M3_2["M3-2: Semigroup (pattern-setting)"] + M3_3["M3-3: Stdlib bridges"] + M3_4["M3-4: Monoid / Group"] + M3_5["M3-5: Lattice"] + M3_6["M3-6: Ring"] + M3_7["M3-7: Examples"] + M2_1 --> M3_1 + M3_1 --> M3_2 + M3_2 --> M3_3 + M3_2 --> M3_4 + M3_3 --> M3_5 + M3_4 --> M3_5 + M3_4 --> M3_6 + M3_2 --> M3_7 + M3_4 --> M3_7 + M3_5 --> M3_7 + classDef ext fill:#f0f0f0,stroke:#999,stroke-dasharray: 4 3,color:#555 +``` + +--- +--- + +## Milestone 4 — Style and naming uniformity sweep + +--- + +### Issue M4-1: Style uniformity sweep across Setoid/ + +**Labels**: `milestone-4-style`, `documentation` + +**Milestone**: 4 — Style and naming uniformity sweep + +## Description + +Apply `docs/STYLE.md` across the `Setoid/` tree. This is a long-tail task that can be decomposed into per-submodule issues for parallel work. + +## Tasks + +- [ ] Audit naming: `IsHom` vs `is-homomorphism` vs `Hom` — pick one, deprecate others. +- [ ] Audit notation against the canonical symbol table in STYLE.md. +- [ ] Audit imports (tighten `using` clauses; remove unused). +- [ ] Ensure every public definition has a prose comment block. +- [ ] Rich comment headers on every module. + +## Acceptance criteria + +- [ ] No synonym pairs remain in the `Setoid/` public API. +- [ ] All notation in `Setoid/` matches the canonical table in STYLE.md. +- [ ] Every public definition in `Setoid/` has a docstring. + +--- + +### Issue M4-2: Docstring pass for all user-facing definitions + +**Labels**: `milestone-4-style`, `documentation`, `help-wanted` + +**Milestone**: 4 — Style and naming uniformity sweep + +## Description + +Every record, type family, and top-level function in the public API should have a prose comment block explaining what it is, when to use it, and cross-references to related definitions. Long-tail task; pursue in small per-module PRs. + +## Tasks + +- [ ] Walk every public module in `Setoid/` and add missing docstrings. +- [ ] Walk every public module in `Classical/` and add missing docstrings. +- [ ] Enforce via a linter or review checklist. + +## Acceptance criteria + +- [ ] `grep`-based audit finds zero public definitions without a preceding comment block. + +--- + +### Issue M4-3: Design discussion — scope of 𝓞 and 𝓥 universe variables + +**Labels**: `milestone-4-style`, `design-discussion`, `good first issue` + +**Milestone**: 4 — Style and naming uniformity sweep + +## Description + +`Overture.Signatures` declares `variable 𝓞 𝓥 : Level` without `private`. They leak through every downstream module, which is convenient but can be confusing for new contributors shadowing the names. + +## Tasks + +- [ ] Write up the three options in an ADR or design-discussion issue: + 1. Keep current behavior; document clearly. + 2. Make them `private` in `Overture.Signatures`; downstream modules re-declare. + 3. Move to a dedicated `Overture.UniverseLevels` module imported explicitly. +- [ ] Collect input; pick one. +- [ ] Document the decision in STYLE.md. +- [ ] Apply consistently. + +## Acceptance criteria + +- [ ] Decision is recorded (ADR or STYLE.md section). +- [ ] `𝓞` and `𝓥` are handled uniformly across the library. + +--- +--- + +## Milestone 5 — Cubical track + +--- + +### Issue M5-1: Cubical track — Cubical/Algebras/Basic with SIP and Monoid port + +**Labels**: `milestone-5-cubical` + +**Milestone**: 5 — Cubical track (canonical long-term target) + +## Description + +Cubical Agda is the canonical long-term target for this library. This issue establishes the path: port the core algebra types, prove the structure identity principle (SIP), and demonstrate end-to-end workflow by porting Monoid from the Setoid-based Classical layer to a Cubical counterpart. The ultimate goal is for Cubical to become the default development track in version 3.0, with `Setoid/` moving to Legacy. + +Design implication for M3: the Classical layer must be designed so that the Setoid-to-Cubical port is mechanical — equations stated purely in terms of the `Algebra` record's Domain equivalence, no Setoid-specific gadgets in the definitions of classical structures themselves. + +## Tasks + +- [ ] `Cubical/Algebras/Basic.agda`: cubical counterpart of `Setoid.Algebras.Basic`. Carrier is a Type; equality is the path type. +- [ ] `Cubical/Algebras/SIP.agda`: structure identity principle. Port or adapt from the `cubical` or `1Lab` library. +- [ ] Prove: `≅` as defined for Cubical algebras is equivalent to path equality (the central "transport does what we want" result). +- [ ] End-to-end port: take `Classical/Structures/Monoid.agda` from the Setoid-based version (post M3-4) and produce the Cubical analog. Verify that equations transport by substitution alone. +- [ ] Write `docs/adr/003-cubical-canonical-target.md` explicitly planning the 3.0 transition and the criteria for promoting Cubical from experimental to canonical. + +## Acceptance criteria + +- [ ] `Cubical/Algebras/Basic.agda` and `SIP.agda` compile under `--cubical`. +- [ ] The `≅`-is-path theorem is proved. +- [ ] `Cubical/Classical/Monoid.agda` compiles and is substitutionally derived from its Setoid analog. +- [ ] ADR-003 is merged. + +--- +--- + +## Milestone 6 — Toward the Finite Lattice Representation Problem + +--- + +### Issue M6-1: Con(A) as a complete lattice + +**Labels**: `milestone-6-flrp` + +**Milestone**: 6 — Toward the Finite Lattice Representation Problem + +## Description + +The current `Setoid.Algebras.Congruences` defines congruences but does not organize them as a lattice. For the FLRP, commutator theory, and subdirect product theorems, `Con 𝑨` as a complete lattice is foundational infrastructure. Likely requires a congruence-generation theorem as a subsidiary result. + +## Tasks + +- [ ] Define `Con 𝑨` as a type (may exist already; promote to a first-class lattice object). +- [ ] Define the partial order `_≤_` (containment). +- [ ] Define meet: `θ ∧ φ = θ ∩ φ`. +- [ ] Define join: `θ ∨ φ = Cg(θ ∪ φ)` (congruence generated by union). +- [ ] `Con-Lattice : (𝑨 : Algebra α ρ) → Lattice _ _`. +- [ ] `Con-CompleteLattice` with infinite meets and joins. +- [ ] Zero and total congruences as `⊥` and `⊤`. +- [ ] Subsidiary: congruence-generation theorem. + +## Acceptance criteria + +- [ ] `Con-Lattice 𝑨` type-checks and satisfies the Lattice axioms. +- [ ] Infinite meets and joins are proved. +- [ ] At least one small worked example (e.g. `Con` of a 2-element algebra). + +--- + +### Issue M6-2: Subdirect products and subdirectly irreducible algebras + +**Labels**: `milestone-6-flrp` + +**Milestone**: 6 — Toward the Finite Lattice Representation Problem + +## Description + +Subdirect products and subdirect irreducibility are foundational for both the FLRP and for general universal-algebraic theorems (e.g. Birkhoff's subdirect product theorem). + +## Tasks + +- [ ] `SubdirectProduct : (𝒜 : I → Algebra α ρ) → Algebra _ _` — embeds into `⨅ 𝒜` with each projection surjective. +- [ ] `IsSubdirectlyIrreducible : Algebra α ρ → Type _`. +- [ ] Birkhoff's subdirect product theorem: every algebra is a subdirect product of SI algebras. +- [ ] SI characterization via monolithic congruences. + +## Acceptance criteria + +- [ ] Subdirect product construction type-checks. +- [ ] Birkhoff's subdirect product theorem is proved. +- [ ] SI characterization is proved. + +--- + +### Issue M6-3: Basic Maltsev conditions (CD, CM, CP) + +**Labels**: `milestone-6-flrp`, `design-discussion` + +**Milestone**: 6 — Toward the Finite Lattice Representation Problem + +## Description + +Maltsev conditions characterize varieties by the existence of terms with specific properties. The three most basic are congruence distributivity (CD), congruence modularity (CM), and congruence permutability (CP). For the FLRP, congruence modularity is particularly relevant because modular congruence lattices are a natural testing ground for representation questions. + +Design discussion: how to encode Maltsev conditions uniformly? Options include (a) a record bundling a term and its identities; (b) an inductive type of schemes. Lift from Taylor 1977 where possible. + +## Tasks + +- [ ] `HasMaltsevTerm : Variety → Term → Type`. +- [ ] Specific Maltsev terms: Jónsson terms (CD), Day terms (CM), Maltsev operation `p(x,y,y) = x = p(y,y,x)` (CP). +- [ ] Jónsson's theorem: a variety is CD iff Jónsson terms exist. +- [ ] CP iff a Maltsev term exists. +- [ ] Day's theorem for CM. + +## Acceptance criteria + +- [ ] At least CP's Maltsev-term characterization is proved. +- [ ] Jónsson's theorem and Day's theorem are either proved or have a clear stub indicating what remains. + +--- + +### Milestone 6 Dependencies + +M6-1 (Con(A) as a lattice) is the foundation: both subdirect products and Maltsev conditions need congruences-as-a-lattice to be phrasable in the form the classical proofs use. + +```mermaid +graph TD + M3_5["M3-5: Lattice"]:::ext + M6_1["M6-1: Con(A) lattice"] + M6_2["M6-2: Subdirect products"] + M6_3["M6-3: Maltsev conditions"] + M3_5 --> M6_1 + M6_1 --> M6_2 + M6_1 --> M6_3 + classDef ext fill:#f0f0f0,stroke:#999,stroke-dasharray: 4 3,color:#555 +``` + +--- +--- + +## Milestone 7 — Algebraic complexity / CSP extensions (finite templates) + +--- + +### Issue M7-1: Extend Complexity module beyond Basic and CSP + +**Labels**: `milestone-7-csp`, `help-wanted`, `design-discussion` + +**Milestone**: 7 — Algebraic complexity / CSP extensions (finite templates) + +## Description + +The current `Base.Complexity` module has only two submodules (`Basic` and `CSP`). The CSP module is little more than a bare definition with no theorems. This is a separate research track from the FLRP (M6): the FLRP is about which lattices arise as congruence lattices of finite algebras, while finite-template algebraic CSP is about the complexity of constraint satisfaction problems as a function of the polymorphism clone of the underlying finite relational structure. Both use universal algebra, but they are different questions. Infinite-template extensions (ω-categorical, Bodirsky–Pinsker) are covered separately under M9-2. + +This issue is research-flavored and best decomposed after discussion. + +## Tasks + +Candidate content, to be prioritized: + +- [ ] Polymorphism clones: `Pol(A, Γ)` as a first-class type. +- [ ] The Jeavons Galois connection between invariant relations and polymorphism clones. +- [ ] Post's lattice (for Boolean clones). +- [ ] Specific CSP tractability classes as worked examples (Horn-SAT, 2-SAT, linear systems over finite fields). +- [ ] Statement (not necessarily proof) of the Bulatov–Zhuk algebraic dichotomy. + +## Acceptance criteria + +- [ ] Polymorphism clones available as a type with basic operations. +- [ ] Jeavons Galois connection is proved for a fixed finite domain, OR a clear research-plan issue is filed continuing the work. + +--- +--- + +## Milestone 8 — LLM readiness and corpus artifacts + +--- + +### Issue M8-1: Publish (theorem, proof) corpus for LLM training + +**Labels**: `milestone-8-llm`, `documentation` + +**Milestone**: 8 — LLM readiness and corpus artifacts + +## Description + +Once `Setoid/` and `Classical/` are stable post-M4, publish a training and retrieval corpus for language models. + +## Tasks + +- [ ] Design a schema for corpus records: module path, theorem statement, proof term, dependencies, prose summary, keywords. +- [ ] Implement an extractor that walks the library and emits records. +- [ ] Publish as a Hugging Face dataset. +- [ ] Add a CI job that regenerates the corpus on each release. +- [ ] Write a short paper or blog post describing the dataset. + +## Acceptance criteria + +- [ ] Dataset published with ≥ 500 (theorem, proof) records. +- [ ] CI regenerates on release. +- [ ] Write-up is public. + +--- + +### Issue M8-2: Explore integration with agda-native-air + +**Labels**: `milestone-8-llm`, `design-discussion` + +**Milestone**: 8 — LLM readiness and corpus artifacts + +## Description + +agda-native-air (the developer's parallel project on AI-assisted formal proof) is a natural consumer of the agda-algebras corpus. This issue tracks the integration. Exploratory; low-priority until agda-native-air stabilizes. + +## Tasks + +- [ ] Document what API / metadata / annotations agda-native-air needs from agda-algebras. +- [ ] Identify any agda-algebras design choices that help or hinder agda-native-air consumption. +- [ ] Write an integration report. + +## Acceptance criteria + +- [ ] Integration report exists in `docs/integration-agda-native-air.md`. +- [ ] Any design changes required are filed as separate issues. + +--- +--- + +## Milestone 9 — Applications of continuous relations + +--- + +### Issue M9-1: Scott-continuous relations on DCPOs via the Continuous API + +**Labels**: `milestone-9-apps`, `design-discussion` + +**Milestone**: 9 — Applications of continuous relations + +## Description + +The `Base.Relations.Continuous` formalization generalizes classical relations: the arity is an arbitrary type rather than a natural number, and compatibility with an operation is stated pointwise over that arity. That shape turns out to be the right one for a notion with a distinguished mathematical pedigree: **Scott-continuous relations on directed-complete partial orders (DCPOs)**. + +A relation `R ⊆ X × Y` between DCPOs is *Scott-continuous* when, for every directed family `{(xᵢ, yᵢ)}ᵢ∈I` in `R`, the supremum `(⊔ xᵢ, ⊔ yᵢ)` is again in `R`. This is a statement about arbitrary-arity suprema — the index set `I` is genuinely arbitrary — and factors through the continuous-relation API naturally. + +The broader context is *domain theory* in the Scott sense, which underlies the denotational semantics of typed lambda calculi, topologically-enriched model theory and partial-function spaces, and constructive analysis via Escardó's work on exhaustively searchable sets. The Escardó connection is worth flagging: his LICS 2007 result "Infinite sets that admit fast exhaustive search" characterizes searchable sets via a topological continuity condition on their decision procedures, and provides a computability-flavored reason to care about Scott-continuous relations on specific DCPOs such as the Cantor space. + +## Tasks + +- [ ] `Classical/Order/DCPO.agda` (or `Setoid/Order/DCPO.agda` if it will be adapted for Cubical later): DCPO as a record bundle — a poset with directed suprema. +- [ ] `Classical/Order/ScottContinuous.agda`: a `ScottContinuous` predicate on pairs of a `Continuous` relation and a DCPO structure on its carriers. +- [ ] Basic closure properties: Scott-continuous relations are closed under composition, intersection, and directed unions of Scott-continuous families. +- [ ] At least one non-trivial example: the graph of a Scott-continuous function is Scott-continuous as a relation; conversely, a single-valued Scott-continuous relation is the graph of a Scott-continuous function. +- [ ] Optional stretch goal: a path to Escardó's characterization of searchable sets, formalized as far as tractable. If `TypeTopology` is the cleanest source, import from there rather than re-derive. + +## Acceptance criteria + +- [ ] DCPO record and ScottContinuous predicate type-check. +- [ ] The graph-of-continuous-function ↔ single-valued-continuous-relation characterization is proved. +- [ ] At least one closure property (composition or directed union) is proved. +- [ ] A short public write-up (blog post or arXiv note) connects the formalization to domain theory. + +## Why this belongs in agda-algebras + +Universal algebra and order theory have a long shared history: every algebra with a compatible order gives an ordered algebra; Birkhoff's theorem has order-enriched variants; congruence lattices (the central FLRP object) are themselves DCPOs. Housing the Scott-continuous-relation material in agda-algebras keeps related abstractions together and gives them a shared foundation in the continuous-relation API. + +## Relation to other milestones + +- Depends on: M2 (Setoid/ canonical), M3-1 (Classical/ scaffold). +- Independent of: M6 (FLRP), M7 (finite-template CSP). +- Informs: M5 (Cubical port) — Scott-continuous relations have a natural cubical-friendly statement using paths. + +--- + +### Issue M9-2: Infinitary CSP over ω-categorical templates via continuous relations + +**Labels**: `milestone-9-apps`, `design-discussion`, `help-wanted` + +**Milestone**: 9 — Applications of continuous relations + +## Description + +The CSP module under M7 targets finite-template CSPs with finite-arity relations. A rich body of contemporary work — most visibly the Bodirsky–Pinsker program — studies CSPs whose template is an ω-categorical structure with a countable domain and potentially infinitary relations. The central tools there include: + +- **Polymorphism clones of ω-categorical structures**, which control CSP complexity via a topological-dynamical analog of the finite-domain algebraic approach. +- **Canonical functions** in a polymorphism clone: functions whose behavior on all "types" is determined by their behavior on finitely many representatives. See Michael Pinsker's recent work (e.g. [arXiv:2502.06621](https://arxiv.org/abs/2502.06621)). +- **Birkhoff-style theorems for topological clones**, generalizing the classical HSP theorem from varieties to polymorphism clones with a topological structure. + +The `Base.Relations.Continuous` formalization in agda-algebras happens to be exactly the right abstraction for this setting. An ω-categorical template has relations whose natural arity is a countable index set; a continuous-in-our-sense relation drops in unchanged. + +This is a design-discussion issue, not an implementation plan. + +## Tasks + +- [ ] Which definitions port over unchanged from `Setoid/Complexity/CSP` (post M7-1), and which need generalization? +- [ ] What is the minimal API for a "template" in the ω-categorical setting (base structure, automorphism group, topological structure)? +- [ ] Is there a natural "Birkhoff for topological clones" result whose formalization is tractable with current tooling? Bodirsky, Pinsker, and collaborators have published multiple variants; select the one with the cleanest statement. +- [ ] Can a small but genuinely infinitary example be formalized end-to-end — e.g. the template `(ℚ, <)` for temporal constraint satisfaction, which is ω-categorical and has a well-understood polymorphism clone? + +## Deliverables (if pursued) + +- [ ] A new subtree `Classical/Complexity/Infinitary/` (or similar) with the generalized definitions. +- [ ] A single formalized example (suggestion: the template `(ℚ, <)`). +- [ ] A short write-up — blog post or arXiv note — connecting the formalization to the Bodirsky–Pinsker literature. + +## Non-goals + +- Formalizing the full Bodirsky–Pinsker dichotomy conjecture. +- Matching the generality of any existing implementation. +- Engaging with decidability or tractability results (those are downstream; the first task is having the definitions). + +## Relation to other milestones + +- Depends on: M2 (Setoid/ canonical), M3-1 (Classical/ scaffold). +- Benefits from: M7-1 (finite-template CSP infrastructure — polymorphism clones, Galois connection machinery). +- Independent of: M5 (Cubical), M6 (FLRP). + +--- + +### Issue M9-3: Exploratory — coalgebraic bisimulation as a continuous relation + +**Labels**: `milestone-9-apps`, `design-discussion`, `help-wanted` + +**Milestone**: 9 — Applications of continuous relations + +## Description + +An exploratory issue, not a deliverable. The goal is to read, think, and write up findings about whether the `Continuous` relation API has novel applications in coalgebra, particularly for bisimulation of non-finitary coalgebras. + +A bisimulation between F-coalgebras `(c : A → F A, d : B → F B)` is classically a relation `R ⊆ A × B` that lifts along `F`: if `(a, b) ∈ R` then there is a witness `(F R) (c a) (d b)`. When `F` is a finitary polynomial functor (e.g. finite-branching trees), `R` is naturally a finite-arity relation. When `F` is continuous — for example, the stream functor `F X = X × A`, or the unbounded-branching tree functor `F X = X ^ ℕ` — the natural witness type for a bisimilarity step is an arbitrary-arity relation. This is where the `Continuous` API might fit. + +The intersection of coalgebra and classical universal algebra has many smart people (Rutten, Jacobs, Kurz, Adámek, Pattinson, et al.), but most of that work targets theoretical-CS applications (automata, regular languages, process calculi). It is much less developed on the universal-algebra-in-the-Birkhoff-sense side. It is plausible that low-hanging fruit remains at the intersection, but finding it requires sustained reading, not speculation. + +Progress on this issue is measured in paragraphs written, not in type-checked Agda. + +## Tasks + +- [ ] Read Rutten, "Universal coalgebra: a theory of systems," TCS 2000 (the standard introduction). +- [ ] Read one or two recent survey articles on coalgebraic bisimulation for continuous functors. +- [ ] Write up (in `docs/exploration/coalgebra.md`) what the natural coalgebra-with-continuous-arity examples look like, and whether the `Continuous` API fits them without modification. +- [ ] Identify at least one concrete formalization candidate, even if small (e.g. a bisimulation characterization of stream equality using the `Continuous` API). If no such candidate emerges, document why. +- [ ] Optional: formalize the candidate, or file a follow-up M9-3a issue. + +## Acceptance criteria + +- [ ] `docs/exploration/coalgebra.md` exists and is at least 2000 words. +- [ ] The document contains a concrete verdict: either "there is a formalization project worth pursuing" (in which case a follow-up issue is filed) or "the area is saturated / the fit is not natural" (in which case this issue is closed). + +## Non-goals + +- Producing a polished, publishable result. This is scoping work. +- Committing to a specific subarea of coalgebra. The reading should be broad enough to spot the low-hanging fruit, whatever it turns out to be. + +## Relation to other milestones + +- Completely independent of every other milestone. This is a long-tail exploratory investigation. + +--- + +### Milestone 9 Dependencies + +M9-1 and M9-2 depend on M2 (Setoid/ canonical) and M3-1 (Classical/ scaffold). M9-2 additionally benefits from M7-1's CSP infrastructure but does not strictly require it — the infinitary definitions can be developed in parallel and harmonized later. M9-3 is independent of every other milestone. + +```mermaid +graph TD + M2_1["M2-1: Freeze Base"]:::ext + M3_1["M3-1: Classical/ scaffold"]:::ext + M7_1["M7-1: Finite CSP"]:::ext + M9_1["M9-1: Scott-continuous relations"] + M9_2["M9-2: Infinitary CSP"] + M9_3["M9-3: Coalgebra exploration"] + M2_1 --> M9_1 + M2_1 --> M9_2 + M3_1 --> M9_1 + M3_1 --> M9_2 + M7_1 -.-> M9_2 + classDef ext fill:#f0f0f0,stroke:#999,stroke-dasharray: 4 3,color:#555 +``` + +--- +--- + +## Summary: Issue Index by Milestone + +### M1 — Infrastructure health (6 issues) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|-------------------------------------| +| M1-1 | Upgrade to Agda 2.8.0 / stdlib 2.3 | milestone-1-infra, breaking-change | +| M1-2 | Add GitHub Actions CI | milestone-1-infra, good first issue | +| M1-3 | Add CONTRIBUTING, CHANGELOG, CoC | milestone-1-infra, documentation | +| M1-4 | Adopt docs/STYLE.md | milestone-1-infra, documentation | +| M1-5 | Rewrite README and Preface | milestone-1-infra, documentation | +| M1-6 | Establish docs/adr/ | milestone-1-infra, documentation | + +### M2 — Consolidation (4 issues) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|----------------------------------------------| +| M2-1 | Freeze Base/, adopt Setoid/ as canonical | milestone-2-consolidation, breaking-change | +| M2-2 | Consolidate Base.Structures implementations | milestone-2-consolidation | +| M2-3 | Remove Base.Structures.Graphs0 | milestone-2-consolidation, good first issue | +| M2-4 | Designate canonical HSP proof | milestone-2-consolidation, documentation | + +### M3 — Classical structures layer (7 issues) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|-------------------------------------------------| +| M3-1 | Classical/ tree scaffold | milestone-3-classical, design-discussion | +| M3-2 | Classical.Semigroup (pattern-setting) | milestone-3-classical | +| M3-3 | Stdlib bundle bridges | milestone-3-classical, stdlib-bridge | +| M3-4 | Monoid, CommutativeMonoid, Group, AbelianGroup | milestone-3-classical, help-wanted | +| M3-5 | Semilattice, Lattice | milestone-3-classical, help-wanted | +| M3-6 | Ring, CommutativeRing | milestone-3-classical, help-wanted | +| M3-7 | Examples/ expansion | milestone-3-classical, documentation | + +### M4 — Style and naming uniformity (3 issues) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|--------------------------------------------------| +| M4-1 | Style sweep across Setoid/ | milestone-4-style, documentation | +| M4-2 | Docstring pass | milestone-4-style, documentation, help-wanted | +| M4-3 | Scope of 𝓞 and 𝓥 | milestone-4-style, design-discussion | + +### M5 — Cubical track (1 issue) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|-----------------------| +| M5-1 | Cubical/Algebras/Basic + SIP + Monoid port | milestone-5-cubical | + +### M6 — FLRP prerequisites (3 issues) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|-----------------------------------------------| +| M6-1 | Con(A) as complete lattice | milestone-6-flrp | +| M6-2 | Subdirect products; SI algebras | milestone-6-flrp | +| M6-3 | Basic Maltsev conditions | milestone-6-flrp, design-discussion | + +### M7 — Algebraic complexity / CSP, finite templates (1 issue) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|---------------------------------------------------------------------| +| M7-1 | Extend Complexity / CSP module | milestone-7-csp, help-wanted, design-discussion | + +### M8 — LLM readiness (2 issues) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|-------------------------------------------| +| M8-1 | Publish (theorem, proof) corpus | milestone-8-llm, documentation | +| M8-2 | Explore agda-native-air integration | milestone-8-llm, design-discussion | + +### M9 — Applications of continuous relations (3 issues) + +| ID | Title | Labels | +|------|-----------------------------------------------------------|---------------------------------------------------------| +| M9-1 | Scott-continuous relations on DCPOs | milestone-9-apps, design-discussion | +| M9-2 | Infinitary CSP over ω-categorical templates | milestone-9-apps, design-discussion, help-wanted | +| M9-3 | Exploratory — coalgebraic bisimulation | milestone-9-apps, design-discussion, help-wanted | + +**Total: 30 issues across 9 milestones.** + +--- + +## Dependency Graph (Mermaid) + +```mermaid +graph TD + subgraph "M1 — Infrastructure" + M1_1["M1-1: Agda 2.8 / stdlib 2.3"] + M1_2["M1-2: GitHub Actions CI"] + M1_3["M1-3: Community files"] + M1_4["M1-4: STYLE.md"] + M1_5["M1-5: README / Preface"] + M1_6["M1-6: docs/adr/"] + end + subgraph "M2 — Consolidation" + M2_1["M2-1: Freeze Base"] + M2_2["M2-2: Consolidate Base.Structures"] + M2_3["M2-3: Remove Graphs0"] + M2_4["M2-4: Canonical HSP"] + end + subgraph "M3 — Classical structures" + M3_1["M3-1: Classical/ scaffold"] + M3_2["M3-2: Semigroup"] + M3_3["M3-3: Stdlib bridges"] + M3_4["M3-4: Monoid / Group"] + M3_5["M3-5: Lattice"] + M3_6["M3-6: Ring"] + M3_7["M3-7: Examples"] + end + subgraph "M4 — Style sweep" + M4_1["M4-1: Style audit"] + M4_2["M4-2: Docstrings"] + M4_3["M4-3: 𝓞/𝓥 scope"] + end + subgraph "M5 — Cubical" + M5_1["M5-1: Cubical Algebra + SIP + Monoid"] + end + subgraph "M6 — FLRP" + M6_1["M6-1: Con(A) lattice"] + M6_2["M6-2: Subdirect products"] + M6_3["M6-3: Maltsev conditions"] + end + subgraph "M7 — CSP (finite)" + M7_1["M7-1: Complexity / CSP"] + end + subgraph "M8 — LLM corpus" + M8_1["M8-1: Corpus artifact"] + M8_2["M8-2: agda-native-air"] + end + subgraph "M9 — Continuous-relation apps" + M9_1["M9-1: Scott-continuous relations"] + M9_2["M9-2: Infinitary CSP"] + M9_3["M9-3: Coalgebra exploration"] + end + + %% M1 internal + M1_1 --> M1_2 + M1_1 --> M1_3 + M1_1 --> M1_4 + M1_1 --> M1_6 + M1_1 --> M1_5 + M1_2 --> M1_5 + M1_3 --> M1_5 + M1_4 --> M1_5 + + %% M2 depends on M1 + M1_1 --> M2_1 + M2_1 --> M2_2 + M2_1 --> M2_3 + M2_1 --> M2_4 + M2_1 --> M1_5 + + %% M3 depends on M2 + M2_1 --> M3_1 + M3_1 --> M3_2 + M3_2 --> M3_3 + M3_2 --> M3_4 + M3_3 --> M3_5 + M3_4 --> M3_5 + M3_4 --> M3_6 + M3_2 --> M3_7 + M3_4 --> M3_7 + M3_5 --> M3_7 + + %% M4 depends on M1-4 + M1_4 --> M4_1 + M1_4 --> M4_2 + M1_4 --> M4_3 + + %% M5 depends on M1 and M3-4 + M1_1 --> M5_1 + M3_4 --> M5_1 + + %% M6 depends on M3-5 + M3_5 --> M6_1 + M6_1 --> M6_2 + M6_1 --> M6_3 + + %% M7 depends on M2-1 and M3-5 + M2_1 --> M7_1 + M3_5 --> M7_1 + + %% M8 depends on M4 + M4_1 --> M8_1 + M4_2 --> M8_1 + M8_1 --> M8_2 + + %% M9 depends on M2-1 and M3-1; M9-2 benefits from M7-1 + M2_1 --> M9_1 + M2_1 --> M9_2 + M3_1 --> M9_1 + M3_1 --> M9_2 + M7_1 -.-> M9_2 +``` + +--- + +## How to Create This Project on GitHub + +Use the companion script `gh_project_populate.py` (patched as described in the project planning notes to read labels from the `## Labels` section above). + +### Prerequisites + +- Python 3.8+. +- `gh` CLI installed and authenticated. +- The `ualib/agda-algebras` repo must already exist. + +### Quick start + +```zsh +# 1. Dry run — see what would be created: +python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --dry-run + +# 2. Create everything (will prompt for confirmation): +python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras + +# 3. Or create in stages: +python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --labels-only +python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --milestones-only +python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only + +# 4. Resume if interrupted (e.g. start from M3-2): +python3 scripts/python/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only --start-from M3-2 +``` + +### Notes + +- The patched `_parse_labels` reads from the `## Labels` section of this file. See the companion patch file for the small diff. +- Labels and milestones are idempotent — re-running skips existing ones. +- Issue titles are prefixed with `[M1-1]`, `[M2-3]`, etc. for easy identification and ordering. +- A 1.5-second delay between API calls avoids GitHub rate limiting (adjustable with `--delay`). + diff --git a/doc/INSTALL_AGDA.md b/docs/INSTALL_AGDA.md similarity index 93% rename from doc/INSTALL_AGDA.md rename to docs/INSTALL_AGDA.md index 87dde2c7..5515dd65 100644 --- a/doc/INSTALL_AGDA.md +++ b/docs/INSTALL_AGDA.md @@ -1,3 +1,15 @@ +> ⚠️ **DEPRECATED.** This document is kept for historical reference only. +> +> It targets Agda 2.6.1, which is several major releases out of date; the +> `cabal sandbox` workflow it describes was removed from Cabal in 2018; +> the `~/.agda/` path it uses has been superseded by `~/.config/agda/`; +> and the `agda-mode` executable has been replaced by `agda --emacs-mode` +> as of Agda 2.8.0. +> +> **For current installation instructions, see [INSTALL.md](./INSTALL.md).** +> +> This file will be removed in a future release. + Installation of Agda and Emacs ============================== diff --git a/doc/Notes/cc-by.pdf b/docs/Notes/cc-by.pdf similarity index 100% rename from doc/Notes/cc-by.pdf rename to docs/Notes/cc-by.pdf diff --git a/doc/Notes/designspace.tex b/docs/Notes/designspace.tex similarity index 100% rename from doc/Notes/designspace.tex rename to docs/Notes/designspace.tex diff --git a/doc/Notes/lipics-logo-bw.pdf b/docs/Notes/lipics-logo-bw.pdf similarity index 100% rename from doc/Notes/lipics-logo-bw.pdf rename to docs/Notes/lipics-logo-bw.pdf diff --git a/doc/Notes/lipics-v2021.cls b/docs/Notes/lipics-v2021.cls similarity index 100% rename from doc/Notes/lipics-v2021.cls rename to docs/Notes/lipics-v2021.cls diff --git a/doc/Notes/orcid.pdf b/docs/Notes/orcid.pdf similarity index 100% rename from doc/Notes/orcid.pdf rename to docs/Notes/orcid.pdf diff --git a/doc/emacs/.emacs b/docs/emacs/.emacs similarity index 100% rename from doc/emacs/.emacs rename to docs/emacs/.emacs diff --git a/doc/emacs/.spacemacs b/docs/emacs/.spacemacs similarity index 100% rename from doc/emacs/.spacemacs rename to docs/emacs/.spacemacs diff --git a/doc/emacs/README.md b/docs/emacs/README.md similarity index 100% rename from doc/emacs/README.md rename to docs/emacs/README.md diff --git a/doc/emacs/agdamacs b/docs/emacs/agdamacs similarity index 100% rename from doc/emacs/agdamacs rename to docs/emacs/agdamacs diff --git a/doc/emacs/ualib-emacs b/docs/emacs/ualib-emacs similarity index 100% rename from doc/emacs/ualib-emacs rename to docs/emacs/ualib-emacs diff --git a/doc/emacs/zenburn-theme.el b/docs/emacs/zenburn-theme.el similarity index 100% rename from doc/emacs/zenburn-theme.el rename to docs/emacs/zenburn-theme.el diff --git a/doc/lagda/Base.lagda b/docs/lagda/Base.lagda similarity index 94% rename from doc/lagda/Base.lagda rename to docs/lagda/Base.lagda index 4fb6c931..be426a9d 100644 --- a/doc/lagda/Base.lagda +++ b/docs/lagda/Base.lagda @@ -13,7 +13,7 @@ This module collects all submodules the library that use "bare" types, as oppose \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base where diff --git a/doc/lagda/Base/Adjunction.lagda b/docs/lagda/Base/Adjunction.lagda similarity index 92% rename from doc/lagda/Base/Adjunction.lagda rename to docs/lagda/Base/Adjunction.lagda index 79cfd622..9fddf55a 100644 --- a/doc/lagda/Base/Adjunction.lagda +++ b/docs/lagda/Base/Adjunction.lagda @@ -10,7 +10,7 @@ author: "agda-algebras development team" This is the [Base.Adjunction][] module of the [Agda Universal Algebra Library][]. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction where diff --git a/doc/lagda/Base/Adjunction/Closure.lagda b/docs/lagda/Base/Adjunction/Closure.lagda similarity index 98% rename from doc/lagda/Base/Adjunction/Closure.lagda rename to docs/lagda/Base/Adjunction/Closure.lagda index 2fcbdaa0..3ff162b3 100644 --- a/doc/lagda/Base/Adjunction/Closure.lagda +++ b/docs/lagda/Base/Adjunction/Closure.lagda @@ -11,7 +11,7 @@ This is the [Base.Adjunction.Closure][] module of the [Agda Universal Algebra Li \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction.Closure where diff --git a/doc/lagda/Base/Adjunction/Galois.lagda b/docs/lagda/Base/Adjunction/Galois.lagda similarity index 99% rename from doc/lagda/Base/Adjunction/Galois.lagda rename to docs/lagda/Base/Adjunction/Galois.lagda index edce0be3..06e8e3f6 100644 --- a/doc/lagda/Base/Adjunction/Galois.lagda +++ b/docs/lagda/Base/Adjunction/Galois.lagda @@ -11,7 +11,7 @@ This is the [Base.Adjunction.Galois][] module of the [Agda Universal Algebra Lib \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction.Galois where diff --git a/doc/lagda/Base/Adjunction/Residuation.lagda b/docs/lagda/Base/Adjunction/Residuation.lagda similarity index 98% rename from doc/lagda/Base/Adjunction/Residuation.lagda rename to docs/lagda/Base/Adjunction/Residuation.lagda index 556a411d..fe762d8a 100644 --- a/doc/lagda/Base/Adjunction/Residuation.lagda +++ b/docs/lagda/Base/Adjunction/Residuation.lagda @@ -11,7 +11,7 @@ This is the [Base.Adjunction.Residuation][] module of the [Agda Universal Algebr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction.Residuation where diff --git a/doc/lagda/Base/Algebras.lagda b/docs/lagda/Base/Algebras.lagda similarity index 94% rename from doc/lagda/Base/Algebras.lagda rename to docs/lagda/Base/Algebras.lagda index cb6550f7..4c53a2b4 100644 --- a/doc/lagda/Base/Algebras.lagda +++ b/docs/lagda/Base/Algebras.lagda @@ -14,7 +14,7 @@ universal algebra, such as *signatures*, *algebras*, *product algebras*, \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Algebras/Basic.lagda b/docs/lagda/Base/Algebras/Basic.lagda similarity index 99% rename from doc/lagda/Base/Algebras/Basic.lagda rename to docs/lagda/Base/Algebras/Basic.lagda index 1b3026e5..c49836aa 100644 --- a/doc/lagda/Base/Algebras/Basic.lagda +++ b/docs/lagda/Base/Algebras/Basic.lagda @@ -11,7 +11,7 @@ This is the [Base.Algebras.Basic][] module of the [Agda Universal Algebra Librar \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Algebras/Congruences.lagda b/docs/lagda/Base/Algebras/Congruences.lagda similarity index 99% rename from doc/lagda/Base/Algebras/Congruences.lagda rename to docs/lagda/Base/Algebras/Congruences.lagda index 16ef9e08..dbc9bce6 100644 --- a/doc/lagda/Base/Algebras/Congruences.lagda +++ b/docs/lagda/Base/Algebras/Congruences.lagda @@ -11,7 +11,7 @@ This is the [Base.Algebras.Congruences][] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Algebras/Products.lagda b/docs/lagda/Base/Algebras/Products.lagda similarity index 99% rename from doc/lagda/Base/Algebras/Products.lagda rename to docs/lagda/Base/Algebras/Products.lagda index 3257b223..58fddc30 100644 --- a/doc/lagda/Base/Algebras/Products.lagda +++ b/docs/lagda/Base/Algebras/Products.lagda @@ -11,7 +11,7 @@ This is the [Base.Algebras.Products][] module of the [Agda Universal Algebra Lib \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Categories.lagda b/docs/lagda/Base/Categories.lagda similarity index 96% rename from doc/lagda/Base/Categories.lagda rename to docs/lagda/Base/Categories.lagda index 99455cf5..330a2415 100644 --- a/doc/lagda/Base/Categories.lagda +++ b/docs/lagda/Base/Categories.lagda @@ -15,7 +15,7 @@ The purpose of this effort twofold. First, we hope it makes the types defined in \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Categories where diff --git a/doc/lagda/Base/Categories/Functors.lagda b/docs/lagda/Base/Categories/Functors.lagda similarity index 99% rename from doc/lagda/Base/Categories/Functors.lagda rename to docs/lagda/Base/Categories/Functors.lagda index dd019bf7..24f03621 100644 --- a/doc/lagda/Base/Categories/Functors.lagda +++ b/docs/lagda/Base/Categories/Functors.lagda @@ -28,7 +28,7 @@ An important class of functors for our domain is the class of so called *polynom \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Categories.Functors where diff --git a/doc/lagda/Base/Complexity.lagda b/docs/lagda/Base/Complexity.lagda similarity index 92% rename from doc/lagda/Base/Complexity.lagda rename to docs/lagda/Base/Complexity.lagda index aaa8c97a..347263a0 100644 --- a/doc/lagda/Base/Complexity.lagda +++ b/docs/lagda/Base/Complexity.lagda @@ -11,7 +11,7 @@ This is the [Base.Complexity][] module of the [Agda Universal Algebra Library][] \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Complexity where diff --git a/doc/lagda/Base/Complexity/Basic.lagda b/docs/lagda/Base/Complexity/Basic.lagda similarity index 95% rename from doc/lagda/Base/Complexity/Basic.lagda rename to docs/lagda/Base/Complexity/Basic.lagda index 71bb556e..18146f4b 100644 --- a/doc/lagda/Base/Complexity/Basic.lagda +++ b/docs/lagda/Base/Complexity/Basic.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Complexity.Basic where diff --git a/doc/lagda/Base/Complexity/CSP.lagda b/docs/lagda/Base/Complexity/CSP.lagda similarity index 99% rename from doc/lagda/Base/Complexity/CSP.lagda rename to docs/lagda/Base/Complexity/CSP.lagda index 53a94b8b..f9b25a28 100644 --- a/doc/lagda/Base/Complexity/CSP.lagda +++ b/docs/lagda/Base/Complexity/CSP.lagda @@ -90,7 +90,7 @@ algebra, 𝑨(R) := (A , ∣: ⃖ R). \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Equality.lagda b/docs/lagda/Base/Equality.lagda similarity index 92% rename from doc/lagda/Base/Equality.lagda rename to docs/lagda/Base/Equality.lagda index 8fa39521..24d35304 100644 --- a/doc/lagda/Base/Equality.lagda +++ b/docs/lagda/Base/Equality.lagda @@ -11,7 +11,7 @@ This is the [Base.Equality][] module of the [Agda Universal Algebra Library][]. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality where diff --git a/doc/lagda/Base/Equality/Extensionality.lagda b/docs/lagda/Base/Equality/Extensionality.lagda similarity index 98% rename from doc/lagda/Base/Equality/Extensionality.lagda rename to docs/lagda/Base/Equality/Extensionality.lagda index d920160d..85255c2b 100644 --- a/doc/lagda/Base/Equality/Extensionality.lagda +++ b/docs/lagda/Base/Equality/Extensionality.lagda @@ -11,7 +11,7 @@ This is the [Base.Equality.Extensionality][] module of the [Agda Universal Algeb \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality.Extensionality where diff --git a/doc/lagda/Base/Equality/Truncation.lagda b/docs/lagda/Base/Equality/Truncation.lagda similarity index 99% rename from doc/lagda/Base/Equality/Truncation.lagda rename to docs/lagda/Base/Equality/Truncation.lagda index 0c60d115..f118a39b 100644 --- a/doc/lagda/Base/Equality/Truncation.lagda +++ b/docs/lagda/Base/Equality/Truncation.lagda @@ -16,7 +16,7 @@ Readers who want to learn more about "proof-relevant mathematics" and other conc \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality.Truncation where diff --git a/doc/lagda/Base/Equality/Welldefined.lagda b/docs/lagda/Base/Equality/Welldefined.lagda similarity index 99% rename from doc/lagda/Base/Equality/Welldefined.lagda rename to docs/lagda/Base/Equality/Welldefined.lagda index 2a8a753d..8933e194 100644 --- a/doc/lagda/Base/Equality/Welldefined.lagda +++ b/docs/lagda/Base/Equality/Welldefined.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality.Welldefined where diff --git a/doc/lagda/Base/Functions.lagda b/docs/lagda/Base/Functions.lagda similarity index 94% rename from doc/lagda/Base/Functions.lagda rename to docs/lagda/Base/Functions.lagda index 7f8ed11a..e42b4c8c 100644 --- a/doc/lagda/Base/Functions.lagda +++ b/docs/lagda/Base/Functions.lagda @@ -16,7 +16,7 @@ source code inhabits the file [Base/Functions.lagda][], which resides in the \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions where diff --git a/doc/lagda/Base/Functions/Injective.lagda b/docs/lagda/Base/Functions/Injective.lagda similarity index 96% rename from doc/lagda/Base/Functions/Injective.lagda rename to docs/lagda/Base/Functions/Injective.lagda index 151a92a8..c8c3676e 100644 --- a/doc/lagda/Base/Functions/Injective.lagda +++ b/docs/lagda/Base/Functions/Injective.lagda @@ -15,7 +15,7 @@ the codomain. The following type manifests this property. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Injective where diff --git a/doc/lagda/Base/Functions/Inverses.lagda b/docs/lagda/Base/Functions/Inverses.lagda similarity index 98% rename from doc/lagda/Base/Functions/Inverses.lagda rename to docs/lagda/Base/Functions/Inverses.lagda index 12115be0..8040bc29 100644 --- a/doc/lagda/Base/Functions/Inverses.lagda +++ b/docs/lagda/Base/Functions/Inverses.lagda @@ -11,7 +11,7 @@ This is the [Base.Functions.Inverses][] module of the [agda-algebras][] library. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Inverses where -- Imports from Agda and the Agda Standard Library --------------------------------------------- diff --git a/doc/lagda/Base/Functions/Surjective.lagda b/docs/lagda/Base/Functions/Surjective.lagda similarity index 98% rename from doc/lagda/Base/Functions/Surjective.lagda rename to docs/lagda/Base/Functions/Surjective.lagda index c61c7b2e..4de056ca 100644 --- a/doc/lagda/Base/Functions/Surjective.lagda +++ b/docs/lagda/Base/Functions/Surjective.lagda @@ -11,7 +11,7 @@ This is the [Base.Functions.Surjective][] module of the [agda-algebras][] librar \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Surjective where -- Imports from Agda and the Agda Standard Library -------------------------------- diff --git a/doc/lagda/Base/Functions/Transformers.lagda b/docs/lagda/Base/Functions/Transformers.lagda similarity index 98% rename from doc/lagda/Base/Functions/Transformers.lagda rename to docs/lagda/Base/Functions/Transformers.lagda index 63834b19..90fa0d7e 100644 --- a/doc/lagda/Base/Functions/Transformers.lagda +++ b/docs/lagda/Base/Functions/Transformers.lagda @@ -12,7 +12,7 @@ library. Here we define functions for translating from one type to another. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Transformers where diff --git a/doc/lagda/Base/Homomorphisms.lagda b/docs/lagda/Base/Homomorphisms.lagda similarity index 95% rename from doc/lagda/Base/Homomorphisms.lagda rename to docs/lagda/Base/Homomorphisms.lagda index 48dcbe00..1438b415 100644 --- a/doc/lagda/Base/Homomorphisms.lagda +++ b/docs/lagda/Base/Homomorphisms.lagda @@ -11,7 +11,7 @@ This chapter presents the [Base.Homomorphisms][] module of the [Agda Universal A \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Homomorphisms/Basic.lagda b/docs/lagda/Base/Homomorphisms/Basic.lagda similarity index 99% rename from doc/lagda/Base/Homomorphisms/Basic.lagda rename to docs/lagda/Base/Homomorphisms/Basic.lagda index cf123cae..6680f353 100644 --- a/doc/lagda/Base/Homomorphisms/Basic.lagda +++ b/docs/lagda/Base/Homomorphisms/Basic.lagda @@ -11,7 +11,7 @@ This is the [Base.Homomorphisms.Basic] module of the [Agda Universal Algebra Lib \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Homomorphisms/Factor.lagda b/docs/lagda/Base/Homomorphisms/Factor.lagda similarity index 98% rename from doc/lagda/Base/Homomorphisms/Factor.lagda rename to docs/lagda/Base/Homomorphisms/Factor.lagda index 28f48fe7..459001d3 100644 --- a/doc/lagda/Base/Homomorphisms/Factor.lagda +++ b/docs/lagda/Base/Homomorphisms/Factor.lagda @@ -24,7 +24,7 @@ If `τ : hom 𝑨 𝑩`, `ν : hom 𝑨 𝑪`, `ν` is surjective, and `ker ν \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Homomorphisms/HomomorphicImages.lagda b/docs/lagda/Base/Homomorphisms/HomomorphicImages.lagda similarity index 98% rename from doc/lagda/Base/Homomorphisms/HomomorphicImages.lagda rename to docs/lagda/Base/Homomorphisms/HomomorphicImages.lagda index 29552a9c..ab13965d 100644 --- a/doc/lagda/Base/Homomorphisms/HomomorphicImages.lagda +++ b/docs/lagda/Base/Homomorphisms/HomomorphicImages.lagda @@ -11,7 +11,7 @@ This is the [Base.Homomorphisms.HomomorphicImages][] module of the [Agda Univers \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Homomorphisms/Isomorphisms.lagda b/docs/lagda/Base/Homomorphisms/Isomorphisms.lagda similarity index 99% rename from doc/lagda/Base/Homomorphisms/Isomorphisms.lagda rename to docs/lagda/Base/Homomorphisms/Isomorphisms.lagda index ad8f512d..9968e8d9 100644 --- a/doc/lagda/Base/Homomorphisms/Isomorphisms.lagda +++ b/docs/lagda/Base/Homomorphisms/Isomorphisms.lagda @@ -12,7 +12,7 @@ Here we formalize the informal notion of isomorphism between algebraic structure \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Homomorphisms/Kernels.lagda b/docs/lagda/Base/Homomorphisms/Kernels.lagda similarity index 98% rename from doc/lagda/Base/Homomorphisms/Kernels.lagda rename to docs/lagda/Base/Homomorphisms/Kernels.lagda index b40df212..30a9e442 100644 --- a/doc/lagda/Base/Homomorphisms/Kernels.lagda +++ b/docs/lagda/Base/Homomorphisms/Kernels.lagda @@ -11,7 +11,7 @@ This is the [Base.Homomorphisms.Kernels] module of the [Agda Universal Algebra L \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Homomorphisms/Noether.lagda b/docs/lagda/Base/Homomorphisms/Noether.lagda similarity index 99% rename from doc/lagda/Base/Homomorphisms/Noether.lagda rename to docs/lagda/Base/Homomorphisms/Noether.lagda index e816ec52..83b26913 100644 --- a/doc/lagda/Base/Homomorphisms/Noether.lagda +++ b/docs/lagda/Base/Homomorphisms/Noether.lagda @@ -11,7 +11,7 @@ This is the [Base.Homomorphisms.Noether][] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Homomorphisms/Products.lagda b/docs/lagda/Base/Homomorphisms/Products.lagda similarity index 98% rename from doc/lagda/Base/Homomorphisms/Products.lagda rename to docs/lagda/Base/Homomorphisms/Products.lagda index 84d5da3d..2254cf71 100644 --- a/doc/lagda/Base/Homomorphisms/Products.lagda +++ b/docs/lagda/Base/Homomorphisms/Products.lagda @@ -11,7 +11,7 @@ This is the [Base.Homomorphisms.Products] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Homomorphisms/Properties.lagda b/docs/lagda/Base/Homomorphisms/Properties.lagda similarity index 98% rename from doc/lagda/Base/Homomorphisms/Properties.lagda rename to docs/lagda/Base/Homomorphisms/Properties.lagda index a2e51fdb..0b65f146 100644 --- a/doc/lagda/Base/Homomorphisms/Properties.lagda +++ b/docs/lagda/Base/Homomorphisms/Properties.lagda @@ -11,7 +11,7 @@ This is the [Base.Homomorphisms.Properties][] module of the [Agda Universal Alge \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Relations.lagda b/docs/lagda/Base/Relations.lagda similarity index 95% rename from doc/lagda/Base/Relations.lagda rename to docs/lagda/Base/Relations.lagda index 74815b2b..800b471b 100644 --- a/doc/lagda/Base/Relations.lagda +++ b/docs/lagda/Base/Relations.lagda @@ -19,7 +19,7 @@ Finally, in [Base.Relations.Quotients][] we define quotient types. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations where diff --git a/doc/lagda/Base/Relations/Continuous.lagda b/docs/lagda/Base/Relations/Continuous.lagda similarity index 99% rename from doc/lagda/Base/Relations/Continuous.lagda rename to docs/lagda/Base/Relations/Continuous.lagda index 2686c528..dcbcc543 100644 --- a/doc/lagda/Base/Relations/Continuous.lagda +++ b/docs/lagda/Base/Relations/Continuous.lagda @@ -11,7 +11,7 @@ This is the [Base.Relations.Continuous][] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Continuous where diff --git a/doc/lagda/Base/Relations/Discrete.lagda b/docs/lagda/Base/Relations/Discrete.lagda similarity index 99% rename from doc/lagda/Base/Relations/Discrete.lagda rename to docs/lagda/Base/Relations/Discrete.lagda index 8029746d..b0a84c9d 100644 --- a/doc/lagda/Base/Relations/Discrete.lagda +++ b/docs/lagda/Base/Relations/Discrete.lagda @@ -11,7 +11,7 @@ This is the [Base.Relations.Discrete][] module of the [Agda Universal Algebra Li \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Discrete where diff --git a/doc/lagda/Base/Relations/Properties.lagda b/docs/lagda/Base/Relations/Properties.lagda similarity index 98% rename from doc/lagda/Base/Relations/Properties.lagda rename to docs/lagda/Base/Relations/Properties.lagda index 17e9724e..4e6abe3a 100644 --- a/doc/lagda/Base/Relations/Properties.lagda +++ b/docs/lagda/Base/Relations/Properties.lagda @@ -11,7 +11,7 @@ This is the [Base.Relations.Properties][] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Properties where diff --git a/doc/lagda/Base/Relations/Quotients.lagda b/docs/lagda/Base/Relations/Quotients.lagda similarity index 99% rename from doc/lagda/Base/Relations/Quotients.lagda rename to docs/lagda/Base/Relations/Quotients.lagda index b89356d0..1ae0e449 100644 --- a/doc/lagda/Base/Relations/Quotients.lagda +++ b/docs/lagda/Base/Relations/Quotients.lagda @@ -11,7 +11,7 @@ This is the [Base.Relations.Quotients][] module of the [Agda Universal Algebra L \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Quotients where diff --git a/doc/lagda/Base/Structures.lagda b/docs/lagda/Base/Structures.lagda similarity index 95% rename from doc/lagda/Base/Structures.lagda rename to docs/lagda/Base/Structures.lagda index 4eec0a60..e571970f 100644 --- a/doc/lagda/Base/Structures.lagda +++ b/docs/lagda/Base/Structures.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures][] module of the [Agda Universal Algebra Library][] \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures where diff --git a/doc/lagda/Base/Structures/Basic.lagda b/docs/lagda/Base/Structures/Basic.lagda similarity index 98% rename from doc/lagda/Base/Structures/Basic.lagda rename to docs/lagda/Base/Structures/Basic.lagda index c923ad25..e57d9544 100644 --- a/doc/lagda/Base/Structures/Basic.lagda +++ b/docs/lagda/Base/Structures/Basic.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Basic][] module of the [Agda Universal Algebra Libr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Basic where diff --git a/doc/lagda/Base/Structures/Congruences.lagda b/docs/lagda/Base/Structures/Congruences.lagda similarity index 98% rename from doc/lagda/Base/Structures/Congruences.lagda rename to docs/lagda/Base/Structures/Congruences.lagda index a1ba4239..a1efae2e 100644 --- a/doc/lagda/Base/Structures/Congruences.lagda +++ b/docs/lagda/Base/Structures/Congruences.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Congruences][] module of the [Agda Universal Algebr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Congruences where diff --git a/doc/lagda/Base/Structures/EquationalLogic.lagda b/docs/lagda/Base/Structures/EquationalLogic.lagda similarity index 97% rename from doc/lagda/Base/Structures/EquationalLogic.lagda rename to docs/lagda/Base/Structures/EquationalLogic.lagda index 1fd8006d..69be3d1b 100644 --- a/doc/lagda/Base/Structures/EquationalLogic.lagda +++ b/docs/lagda/Base/Structures/EquationalLogic.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.EquationalLogic][] module of the [Agda Universal Al \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.EquationalLogic where diff --git a/doc/lagda/Base/Structures/Graphs.lagda b/docs/lagda/Base/Structures/Graphs.lagda similarity index 98% rename from doc/lagda/Base/Structures/Graphs.lagda rename to docs/lagda/Base/Structures/Graphs.lagda index 62b121cd..44dacc45 100644 --- a/doc/lagda/Base/Structures/Graphs.lagda +++ b/docs/lagda/Base/Structures/Graphs.lagda @@ -15,7 +15,7 @@ N.B. This module differs from 0Graphs.lagda in that this module is universe poly \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Graphs where diff --git a/doc/lagda/Base/Structures/Graphs0.lagda b/docs/lagda/Base/Structures/Graphs0.lagda similarity index 99% rename from doc/lagda/Base/Structures/Graphs0.lagda rename to docs/lagda/Base/Structures/Graphs0.lagda index 6cabef7c..3275c46d 100644 --- a/doc/lagda/Base/Structures/Graphs0.lagda +++ b/docs/lagda/Base/Structures/Graphs0.lagda @@ -17,7 +17,7 @@ The *graph* of `𝑨` is the structure `Gr 𝑨` with the same domain as `𝑨` \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Graphs0 where diff --git a/doc/lagda/Base/Structures/Homs.lagda b/docs/lagda/Base/Structures/Homs.lagda similarity index 99% rename from doc/lagda/Base/Structures/Homs.lagda rename to docs/lagda/Base/Structures/Homs.lagda index f132b32a..a03423da 100644 --- a/doc/lagda/Base/Structures/Homs.lagda +++ b/docs/lagda/Base/Structures/Homs.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Homs][] module of the [Agda Universal Algebra Libra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Homs where diff --git a/doc/lagda/Base/Structures/Isos.lagda b/docs/lagda/Base/Structures/Isos.lagda similarity index 99% rename from doc/lagda/Base/Structures/Isos.lagda rename to docs/lagda/Base/Structures/Isos.lagda index b13af6ad..a0cf2451 100644 --- a/doc/lagda/Base/Structures/Isos.lagda +++ b/docs/lagda/Base/Structures/Isos.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Isos][] module of the [Agda Universal Algebra Libra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Isos where diff --git a/doc/lagda/Base/Structures/Products.lagda b/docs/lagda/Base/Structures/Products.lagda similarity index 97% rename from doc/lagda/Base/Structures/Products.lagda rename to docs/lagda/Base/Structures/Products.lagda index 8d6ebb74..c6431e7d 100644 --- a/doc/lagda/Base/Structures/Products.lagda +++ b/docs/lagda/Base/Structures/Products.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Products][] module of the [Agda Universal Algebra L \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Products where diff --git a/doc/lagda/Base/Structures/Sigma.lagda b/docs/lagda/Base/Structures/Sigma.lagda similarity index 94% rename from doc/lagda/Base/Structures/Sigma.lagda rename to docs/lagda/Base/Structures/Sigma.lagda index 62b3425e..e8a6221f 100644 --- a/doc/lagda/Base/Structures/Sigma.lagda +++ b/docs/lagda/Base/Structures/Sigma.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Sigma][] module of the [Agda Universal Algebra Libr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma where diff --git a/doc/lagda/Base/Structures/Sigma/Basic.lagda b/docs/lagda/Base/Structures/Sigma/Basic.lagda similarity index 98% rename from doc/lagda/Base/Structures/Sigma/Basic.lagda rename to docs/lagda/Base/Structures/Sigma/Basic.lagda index 497b7f2a..214bf540 100644 --- a/doc/lagda/Base/Structures/Sigma/Basic.lagda +++ b/docs/lagda/Base/Structures/Sigma/Basic.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Sigma.Basic][] module of the [Agda Universal Algebr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Basic where diff --git a/doc/lagda/Base/Structures/Sigma/Congruences.lagda b/docs/lagda/Base/Structures/Sigma/Congruences.lagda similarity index 98% rename from doc/lagda/Base/Structures/Sigma/Congruences.lagda rename to docs/lagda/Base/Structures/Sigma/Congruences.lagda index 07c4757c..a4970fae 100644 --- a/doc/lagda/Base/Structures/Sigma/Congruences.lagda +++ b/docs/lagda/Base/Structures/Sigma/Congruences.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Congruences where diff --git a/doc/lagda/Base/Structures/Sigma/Homs.lagda b/docs/lagda/Base/Structures/Sigma/Homs.lagda similarity index 99% rename from doc/lagda/Base/Structures/Sigma/Homs.lagda rename to docs/lagda/Base/Structures/Sigma/Homs.lagda index b151253b..b11b4bb9 100644 --- a/doc/lagda/Base/Structures/Sigma/Homs.lagda +++ b/docs/lagda/Base/Structures/Sigma/Homs.lagda @@ -10,7 +10,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Homs where diff --git a/doc/lagda/Base/Structures/Sigma/Isos.lagda b/docs/lagda/Base/Structures/Sigma/Isos.lagda similarity index 99% rename from doc/lagda/Base/Structures/Sigma/Isos.lagda rename to docs/lagda/Base/Structures/Sigma/Isos.lagda index 550cef18..e85c7466 100644 --- a/doc/lagda/Base/Structures/Sigma/Isos.lagda +++ b/docs/lagda/Base/Structures/Sigma/Isos.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Isos where diff --git a/doc/lagda/Base/Structures/Sigma/Products.lagda b/docs/lagda/Base/Structures/Sigma/Products.lagda similarity index 97% rename from doc/lagda/Base/Structures/Sigma/Products.lagda rename to docs/lagda/Base/Structures/Sigma/Products.lagda index c1eadc5f..5e3e736c 100644 --- a/doc/lagda/Base/Structures/Sigma/Products.lagda +++ b/docs/lagda/Base/Structures/Sigma/Products.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Products where diff --git a/doc/lagda/Base/Structures/Substructures.lagda b/docs/lagda/Base/Structures/Substructures.lagda similarity index 99% rename from doc/lagda/Base/Structures/Substructures.lagda rename to docs/lagda/Base/Structures/Substructures.lagda index 1ed5216a..5d482075 100644 --- a/doc/lagda/Base/Structures/Substructures.lagda +++ b/docs/lagda/Base/Structures/Substructures.lagda @@ -11,7 +11,7 @@ This is the [Base.Structures.Substructures][] module of the [Agda Universal Alge \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Substructures where diff --git a/doc/lagda/Base/Structures/Terms.lagda b/docs/lagda/Base/Structures/Terms.lagda similarity index 97% rename from doc/lagda/Base/Structures/Terms.lagda rename to docs/lagda/Base/Structures/Terms.lagda index 68bc5c18..0cdba71a 100644 --- a/doc/lagda/Base/Structures/Terms.lagda +++ b/docs/lagda/Base/Structures/Terms.lagda @@ -27,7 +27,7 @@ Thus interpretation of a term is defined by structural induction. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Terms where diff --git a/doc/lagda/Base/Subalgebras.lagda b/docs/lagda/Base/Subalgebras.lagda similarity index 93% rename from doc/lagda/Base/Subalgebras.lagda rename to docs/lagda/Base/Subalgebras.lagda index 29f385b5..c1b1dd25 100644 --- a/doc/lagda/Base/Subalgebras.lagda +++ b/docs/lagda/Base/Subalgebras.lagda @@ -11,7 +11,7 @@ This is the [Base.Subalgebras][] module of the [Agda Universal Algebra Library][ \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Subalgebras/Properties.lagda b/docs/lagda/Base/Subalgebras/Properties.lagda similarity index 99% rename from doc/lagda/Base/Subalgebras/Properties.lagda rename to docs/lagda/Base/Subalgebras/Properties.lagda index 2e5ba554..8d869cde 100644 --- a/doc/lagda/Base/Subalgebras/Properties.lagda +++ b/docs/lagda/Base/Subalgebras/Properties.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Subalgebras/Subalgebras.lagda b/docs/lagda/Base/Subalgebras/Subalgebras.lagda similarity index 99% rename from doc/lagda/Base/Subalgebras/Subalgebras.lagda rename to docs/lagda/Base/Subalgebras/Subalgebras.lagda index 8e0c3c98..b21f7661 100644 --- a/doc/lagda/Base/Subalgebras/Subalgebras.lagda +++ b/docs/lagda/Base/Subalgebras/Subalgebras.lagda @@ -11,7 +11,7 @@ The [Base.Subalgebras.Subalgebras][] module of the [Agda Universal Algebra Libra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Subalgebras/Subuniverses.lagda b/docs/lagda/Base/Subalgebras/Subuniverses.lagda similarity index 99% rename from doc/lagda/Base/Subalgebras/Subuniverses.lagda rename to docs/lagda/Base/Subalgebras/Subuniverses.lagda index 7dca19c1..fd2dad55 100644 --- a/doc/lagda/Base/Subalgebras/Subuniverses.lagda +++ b/docs/lagda/Base/Subalgebras/Subuniverses.lagda @@ -13,7 +13,7 @@ We start by defining a type that represents the important concept of *subunivers \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Terms.lagda b/docs/lagda/Base/Terms.lagda similarity index 93% rename from doc/lagda/Base/Terms.lagda rename to docs/lagda/Base/Terms.lagda index 8b5140eb..63487286 100644 --- a/doc/lagda/Base/Terms.lagda +++ b/docs/lagda/Base/Terms.lagda @@ -11,7 +11,7 @@ This is the [Base.Terms][] module of the [Agda Universal Algebra Library][]. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Terms/Basic.lagda b/docs/lagda/Base/Terms/Basic.lagda similarity index 98% rename from doc/lagda/Base/Terms/Basic.lagda rename to docs/lagda/Base/Terms/Basic.lagda index 06a3af63..fc8040eb 100644 --- a/doc/lagda/Base/Terms/Basic.lagda +++ b/docs/lagda/Base/Terms/Basic.lagda @@ -11,7 +11,7 @@ This is the [Base.Terms.Basic][] module of the [Agda Universal Algebra Library][ \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Terms/Operations.lagda b/docs/lagda/Base/Terms/Operations.lagda similarity index 99% rename from doc/lagda/Base/Terms/Operations.lagda rename to docs/lagda/Base/Terms/Operations.lagda index c2b1d9cf..436c889f 100644 --- a/doc/lagda/Base/Terms/Operations.lagda +++ b/docs/lagda/Base/Terms/Operations.lagda @@ -14,7 +14,7 @@ particular algebra, and we prove some compatibility properties of term operation \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Terms/Properties.lagda b/docs/lagda/Base/Terms/Properties.lagda similarity index 99% rename from doc/lagda/Base/Terms/Properties.lagda rename to docs/lagda/Base/Terms/Properties.lagda index f088120f..fed5c3e4 100644 --- a/doc/lagda/Base/Terms/Properties.lagda +++ b/docs/lagda/Base/Terms/Properties.lagda @@ -12,7 +12,7 @@ This is the [Base.Terms.Properties][] module of the [Agda Universal Algebra Libr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Varieties.lagda b/docs/lagda/Base/Varieties.lagda similarity index 95% rename from doc/lagda/Base/Varieties.lagda rename to docs/lagda/Base/Varieties.lagda index 848d809f..1746583e 100644 --- a/doc/lagda/Base/Varieties.lagda +++ b/docs/lagda/Base/Varieties.lagda @@ -13,7 +13,7 @@ and we prove properties of these types. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/doc/lagda/Base/Varieties/Closure.lagda b/docs/lagda/Base/Varieties/Closure.lagda similarity index 99% rename from doc/lagda/Base/Varieties/Closure.lagda rename to docs/lagda/Base/Varieties/Closure.lagda index 91ab01c6..fb5e49bc 100644 --- a/doc/lagda/Base/Varieties/Closure.lagda +++ b/docs/lagda/Base/Varieties/Closure.lagda @@ -22,7 +22,7 @@ A *variety* is a class of algebras, in the same signature, that is closed under \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Varieties/EquationalLogic.lagda b/docs/lagda/Base/Varieties/EquationalLogic.lagda similarity index 98% rename from doc/lagda/Base/Varieties/EquationalLogic.lagda rename to docs/lagda/Base/Varieties/EquationalLogic.lagda index c4b8f716..6d083815 100644 --- a/doc/lagda/Base/Varieties/EquationalLogic.lagda +++ b/docs/lagda/Base/Varieties/EquationalLogic.lagda @@ -15,7 +15,7 @@ Because a class of structures has a different type than a single structure, we m \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Varieties/FreeAlgebras.lagda b/docs/lagda/Base/Varieties/FreeAlgebras.lagda similarity index 99% rename from doc/lagda/Base/Varieties/FreeAlgebras.lagda rename to docs/lagda/Base/Varieties/FreeAlgebras.lagda index 4cfa5bda..00b73ba5 100644 --- a/doc/lagda/Base/Varieties/FreeAlgebras.lagda +++ b/docs/lagda/Base/Varieties/FreeAlgebras.lagda @@ -13,7 +13,7 @@ First we will define the relatively free algebra in a variety, which is the "fre \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Level using ( Level ) open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Varieties/Invariants.lagda b/docs/lagda/Base/Varieties/Invariants.lagda similarity index 94% rename from doc/lagda/Base/Varieties/Invariants.lagda rename to docs/lagda/Base/Varieties/Invariants.lagda index 8f08d5e4..3c222d3b 100644 --- a/doc/lagda/Base/Varieties/Invariants.lagda +++ b/docs/lagda/Base/Varieties/Invariants.lagda @@ -11,7 +11,7 @@ These are properties that are preserved under isomorphism. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Varieties/Preservation.lagda b/docs/lagda/Base/Varieties/Preservation.lagda similarity index 99% rename from doc/lagda/Base/Varieties/Preservation.lagda rename to docs/lagda/Base/Varieties/Preservation.lagda index 7d340115..a8776c96 100644 --- a/doc/lagda/Base/Varieties/Preservation.lagda +++ b/docs/lagda/Base/Varieties/Preservation.lagda @@ -11,7 +11,7 @@ This is the [Base.Varieties.Preservation][] module of the [Agda Universal Algebr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Base/Varieties/Properties.lagda b/docs/lagda/Base/Varieties/Properties.lagda similarity index 99% rename from doc/lagda/Base/Varieties/Properties.lagda rename to docs/lagda/Base/Varieties/Properties.lagda index b25643e9..324d93e6 100644 --- a/doc/lagda/Base/Varieties/Properties.lagda +++ b/docs/lagda/Base/Varieties/Properties.lagda @@ -21,7 +21,7 @@ we prove the following facts (which we use later in our proof of Birkhoff's HSP \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Demos.lagda b/docs/lagda/Demos.lagda similarity index 87% rename from doc/lagda/Demos.lagda rename to docs/lagda/Demos.lagda index 4d6120fb..848733f0 100644 --- a/doc/lagda/Demos.lagda +++ b/docs/lagda/Demos.lagda @@ -9,7 +9,7 @@ author: "the agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Demos where diff --git a/doc/lagda/Demos/ContraX.lagda b/docs/lagda/Demos/ContraX.lagda similarity index 96% rename from doc/lagda/Demos/ContraX.lagda rename to docs/lagda/Demos/ContraX.lagda index 1c3a4742..610a77f1 100644 --- a/doc/lagda/Demos/ContraX.lagda +++ b/docs/lagda/Demos/ContraX.lagda @@ -8,7 +8,7 @@ author: "the agda-algebras development team" ### Inconsistency in first formalization attempt \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Demos/GeneralOperationsAndRelations.lagda b/docs/lagda/Demos/GeneralOperationsAndRelations.lagda similarity index 90% rename from doc/lagda/Demos/GeneralOperationsAndRelations.lagda rename to docs/lagda/Demos/GeneralOperationsAndRelations.lagda index 685bd0b5..a10202ad 100644 --- a/doc/lagda/Demos/GeneralOperationsAndRelations.lagda +++ b/docs/lagda/Demos/GeneralOperationsAndRelations.lagda @@ -22,7 +22,7 @@ author: "the agda-algebras development team" \begin{code}[hide] -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Demos.GeneralOperationsAndRelations where diff --git a/doc/lagda/Demos/HSP.lagda b/docs/lagda/Demos/HSP.lagda similarity index 99% rename from doc/lagda/Demos/HSP.lagda rename to docs/lagda/Demos/HSP.lagda index 52c95bd1..16a0d5a2 100644 --- a/doc/lagda/Demos/HSP.lagda +++ b/docs/lagda/Demos/HSP.lagda @@ -49,7 +49,7 @@ theory and a proof assistant like [Agda][]. On the other hand, this paper is pro To best emulate [MLTT][], we use \begin{code}[inline] -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} \end{code} disables [Streicher's K axiom](https://ncatlab.org/nlab/show/axiom+K+%28type+theory%29); directs [Agda][] to accept only definitions behaving like *judgmental* equalities; diff --git a/doc/lagda/Examples.lagda b/docs/lagda/Examples.lagda similarity index 86% rename from doc/lagda/Examples.lagda rename to docs/lagda/Examples.lagda index 38730765..95af622c 100644 --- a/doc/lagda/Examples.lagda +++ b/docs/lagda/Examples.lagda @@ -11,7 +11,7 @@ This is the [Examples][] module of the [Agda Universal Algebra Library][]. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples where diff --git a/doc/lagda/Examples/Categories.lagda b/docs/lagda/Examples/Categories.lagda similarity index 88% rename from doc/lagda/Examples/Categories.lagda rename to docs/lagda/Examples/Categories.lagda index 8ed96d72..23c79fd0 100644 --- a/doc/lagda/Examples/Categories.lagda +++ b/docs/lagda/Examples/Categories.lagda @@ -11,7 +11,7 @@ This is the [Examples.Categories][] module of the [Agda Universal Algebra Librar \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Categories where diff --git a/doc/lagda/Examples/Categories/Functors.lagda b/docs/lagda/Examples/Categories/Functors.lagda similarity index 97% rename from doc/lagda/Examples/Categories/Functors.lagda rename to docs/lagda/Examples/Categories/Functors.lagda index 004b461e..0142616d 100644 --- a/doc/lagda/Examples/Categories/Functors.lagda +++ b/docs/lagda/Examples/Categories/Functors.lagda @@ -12,7 +12,7 @@ This is the [Examples.Categories.Functors][] module of the [Agda Universal Algeb \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Categories.Functors where diff --git a/doc/lagda/Examples/Structures.lagda b/docs/lagda/Examples/Structures.lagda similarity index 89% rename from doc/lagda/Examples/Structures.lagda rename to docs/lagda/Examples/Structures.lagda index e049a87d..c9e80079 100644 --- a/doc/lagda/Examples/Structures.lagda +++ b/docs/lagda/Examples/Structures.lagda @@ -11,7 +11,7 @@ This is the [Examples.Structures][] module of the [Agda Universal Algebra Librar \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Structures where diff --git a/doc/lagda/Examples/Structures/Basic.lagda b/docs/lagda/Examples/Structures/Basic.lagda similarity index 97% rename from doc/lagda/Examples/Structures/Basic.lagda rename to docs/lagda/Examples/Structures/Basic.lagda index 01b0f24c..153da4d4 100644 --- a/doc/lagda/Examples/Structures/Basic.lagda +++ b/docs/lagda/Examples/Structures/Basic.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Structures.Basic where diff --git a/doc/lagda/Examples/Structures/Signatures.lagda b/docs/lagda/Examples/Structures/Signatures.lagda similarity index 97% rename from doc/lagda/Examples/Structures/Signatures.lagda rename to docs/lagda/Examples/Structures/Signatures.lagda index 3e80f13a..402fdf03 100644 --- a/doc/lagda/Examples/Structures/Signatures.lagda +++ b/docs/lagda/Examples/Structures/Signatures.lagda @@ -7,7 +7,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Structures.Signatures where diff --git a/doc/lagda/Exercises.lagda b/docs/lagda/Exercises.lagda similarity index 85% rename from doc/lagda/Exercises.lagda rename to docs/lagda/Exercises.lagda index 4f723d07..2656bfdf 100644 --- a/doc/lagda/Exercises.lagda +++ b/docs/lagda/Exercises.lagda @@ -11,7 +11,7 @@ This is the [Exercises][] module of the [Agda Universal Algebra Library][]. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Exercises where diff --git a/doc/lagda/Exercises/Complexity.lagda b/docs/lagda/Exercises/Complexity.lagda similarity index 87% rename from doc/lagda/Exercises/Complexity.lagda rename to docs/lagda/Exercises/Complexity.lagda index 0837bcb7..f6b537af 100644 --- a/doc/lagda/Exercises/Complexity.lagda +++ b/docs/lagda/Exercises/Complexity.lagda @@ -11,7 +11,7 @@ This is the [Exercises.Complexity][] module of the [Agda Universal Algebra Libra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Exercises.Complexity where diff --git a/doc/lagda/Exercises/Complexity/FiniteCSP.lagda b/docs/lagda/Exercises/Complexity/FiniteCSP.lagda similarity index 99% rename from doc/lagda/Exercises/Complexity/FiniteCSP.lagda rename to docs/lagda/Exercises/Complexity/FiniteCSP.lagda index 7c699d74..87fb2c0d 100644 --- a/doc/lagda/Exercises/Complexity/FiniteCSP.lagda +++ b/docs/lagda/Exercises/Complexity/FiniteCSP.lagda @@ -15,7 +15,7 @@ University in Prague. They were formalized in dependent type theory by the \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Exercises.Complexity.FiniteCSP where diff --git a/doc/lagda/Overture.lagda b/docs/lagda/Overture.lagda similarity index 91% rename from doc/lagda/Overture.lagda rename to docs/lagda/Overture.lagda index bc315aab..4982c8a4 100644 --- a/doc/lagda/Overture.lagda +++ b/docs/lagda/Overture.lagda @@ -11,7 +11,7 @@ This is the [Overture][] module of the [Agda Universal Algebra Library][]. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture where diff --git a/doc/lagda/Overture/Basic.lagda b/docs/lagda/Overture/Basic.lagda similarity index 81% rename from doc/lagda/Overture/Basic.lagda rename to docs/lagda/Overture/Basic.lagda index 3e9f5713..0dd8498b 100644 --- a/doc/lagda/Overture/Basic.lagda +++ b/docs/lagda/Overture/Basic.lagda @@ -17,41 +17,30 @@ An Agda program typically begins by setting some options and by importing types from existing Agda libraries. Options are specified with the `OPTIONS` *pragma* and control the way Agda behaves by, for example, specifying the logical axioms and deduction rules we wish to assume when the program is type-checked to verify -its correctness. Every Agda program in [agda-algebras][] begins with the following line. +its correctness. + +Each module in the library begins with a pragma line of the form \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} \end{code} -These options control certain foundational assumptions that Agda makes when -type-checking the program to verify its correctness. ++ The `--cubical-compatible` flag asks Agda to rule out reasoning principles incompatible with univalent type theory — in particular, Streicher's axiom K and uniqueness of identity proofs — and to generate the internal support code that lets Cubical Agda import this module. It implies `--without-K` (which forbids K outright) and strengthens it by additionally preparing each definition for interaction with Cubical's path-based notion of equality. -* `--without-K` disables + Earlier versions of the library used `--without-K` directly, which disables [Streicher's K axiom](https://ncatlab.org/nlab/show/axiom+K+%28type+theory%29); - see also the - [section on axiom K](https://agda.readthedocs.io/en/v2.6.1/language/without-k.html) + see also the [section on axiom K](https://agda.readthedocs.io/en/v2.6.1/language/without-k.html) in the [Agda Language Reference Manual](https://agda.readthedocs.io/en/v2.6.1.3/language). -* `--exact-split` makes Agda accept only those definitions that behave like so-called - *judgmental* equalities. [Martín Escardó](https://www.cs.bham.ac.uk/~mhe) explains - this by saying it "makes sure that pattern matching corresponds to Martin-Löf - eliminators;" see also the - [Pattern matching and equality section](https://agda.readthedocs.io/en/v2.6.1/tools/command-line-options.html#pattern-matching-and-equality) - of the [Agda Tools](https://agda.readthedocs.io/en/v2.6.1.3/tools/) documentation. - -* `safe` ensures that nothing is postulated outright---every non-MLTT axiom has to be - an explicit assumption (e.g., an argument to a function or module); see also - [this section](https://agda.readthedocs.io/en/v2.6.1/tools/command-line-options.html#cmdoption-safe) - of the [Agda Tools](https://agda.readthedocs.io/en/v2.6.1.3/tools/) documentation and the - [Safe Agda section](https://agda.readthedocs.io/en/v2.6.1/language/safe-agda.html#safe-agda) - of the [Agda Language Reference](https://agda.readthedocs.io/en/v2.6.1.3/language). - -Note that if we wish to type-check a file that imports another file that still -has some unmet proof obligations, we must replace the `--safe` flag with -`--allow-unsolved-metas`, but this is never done in (publicly released versions - of) the [agda-algebras][]. + However, `--cubical-compatible` superseded `--without-K` in Agda 2.6.3 (see [Agda issue #5843](https://github.com/agda/agda/issues/5843) for the rationale). The practical difference is that a module with only `--without-K` cannot be imported from a `--cubical` module, but one with `--cubical-compatible` can. Since we intend to port this library to Cubical Agda (see the project roadmap), `--cubical-compatible` is the correct choice. + ++ The `--exact-split` flag requires every case in a definition by pattern matching to hold *definitionally*, not merely propositionally. This keeps the operational behavior of our definitions in lockstep with their intended mathematical meaning and catches accidental reliance on with-abstractions. + ++ Finally, `--safe` forbids postulates, `trustMe`, and unsafe FFI — everything in agda-algebras is a genuine proof. + +(Readers familiar with the standard library will notice occasional `-W[no]UnsupportedIndexedMatch` warnings on our pattern-matching definitions. These warnings come from `--cubical-compatible` and indicate that the flagged definition will not compute when applied to a `--cubical` transport. They are suppressed at the library level via the `flags:` field in `agda-algebras.agda-lib`. Every such site is a candidate for cleanup when we eventually port to Cubical; see the project's Milestone 5.) #### Agda modules diff --git a/doc/lagda/Overture/Operations.lagda b/docs/lagda/Overture/Operations.lagda similarity index 97% rename from doc/lagda/Overture/Operations.lagda rename to docs/lagda/Overture/Operations.lagda index f9fe922a..0e516c2a 100644 --- a/doc/lagda/Overture/Operations.lagda +++ b/docs/lagda/Overture/Operations.lagda @@ -23,7 +23,7 @@ domain `I → A` (the type of "tuples") and codomain `A`. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture.Operations where diff --git a/doc/lagda/Overture/Preface.lagda b/docs/lagda/Overture/Preface.lagda similarity index 99% rename from doc/lagda/Overture/Preface.lagda rename to docs/lagda/Overture/Preface.lagda index 7a839cf8..0ad48867 100644 --- a/doc/lagda/Overture/Preface.lagda +++ b/docs/lagda/Overture/Preface.lagda @@ -11,7 +11,7 @@ This is the [Overture.Preface][] module of the [Agda Universal Algebra Library][ \begin{code}[hide] -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture.Preface where diff --git a/doc/lagda/Overture/Signatures.lagda b/docs/lagda/Overture/Signatures.lagda similarity index 98% rename from doc/lagda/Overture/Signatures.lagda rename to docs/lagda/Overture/Signatures.lagda index 972ce4c9..bbff8e1b 100644 --- a/doc/lagda/Overture/Signatures.lagda +++ b/docs/lagda/Overture/Signatures.lagda @@ -13,7 +13,7 @@ This is the [Overture.Signatures][] module of the [Agda Universal Algebra Librar \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture.Signatures where diff --git a/doc/lagda/Setoid.lagda b/docs/lagda/Setoid.lagda similarity index 93% rename from doc/lagda/Setoid.lagda rename to docs/lagda/Setoid.lagda index a896ad71..bbc68311 100644 --- a/doc/lagda/Setoid.lagda +++ b/docs/lagda/Setoid.lagda @@ -12,7 +12,7 @@ as opposed to "bare" types (see [Base.lagda][]). \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid where diff --git a/doc/lagda/Setoid/Algebras.lagda b/docs/lagda/Setoid/Algebras.lagda similarity index 93% rename from doc/lagda/Setoid/Algebras.lagda rename to docs/lagda/Setoid/Algebras.lagda index 514d8120..a0de547c 100644 --- a/doc/lagda/Setoid/Algebras.lagda +++ b/docs/lagda/Setoid/Algebras.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Algebras/Basic.lagda b/docs/lagda/Setoid/Algebras/Basic.lagda similarity index 99% rename from doc/lagda/Setoid/Algebras/Basic.lagda rename to docs/lagda/Setoid/Algebras/Basic.lagda index 30c1e87d..b210c1d8 100644 --- a/doc/lagda/Setoid/Algebras/Basic.lagda +++ b/docs/lagda/Setoid/Algebras/Basic.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Algebras.Basic][] module of the [Agda Universal Algebra Libr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Setoid/Algebras/Congruences.lagda b/docs/lagda/Setoid/Algebras/Congruences.lagda similarity index 98% rename from doc/lagda/Setoid/Algebras/Congruences.lagda rename to docs/lagda/Setoid/Algebras/Congruences.lagda index d12daad2..3bf01718 100644 --- a/doc/lagda/Setoid/Algebras/Congruences.lagda +++ b/docs/lagda/Setoid/Algebras/Congruences.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Algebras.Congruences][] module of the [Agda Universal Algebr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Algebras/Products.lagda b/docs/lagda/Setoid/Algebras/Products.lagda similarity index 98% rename from doc/lagda/Setoid/Algebras/Products.lagda rename to docs/lagda/Setoid/Algebras/Products.lagda index 7b1a8312..b4012249 100644 --- a/doc/lagda/Setoid/Algebras/Products.lagda +++ b/docs/lagda/Setoid/Algebras/Products.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Algebras.Products][] module of the [Agda Universal Algebra L \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Functions.lagda b/docs/lagda/Setoid/Functions.lagda similarity index 93% rename from doc/lagda/Setoid/Functions.lagda rename to docs/lagda/Setoid/Functions.lagda index eef63c81..00a62469 100644 --- a/doc/lagda/Setoid/Functions.lagda +++ b/docs/lagda/Setoid/Functions.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Functions][] module of the [Agda Universal Algebra Library][ \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions where diff --git a/doc/lagda/Setoid/Functions/Basic.lagda b/docs/lagda/Setoid/Functions/Basic.lagda similarity index 97% rename from doc/lagda/Setoid/Functions/Basic.lagda rename to docs/lagda/Setoid/Functions/Basic.lagda index 18f2398f..fcd68bbf 100644 --- a/doc/lagda/Setoid/Functions/Basic.lagda +++ b/docs/lagda/Setoid/Functions/Basic.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Functions.Basic][] module of the [Agda Universal Algebra Lib \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions.Basic where diff --git a/doc/lagda/Setoid/Functions/Bijective.lagda b/docs/lagda/Setoid/Functions/Bijective.lagda similarity index 97% rename from doc/lagda/Setoid/Functions/Bijective.lagda rename to docs/lagda/Setoid/Functions/Bijective.lagda index 9571fbec..bbfd33cc 100644 --- a/doc/lagda/Setoid/Functions/Bijective.lagda +++ b/docs/lagda/Setoid/Functions/Bijective.lagda @@ -13,7 +13,7 @@ A *bijective function* from a setoid `𝑨 = (A, ≈₀)` to a setoid `𝑩 = (B \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Relation.Binary using ( Setoid ) diff --git a/doc/lagda/Setoid/Functions/Injective.lagda b/docs/lagda/Setoid/Functions/Injective.lagda similarity index 98% rename from doc/lagda/Setoid/Functions/Injective.lagda rename to docs/lagda/Setoid/Functions/Injective.lagda index da78c58d..e166b107 100644 --- a/doc/lagda/Setoid/Functions/Injective.lagda +++ b/docs/lagda/Setoid/Functions/Injective.lagda @@ -13,7 +13,7 @@ We say that a function `f : A → B` from one setoid (A , ≈₀) to another (B \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Relation.Binary using ( Setoid ) diff --git a/doc/lagda/Setoid/Functions/Inverses.lagda b/docs/lagda/Setoid/Functions/Inverses.lagda similarity index 99% rename from doc/lagda/Setoid/Functions/Inverses.lagda rename to docs/lagda/Setoid/Functions/Inverses.lagda index 1403ebaf..1e321e29 100644 --- a/doc/lagda/Setoid/Functions/Inverses.lagda +++ b/docs/lagda/Setoid/Functions/Inverses.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Functions.Inverses][] module of the [agda-algebras][] librar \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions.Inverses where diff --git a/doc/lagda/Setoid/Functions/Surjective.lagda b/docs/lagda/Setoid/Functions/Surjective.lagda similarity index 99% rename from doc/lagda/Setoid/Functions/Surjective.lagda rename to docs/lagda/Setoid/Functions/Surjective.lagda index 0e090c4b..de8ad851 100644 --- a/doc/lagda/Setoid/Functions/Surjective.lagda +++ b/docs/lagda/Setoid/Functions/Surjective.lagda @@ -13,7 +13,7 @@ A *surjective function* from a setoid `𝑨 = (A, ≈₀)` to a setoid `𝑩 = ( \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions.Surjective where diff --git a/doc/lagda/Setoid/Homomorphisms.lagda b/docs/lagda/Setoid/Homomorphisms.lagda similarity index 95% rename from doc/lagda/Setoid/Homomorphisms.lagda rename to docs/lagda/Setoid/Homomorphisms.lagda index da1c9dcb..66e16d93 100644 --- a/doc/lagda/Setoid/Homomorphisms.lagda +++ b/docs/lagda/Setoid/Homomorphisms.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms][] module of the [Agda Universal Algebra Libra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Homomorphisms/Basic.lagda b/docs/lagda/Setoid/Homomorphisms/Basic.lagda similarity index 98% rename from doc/lagda/Setoid/Homomorphisms/Basic.lagda rename to docs/lagda/Setoid/Homomorphisms/Basic.lagda index 384c70cd..1e57fa0f 100644 --- a/doc/lagda/Setoid/Homomorphisms/Basic.lagda +++ b/docs/lagda/Setoid/Homomorphisms/Basic.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.Basic][] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/doc/lagda/Setoid/Homomorphisms/Factor.lagda b/docs/lagda/Setoid/Homomorphisms/Factor.lagda similarity index 98% rename from doc/lagda/Setoid/Homomorphisms/Factor.lagda rename to docs/lagda/Setoid/Homomorphisms/Factor.lagda index f5224c22..eca33f37 100644 --- a/doc/lagda/Setoid/Homomorphisms/Factor.lagda +++ b/docs/lagda/Setoid/Homomorphisms/Factor.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.Factor][] module of the [Agda Universal Algebr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Homomorphisms/HomomorphicImages.lagda b/docs/lagda/Setoid/Homomorphisms/HomomorphicImages.lagda similarity index 99% rename from doc/lagda/Setoid/Homomorphisms/HomomorphicImages.lagda rename to docs/lagda/Setoid/Homomorphisms/HomomorphicImages.lagda index b32f8591..598dd6b4 100644 --- a/doc/lagda/Setoid/Homomorphisms/HomomorphicImages.lagda +++ b/docs/lagda/Setoid/Homomorphisms/HomomorphicImages.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.HomomorphicImages][] module of the [Agda Unive \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Homomorphisms/Isomorphisms.lagda b/docs/lagda/Setoid/Homomorphisms/Isomorphisms.lagda similarity index 99% rename from doc/lagda/Setoid/Homomorphisms/Isomorphisms.lagda rename to docs/lagda/Setoid/Homomorphisms/Isomorphisms.lagda index f5b77f49..bfeba081 100644 --- a/doc/lagda/Setoid/Homomorphisms/Isomorphisms.lagda +++ b/docs/lagda/Setoid/Homomorphisms/Isomorphisms.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.Factor][] module of the [Agda Universal Algebr \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Homomorphisms/Kernels.lagda b/docs/lagda/Setoid/Homomorphisms/Kernels.lagda similarity index 99% rename from doc/lagda/Setoid/Homomorphisms/Kernels.lagda rename to docs/lagda/Setoid/Homomorphisms/Kernels.lagda index cd4145cb..7b00bc0e 100644 --- a/doc/lagda/Setoid/Homomorphisms/Kernels.lagda +++ b/docs/lagda/Setoid/Homomorphisms/Kernels.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.Kernels][] module of the [Agda Universal Algeb \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Homomorphisms/Noether.lagda b/docs/lagda/Setoid/Homomorphisms/Noether.lagda similarity index 98% rename from doc/lagda/Setoid/Homomorphisms/Noether.lagda rename to docs/lagda/Setoid/Homomorphisms/Noether.lagda index d53cc31a..2f59f3e6 100644 --- a/doc/lagda/Setoid/Homomorphisms/Noether.lagda +++ b/docs/lagda/Setoid/Homomorphisms/Noether.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.Noether][] module of the [Agda Universal Algeb \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Homomorphisms/Products.lagda b/docs/lagda/Setoid/Homomorphisms/Products.lagda similarity index 98% rename from doc/lagda/Setoid/Homomorphisms/Products.lagda rename to docs/lagda/Setoid/Homomorphisms/Products.lagda index bbab381c..fbf0806f 100644 --- a/doc/lagda/Setoid/Homomorphisms/Products.lagda +++ b/docs/lagda/Setoid/Homomorphisms/Products.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.Products][] module of the [Agda Universal Alge \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Homomorphisms/Properties.lagda b/docs/lagda/Setoid/Homomorphisms/Properties.lagda similarity index 99% rename from doc/lagda/Setoid/Homomorphisms/Properties.lagda rename to docs/lagda/Setoid/Homomorphisms/Properties.lagda index 78bd9e6a..cb5d733d 100644 --- a/doc/lagda/Setoid/Homomorphisms/Properties.lagda +++ b/docs/lagda/Setoid/Homomorphisms/Properties.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Homomorphisms.Properties][] module of the [Agda Universal Al \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Relations.lagda b/docs/lagda/Setoid/Relations.lagda similarity index 92% rename from doc/lagda/Setoid/Relations.lagda rename to docs/lagda/Setoid/Relations.lagda index 0393bd84..5cf9e942 100644 --- a/doc/lagda/Setoid/Relations.lagda +++ b/docs/lagda/Setoid/Relations.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Relations][] module of the [Agda Universal Algebra Library][ \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Relations where diff --git a/doc/lagda/Setoid/Relations/Discrete.lagda b/docs/lagda/Setoid/Relations/Discrete.lagda similarity index 98% rename from doc/lagda/Setoid/Relations/Discrete.lagda rename to docs/lagda/Setoid/Relations/Discrete.lagda index 13a46320..5e2e88be 100644 --- a/doc/lagda/Setoid/Relations/Discrete.lagda +++ b/docs/lagda/Setoid/Relations/Discrete.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Relations.Discrete][] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Relations.Discrete where diff --git a/doc/lagda/Setoid/Relations/Quotients.lagda b/docs/lagda/Setoid/Relations/Quotients.lagda similarity index 98% rename from doc/lagda/Setoid/Relations/Quotients.lagda rename to docs/lagda/Setoid/Relations/Quotients.lagda index 16b7db44..f16672fa 100644 --- a/doc/lagda/Setoid/Relations/Quotients.lagda +++ b/docs/lagda/Setoid/Relations/Quotients.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Relations.Quotients][] module of the [Agda Universal Algebra \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Relations.Quotients where diff --git a/doc/lagda/Setoid/Subalgebras.lagda b/docs/lagda/Setoid/Subalgebras.lagda similarity index 94% rename from doc/lagda/Setoid/Subalgebras.lagda rename to docs/lagda/Setoid/Subalgebras.lagda index 392b960a..c14fd82e 100644 --- a/doc/lagda/Setoid/Subalgebras.lagda +++ b/docs/lagda/Setoid/Subalgebras.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Subalgebras][] module of the [Agda Universal Algebra Library \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Subalgebras/Properties.lagda b/docs/lagda/Setoid/Subalgebras/Properties.lagda similarity index 99% rename from doc/lagda/Setoid/Subalgebras/Properties.lagda rename to docs/lagda/Setoid/Subalgebras/Properties.lagda index d959e017..35eb75fc 100644 --- a/doc/lagda/Setoid/Subalgebras/Properties.lagda +++ b/docs/lagda/Setoid/Subalgebras/Properties.lagda @@ -12,7 +12,7 @@ This is the [Setoid.Subalgebras.Properties][] module of the [Agda Universal Alge \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Subalgebras/Subalgebras.lagda b/docs/lagda/Setoid/Subalgebras/Subalgebras.lagda similarity index 98% rename from doc/lagda/Setoid/Subalgebras/Subalgebras.lagda rename to docs/lagda/Setoid/Subalgebras/Subalgebras.lagda index 8bce973e..d0b2d455 100644 --- a/doc/lagda/Setoid/Subalgebras/Subalgebras.lagda +++ b/docs/lagda/Setoid/Subalgebras/Subalgebras.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Subalgebras.Subalgebras][] module of the [Agda Universal Alg \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Subalgebras/Subuniverses.lagda b/docs/lagda/Setoid/Subalgebras/Subuniverses.lagda similarity index 99% rename from doc/lagda/Setoid/Subalgebras/Subuniverses.lagda rename to docs/lagda/Setoid/Subalgebras/Subuniverses.lagda index e29a63d3..ff995c87 100644 --- a/doc/lagda/Setoid/Subalgebras/Subuniverses.lagda +++ b/docs/lagda/Setoid/Subalgebras/Subuniverses.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Subalgebras.Subuniverses][] module of the [Agda Universal Al \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Terms.lagda b/docs/lagda/Setoid/Terms.lagda similarity index 93% rename from doc/lagda/Setoid/Terms.lagda rename to docs/lagda/Setoid/Terms.lagda index ec59ee8a..321eeaa5 100644 --- a/doc/lagda/Setoid/Terms.lagda +++ b/docs/lagda/Setoid/Terms.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Terms][] module of the [Agda Universal Algebra Library][]. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Terms/Basic.lagda b/docs/lagda/Setoid/Terms/Basic.lagda similarity index 99% rename from doc/lagda/Setoid/Terms/Basic.lagda rename to docs/lagda/Setoid/Terms/Basic.lagda index 01ef4241..de5901fb 100644 --- a/doc/lagda/Setoid/Terms/Basic.lagda +++ b/docs/lagda/Setoid/Terms/Basic.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Terms.Basic][] module of the [Agda Universal Algebra Library \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Terms/Operations.lagda b/docs/lagda/Setoid/Terms/Operations.lagda similarity index 99% rename from doc/lagda/Setoid/Terms/Operations.lagda rename to docs/lagda/Setoid/Terms/Operations.lagda index 4e87efc8..c88909f9 100644 --- a/doc/lagda/Setoid/Terms/Operations.lagda +++ b/docs/lagda/Setoid/Terms/Operations.lagda @@ -13,7 +13,7 @@ Here we define *term operations* which are simply terms interpreted in a particu \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Terms/Properties.lagda b/docs/lagda/Setoid/Terms/Properties.lagda similarity index 99% rename from doc/lagda/Setoid/Terms/Properties.lagda rename to docs/lagda/Setoid/Terms/Properties.lagda index 973133b1..760b5f3f 100644 --- a/doc/lagda/Setoid/Terms/Properties.lagda +++ b/docs/lagda/Setoid/Terms/Properties.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Terms.Properties][] module of the [Agda Universal Algebra Li \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties.lagda b/docs/lagda/Setoid/Varieties.lagda similarity index 95% rename from doc/lagda/Setoid/Varieties.lagda rename to docs/lagda/Setoid/Varieties.lagda index 0e3ec24a..26073eb1 100644 --- a/doc/lagda/Setoid/Varieties.lagda +++ b/docs/lagda/Setoid/Varieties.lagda @@ -11,7 +11,7 @@ This is the [Setoid.Varieties][] module of the [Agda Universal Algebra Library][ \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties/Closure.lagda b/docs/lagda/Setoid/Varieties/Closure.lagda similarity index 99% rename from doc/lagda/Setoid/Varieties/Closure.lagda rename to docs/lagda/Setoid/Varieties/Closure.lagda index 23aac809..8d41b9b3 100644 --- a/doc/lagda/Setoid/Varieties/Closure.lagda +++ b/docs/lagda/Setoid/Varieties/Closure.lagda @@ -15,7 +15,7 @@ Fix a signature 𝑆, let 𝒦 be a class of 𝑆-algebras, and define \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties/EquationalLogic.lagda b/docs/lagda/Setoid/Varieties/EquationalLogic.lagda similarity index 99% rename from doc/lagda/Setoid/Varieties/EquationalLogic.lagda rename to docs/lagda/Setoid/Varieties/EquationalLogic.lagda index c32292f0..8785e50b 100644 --- a/doc/lagda/Setoid/Varieties/EquationalLogic.lagda +++ b/docs/lagda/Setoid/Varieties/EquationalLogic.lagda @@ -15,7 +15,7 @@ Because a class of structures has a different type than a single structure, we m \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties/FreeAlgebras.lagda b/docs/lagda/Setoid/Varieties/FreeAlgebras.lagda similarity index 99% rename from doc/lagda/Setoid/Varieties/FreeAlgebras.lagda rename to docs/lagda/Setoid/Varieties/FreeAlgebras.lagda index 45faef94..c9aa7704 100644 --- a/doc/lagda/Setoid/Varieties/FreeAlgebras.lagda +++ b/docs/lagda/Setoid/Varieties/FreeAlgebras.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties/HSP.lagda b/docs/lagda/Setoid/Varieties/HSP.lagda similarity index 99% rename from doc/lagda/Setoid/Varieties/HSP.lagda rename to docs/lagda/Setoid/Varieties/HSP.lagda index e64c1d90..dec3a883 100644 --- a/doc/lagda/Setoid/Varieties/HSP.lagda +++ b/docs/lagda/Setoid/Varieties/HSP.lagda @@ -9,7 +9,7 @@ author: "agda-algebras development team" \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties/Preservation.lagda b/docs/lagda/Setoid/Varieties/Preservation.lagda similarity index 99% rename from doc/lagda/Setoid/Varieties/Preservation.lagda rename to docs/lagda/Setoid/Varieties/Preservation.lagda index f21bef2b..c2d5784d 100644 --- a/doc/lagda/Setoid/Varieties/Preservation.lagda +++ b/docs/lagda/Setoid/Varieties/Preservation.lagda @@ -13,7 +13,7 @@ same identities. \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties/Properties.lagda b/docs/lagda/Setoid/Varieties/Properties.lagda similarity index 99% rename from doc/lagda/Setoid/Varieties/Properties.lagda rename to docs/lagda/Setoid/Varieties/Properties.lagda index bfcaac0e..8d535cf0 100644 --- a/doc/lagda/Setoid/Varieties/Properties.lagda +++ b/docs/lagda/Setoid/Varieties/Properties.lagda @@ -18,7 +18,7 @@ We prove some closure and invariance properties of the relation `⊧`. In parti \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/Setoid/Varieties/SoundAndComplete.lagda b/docs/lagda/Setoid/Varieties/SoundAndComplete.lagda similarity index 99% rename from doc/lagda/Setoid/Varieties/SoundAndComplete.lagda rename to docs/lagda/Setoid/Varieties/SoundAndComplete.lagda index bc99ce47..52f18432 100644 --- a/doc/lagda/Setoid/Varieties/SoundAndComplete.lagda +++ b/docs/lagda/Setoid/Varieties/SoundAndComplete.lagda @@ -13,7 +13,7 @@ This module is based on [Andreas Abel's Agda formalization of Birkhoff's complet \begin{code} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/doc/lagda/_includes/UALib.Links.md b/docs/lagda/_includes/UALib.Links.md similarity index 100% rename from doc/lagda/_includes/UALib.Links.md rename to docs/lagda/_includes/UALib.Links.md diff --git a/doc/lagda/_includes/UALib.Links.tex b/docs/lagda/_includes/UALib.Links.tex similarity index 100% rename from doc/lagda/_includes/UALib.Links.tex rename to docs/lagda/_includes/UALib.Links.tex diff --git a/doc/lagda/agda-algebras.lagda b/docs/lagda/agda-algebras.lagda similarity index 99% rename from doc/lagda/agda-algebras.lagda rename to docs/lagda/agda-algebras.lagda index e8bd2e80..f1cde44a 100644 --- a/doc/lagda/agda-algebras.lagda +++ b/docs/lagda/agda-algebras.lagda @@ -86,7 +86,7 @@ Cubical Agda. \begin{code}[hide] -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} \end{code} \begin{code} module agda-algebras where diff --git a/doc/papers/Everything.tex b/docs/papers/Everything.tex similarity index 100% rename from doc/papers/Everything.tex rename to docs/papers/Everything.tex diff --git a/doc/papers/EverythingFunc.tex b/docs/papers/EverythingFunc.tex similarity index 100% rename from doc/papers/EverythingFunc.tex rename to docs/papers/EverythingFunc.tex diff --git a/docs/papers/TYPES2021/README.md b/docs/papers/TYPES2021/README.md new file mode 100644 index 00000000..5c9ef242 --- /dev/null +++ b/docs/papers/TYPES2021/README.md @@ -0,0 +1,7 @@ +## docs/TYPES2021/README + +Here is the workflow used to develop the document `agda-hsp.pdf`. + +1. Edit/improve the literate Agda file `src/Demos/HSP.lagda`. +2. Invoke `agda --latex --latex-dir=docs/TYPES2021 src/Demos/HSP.lagda` from the main `agda-algebras` directory. +3. Invoke `pdflatex agda-hsp` from within the `docs/TYPES2021` directory. diff --git a/doc/papers/TYPES2021/abstract.tex b/docs/papers/TYPES2021/abstract.tex similarity index 100% rename from doc/papers/TYPES2021/abstract.tex rename to docs/papers/TYPES2021/abstract.tex diff --git a/doc/papers/TYPES2021/acknowledgments.tex b/docs/papers/TYPES2021/acknowledgments.tex similarity index 100% rename from doc/papers/TYPES2021/acknowledgments.tex rename to docs/papers/TYPES2021/acknowledgments.tex diff --git a/doc/papers/TYPES2021/agda-hsp.tex b/docs/papers/TYPES2021/agda-hsp.tex similarity index 100% rename from doc/papers/TYPES2021/agda-hsp.tex rename to docs/papers/TYPES2021/agda-hsp.tex diff --git a/doc/papers/TYPES2021/agda-wjd.sty b/docs/papers/TYPES2021/agda-wjd.sty similarity index 100% rename from doc/papers/TYPES2021/agda-wjd.sty rename to docs/papers/TYPES2021/agda-wjd.sty diff --git a/doc/papers/TYPES2021/agda.sty b/docs/papers/TYPES2021/agda.sty similarity index 100% rename from doc/papers/TYPES2021/agda.sty rename to docs/papers/TYPES2021/agda.sty diff --git a/doc/papers/TYPES2021/by-sa.png b/docs/papers/TYPES2021/by-sa.png similarity index 100% rename from doc/papers/TYPES2021/by-sa.png rename to docs/papers/TYPES2021/by-sa.png diff --git a/doc/papers/TYPES2021/cc-by.pdf b/docs/papers/TYPES2021/cc-by.pdf similarity index 100% rename from doc/papers/TYPES2021/cc-by.pdf rename to docs/papers/TYPES2021/cc-by.pdf diff --git a/doc/papers/TYPES2021/lipics-logo-bw.pdf b/docs/papers/TYPES2021/lipics-logo-bw.pdf similarity index 100% rename from doc/papers/TYPES2021/lipics-logo-bw.pdf rename to docs/papers/TYPES2021/lipics-logo-bw.pdf diff --git a/doc/papers/TYPES2021/lipics-v2021.cls b/docs/papers/TYPES2021/lipics-v2021.cls similarity index 100% rename from doc/papers/TYPES2021/lipics-v2021.cls rename to docs/papers/TYPES2021/lipics-v2021.cls diff --git a/doc/papers/TYPES2021/orcid.pdf b/docs/papers/TYPES2021/orcid.pdf similarity index 100% rename from doc/papers/TYPES2021/orcid.pdf rename to docs/papers/TYPES2021/orcid.pdf diff --git a/doc/papers/TYPES2021/proof-dashed.sty b/docs/papers/TYPES2021/proof-dashed.sty similarity index 100% rename from doc/papers/TYPES2021/proof-dashed.sty rename to docs/papers/TYPES2021/proof-dashed.sty diff --git a/doc/papers/TYPES2021/referee/report-summary.md b/docs/papers/TYPES2021/referee/report-summary.md similarity index 100% rename from doc/papers/TYPES2021/referee/report-summary.md rename to docs/papers/TYPES2021/referee/report-summary.md diff --git a/doc/papers/TYPES2021/referee/review2-R2.md b/docs/papers/TYPES2021/referee/review2-R2.md similarity index 100% rename from doc/papers/TYPES2021/referee/review2-R2.md rename to docs/papers/TYPES2021/referee/review2-R2.md diff --git a/doc/papers/TYPES2021/ualib_refs.bib b/docs/papers/TYPES2021/ualib_refs.bib similarity index 100% rename from doc/papers/TYPES2021/ualib_refs.bib rename to docs/papers/TYPES2021/ualib_refs.bib diff --git a/doc/papers/TYPES2021/unixode.sty b/docs/papers/TYPES2021/unixode.sty similarity index 100% rename from doc/papers/TYPES2021/unixode.sty rename to docs/papers/TYPES2021/unixode.sty diff --git a/doc/papers/TYPES2021/wjd.sty b/docs/papers/TYPES2021/wjd.sty similarity index 98% rename from doc/papers/TYPES2021/wjd.sty rename to docs/papers/TYPES2021/wjd.sty index bded8f58..d5359c3d 100644 --- a/doc/papers/TYPES2021/wjd.sty +++ b/docs/papers/TYPES2021/wjd.sty @@ -37,7 +37,7 @@ \newenvironment{Shaded}{}{} \newenvironment{Highlighting}[1][]{}{} \providecommand{\PreprocessorTok}[1]{% - \{-\# OPTIONS --without-K --exact-split --allow-unsolved-metas \#-\}} + \{-\# OPTIONS --cubical-compatible --exact-split --allow-unsolved-metas \#-\}} \newcommand\defn[1]{\textit{#1}} \newcommand\agdaalgebras{\href{https://ualib.org/agda-algebras}{agda-algebras}\xspace} \newcommand\agdaalgebrashtmldocs{\href{https://ualib.org/agda-algebras}{agda-algebras html docs}\xspace} @@ -77,7 +77,7 @@ \newcommand\DemosHSPlagda{\href{https://github.com/ualib/agda-algebras/blob/1718cef0676675b169426a31f39c60749359b8f9/src/Demos/HSP.lagda}{\textsf{Demos.HSP}}\xspace} \newcommand\HSPlagda{\href{https://github.com/ualib/agda-algebras/blob/1718cef0676675b169426a31f39c60749359b8f9/src/Demos/HSP.lagda}{\textsf{src/Demos/HSP.lagda}}\xspace} -\newcommand\agdahsp{\href{https://github.com/ualib/agda-algebras/blob/master/doc/TYPES2021/agda-hsp.tex}{\textsf{agda-hsp.tex}}\xspace} +\newcommand\agdahsp{\href{https://github.com/ualib/agda-algebras/blob/master/docs/TYPES2021/agda-hsp.tex}{\textsf{agda-hsp.tex}}\xspace} % -- Algebras \newcommand\gitAlgebras{\href{https://github.com/ualib/agda-algebras/-/blob/master/src/Algebras.lagda}{\textsf{Algebras.lagda}}} diff --git a/doc/papers/acknowledgements.tex b/docs/papers/acknowledgements.tex similarity index 100% rename from doc/papers/acknowledgements.tex rename to docs/papers/acknowledgements.tex diff --git a/doc/papers/agda-algebras-arXiv-30Nov2021.pdf b/docs/papers/agda-algebras-arXiv-30Nov2021.pdf similarity index 100% rename from doc/papers/agda-algebras-arXiv-30Nov2021.pdf rename to docs/papers/agda-algebras-arXiv-30Nov2021.pdf diff --git a/doc/papers/agda-algebras.tex b/docs/papers/agda-algebras.tex similarity index 100% rename from doc/papers/agda-algebras.tex rename to docs/papers/agda-algebras.tex diff --git a/doc/papers/agda.sty b/docs/papers/agda.sty similarity index 100% rename from doc/papers/agda.sty rename to docs/papers/agda.sty diff --git a/doc/papers/by-sa.png b/docs/papers/by-sa.png similarity index 100% rename from doc/papers/by-sa.png rename to docs/papers/by-sa.png diff --git a/doc/papers/lambda.jpg b/docs/papers/lambda.jpg similarity index 100% rename from doc/papers/lambda.jpg rename to docs/papers/lambda.jpg diff --git a/doc/papers/lipics-logo-bw.pdf b/docs/papers/lipics-logo-bw.pdf similarity index 100% rename from doc/papers/lipics-logo-bw.pdf rename to docs/papers/lipics-logo-bw.pdf diff --git a/doc/papers/lipics-v2021-wjd.cls b/docs/papers/lipics-v2021-wjd.cls similarity index 100% rename from doc/papers/lipics-v2021-wjd.cls rename to docs/papers/lipics-v2021-wjd.cls diff --git a/doc/papers/lipics-v2021.cls b/docs/papers/lipics-v2021.cls similarity index 100% rename from doc/papers/lipics-v2021.cls rename to docs/papers/lipics-v2021.cls diff --git a/doc/papers/makefile b/docs/papers/makefile similarity index 100% rename from doc/papers/makefile rename to docs/papers/makefile diff --git a/doc/papers/orcid.pdf b/docs/papers/orcid.pdf similarity index 100% rename from doc/papers/orcid.pdf rename to docs/papers/orcid.pdf diff --git a/doc/papers/proof-dashed.sty b/docs/papers/proof-dashed.sty similarity index 100% rename from doc/papers/proof-dashed.sty rename to docs/papers/proof-dashed.sty diff --git a/doc/papers/stereotypeb-avatar.png b/docs/papers/stereotypeb-avatar.png similarity index 100% rename from doc/papers/stereotypeb-avatar.png rename to docs/papers/stereotypeb-avatar.png diff --git a/doc/papers/ualib_refs.bib b/docs/papers/ualib_refs.bib similarity index 100% rename from doc/papers/ualib_refs.bib rename to docs/papers/ualib_refs.bib diff --git a/doc/papers/unixode.sty b/docs/papers/unixode.sty similarity index 100% rename from doc/papers/unixode.sty rename to docs/papers/unixode.sty diff --git a/doc/papers/wjd.sty b/docs/papers/wjd.sty similarity index 99% rename from doc/papers/wjd.sty rename to docs/papers/wjd.sty index 374ae184..3d3fe447 100644 --- a/doc/papers/wjd.sty +++ b/docs/papers/wjd.sty @@ -37,7 +37,7 @@ \newenvironment{Shaded}{}{} \newenvironment{Highlighting}[1][]{}{} \providecommand{\PreprocessorTok}[1]{% - \{-\# OPTIONS --without-K --exact-split --allow-unsolved-metas \#-\}} + \{-\# OPTIONS --cubical-compatible --exact-split --allow-unsolved-metas \#-\}} \newcommand\defn[1]{\textit{#1}} \newcommand\agdaalgebras{\href{https://ualib.github.io/agda-algebras}{agda-algebras}\xspace} \newcommand\agdaalgebrashtmldocs{\href{https://ualib.github.io/agda-algebras}{agda-algebras html docs}\xspace} diff --git a/nix/flake.lock b/flake.lock similarity index 64% rename from nix/flake.lock rename to flake.lock index 99f9253a..682004de 100644 --- a/nix/flake.lock +++ b/flake.lock @@ -2,15 +2,16 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1715955161, - "narHash": "sha256-BffAhO1WYBeZO6l95MbYd+hBIcPvIsCjZgFY7QeHpX0=", + "lastModified": 1776169885, + "narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0f2503dfa5a589f5e3c8e4b294453ed8829c2c7e", + "rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..b9376de8 --- /dev/null +++ b/flake.nix @@ -0,0 +1,175 @@ +# ============================================================================= +# agda-algebras — Nix flake +# +# File: flake.nix +# +# Goals: +# +# 1. `nix develop` from the repo root drops you in a shell with exactly the +# Agda / stdlib versions agda-algebras 2.0 targets. No ~/.config/agda +# configuration required (or consulted). +# 2. Reproducibility via flake.lock. The nixpkgs input pin *is* the Agda/ +# stdlib pin. +# 3. The shell writes a project-local AGDA_DIR that overrides anything in +# the user's ~/.config/agda/ (e.g. a globally-registered stdlib 2.2). +# +# Pinning Policy: +# +# A single nixpkgs input on nixos-unstable supplies both Agda (2.8.0) and +# its standard library (2.3). `nix flake update` pulls in whatever +# nixos-unstable has at update time — use deliberately. +# +# If/when nixpkgs moves its Agda or stdlib past our target versions before +# agda-algebras is ready to follow, the right fix is to either +# (a) stop calling `nix flake update`, or +# (b) add `overrideAttrs` block here pinning stdlib's `src` to a specific v2.3 tag. +# +# Library Resolution: +# +# agda-stdlib's own standard-library.agda-lib at tag v2.3 declares +# `name: standard-library-2.3`. Agda resolves library dependencies as: +# - `depend: standard-library` — any version +# - `depend: standard-library-2.3` — exact match required +# +# Division of responsibilities: +# - flake.lock pins the stdlib source of truth. +# - --library standard-library (wrapper) tracks whatever the lock pins. +# - depend: standard-library-2.3 (.agda-lib) enforces the minimum. +# +# Upgrading past 2.3 is a two-step process: bump the .agda-lib floor first, +# then `nix flake update`. Skipping the first step produces a clear +# dependency-resolution error at `make check` time, not a silent upgrade. +# ============================================================================= +{ + description = "agda-algebras — a formalization of Universal Algebra in Agda"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = { self, nixpkgs }: + let + # ---- Supported systems ---------------------------------------------- + systems = [ + "x86_64-linux" # e.g., a ThinkPad X1 + "aarch64-linux" # e.g., a Jetson AGX Orin + "x86_64-darwin" + "aarch64-darwin" + ]; + + # Per-system attrset: { system = f { pkgs }; }. + # Matches the pattern used in the agda-native-air flake. + forAllSystems = f: + nixpkgs.lib.genAttrs systems (system: + f { pkgs = import nixpkgs { inherit system; }; }); + + # ---- Agda + stdlib -------------------------------------------------- + # Agda and its stdlib MUST be resolved from the same package set; + # agdaPackages.standard-library is built against pkgs.agda. + mkAgdaEnv = pkgs: pkgs.agda.withPackages (p: [ p.standard-library ]); + + # ---- Project-local AGDA_DIR + agda() wrapper ------------------------ + # Writes $ROOT/.agda/{libraries,defaults} and defines an agda() shell + # function that bypasses the Nix wrapper's baked-in --library-file by + # passing --library-file again on the command line (Agda's last-flag- + # wins rule). This also passes --no-default-libraries so the user's + # ~/.config/agda/defaults (if any) cannot contribute. + mkAgdaShellSetup = agdaStdlibPkg: '' + # ---- Locate repo root (git, with $PWD fallback) ---- + ROOT="$PWD" + if command -v git >/dev/null 2>&1 && git rev-parse --show-toplevel >/dev/null 2>&1; then + ROOT="$(git rev-parse --show-toplevel)" + fi + + # ---- AGDA_DIR: project-local, gitignored ---- + export AGDA_DIR="$ROOT/.agda" + mkdir -p "$AGDA_DIR" + + # libraries file: absolute paths to .agda-lib files Agda should know + # about in this shell. Order doesn't matter; both are resolvable. + { + echo "${agdaStdlibPkg}/standard-library.agda-lib" + echo "$ROOT/agda-algebras.agda-lib" + } > "$AGDA_DIR/libraries" + + # defaults file: libraries auto-loaded when a file has no .agda-lib + # ancestor. We only put stdlib here; agda-algebras is picked up via + # auto-discovery from the repo-root .agda-lib. + echo "standard-library" > "$AGDA_DIR/defaults" + + # Capture the absolute path to the Nix-wrapped agda BEFORE we prepend + # our own wrapper to PATH; otherwise the script would recursively call + # itself. + NIX_AGDA="$(command -v agda)" + mkdir -p "$AGDA_DIR/bin" + cat > "$AGDA_DIR/bin/agda" </dev/null | head -n1))" + echo " stdlib : ${stdlibVer}" + echo " AGDA_DIR : $AGDA_DIR" + echo " repo : $ROOT" + echo "" + + # Version-floor sanity checks. These are warnings, not errors — + # a higher stdlib/Agda may still work, and the user has opted + # into it via `nix flake update`. + case "${agdaVer}" in + 2.8.*) : ;; + *) echo "⚠ expected Agda 2.8.x, got ${agdaVer}" ;; + esac + case "${stdlibVer}" in + 2.3*) : ;; + *) echo "⚠ expected standard-library 2.3, got ${stdlibVer}" ;; + esac + ''; + }; + }); + + # ---- Packages (handy for CI and downstream flakes) ------------------- + packages = forAllSystems ({ pkgs }: { + default = mkAgdaEnv pkgs; + }); + + # ---- Minimal overlay for downstream consumers ------------------------ + overlays.default = final: _prev: { + agda-algebras-agda = mkAgdaEnv final; + }; + }; +} diff --git a/nix/README_NIXOS.md b/nix/README_NIXOS.md deleted file mode 100644 index 27b89fed..00000000 --- a/nix/README_NIXOS.md +++ /dev/null @@ -1,114 +0,0 @@ -## Using the `agda-algebras` library as a Nixpkgs overlay. - -### Detailed Instructions - -1. **Add the Flake URL to Inputs in Your `flake.nix`**: - To use the `agda-algebras` overlay, you need to reference the flake in your project's `flake.nix` file. This allows Nix to fetch the overlay from your GitHub repository (or another location where the flake is hosted). - - Here's an example `flake.nix` for a user project: - - ```nix - { - description = "Example project using the agda-algebras overlay"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs"; - agda-algebras.url = "github:yourusername/agda-algebras"; # Replace with your actual GitHub username and repository name - }; - - outputs = { self, nixpkgs, agda-algebras }: - let - # Import Nixpkgs with the agda-algebras overlay applied. - pkgs = import nixpkgs { overlays = [ agda-algebras.overlay ]; }; - in - { - # Define a development shell environment that includes agda-algebras. - devShells.default = pkgs.mkShell { - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - }; - - # Optional: Define other outputs such as packages, apps, etc. - packages.default = pkgs.stdenv.mkDerivation { - name = "example-package"; - src = ./.; - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - }; - }; - } - ``` - -2. **Use the Overlay in Your Nixpkgs Configuration**: - The above example already includes the necessary configuration to use the overlay. By adding `agda-algebras.overlay` to the `overlays` list when importing `nixpkgs`, you ensure that `agda-algebras` is available as part of `haskellPackages`. - -3. **Install the Library via `haskellPackages.agda-algebras`**: - With the overlay applied, you can reference `haskellPackages.agda-algebras` in your `buildInputs`. This makes the library available in your development environment or for use in building other packages. - - ### Example Usage in a Development Shell - - To enter a development shell that includes the `agda-algebras` library, simply run: - - ```sh - nix develop - ``` - - This command will drop you into a shell environment where `haskellPackages.agda-algebras` is available, along with all other dependencies specified in the `devShell` section. - -### Summary of Instructions - -1. **Add the Flake URL**: - In your project's `flake.nix`, add the URL of the `agda-algebras` flake to the `inputs` section. - - ```nix - inputs.agda-algebras.url = "github:yourusername/agda-algebras"; - ``` - -2. **Use the Overlay**: - Apply the `agda-algebras` overlay by adding it to the `overlays` list when importing `nixpkgs`. - - ```nix - pkgs = import nixpkgs { overlays = [ agda-algebras.overlay ]; }; - ``` - -3. **Install the Library**: - Reference the library in your `buildInputs` to include it in your environment. - - ```nix - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - ``` - -### Complete Example of `flake.nix` for User Project - -Here's the complete `flake.nix` file for a hypothetical user project using the `agda-algebras` overlay: - -```nix -{ - description = "Example project using the agda-algebras overlay"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs"; - agda-algebras.url = "github:yourusername/agda-algebras"; # Replace with your actual GitHub username and repository name - }; - - outputs = { self, nixpkgs, agda-algebras }: - let - # Import Nixpkgs with the agda-algebras overlay applied. - pkgs = import nixpkgs { overlays = [ agda-algebras.overlay ]; }; - in - { - # Define a development shell environment that includes agda-algebras. - devShells.default = pkgs.mkShell { - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - }; - - # Optional: Define other outputs such as packages, apps, etc. - packages.default = pkgs.stdenv.mkDerivation { - name = "example-package"; - src = ./.; - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - }; - }; -} -``` - -By following these detailed instructions, users can easily integrate the `agda-algebras` library into their Nix-based projects using the overlay mechanism. - diff --git a/nix/default.nix b/nix/default.nix deleted file mode 100644 index f4011253..00000000 --- a/nix/default.nix +++ /dev/null @@ -1,38 +0,0 @@ -# default.nix -# This file sets up a Nix shell for the agda-algebras project, providing -# all the necessary dependencies, such as Agda and the Agda standard library. -# Users can enter this environment by running `nix-shell` in the agda-algebras -# project directory. - -# Import the Nix package set. -{ pkgs ? import {} }: - -# Define a shell environment using pkgs.mkShell. -pkgs.mkShell { - # List of dependencies to include in the shell environment. - buildInputs = [ - pkgs.agda # The Agda programming language. - pkgs.agdaPackages.standard-library # The Agda standard library. - ]; - - # The AGDA_LIBS environment variable tells Agda where to find the project-specific library. - AGDA_LIBS = "${./agda-algebras.agda-lib}"; -} - -# Usage: -# 1. Ensure you have Nix installed: https://nixos.org/download.html -# 2. Clone the project: git clone -# 3. Navigate to the project directory: cd agda-algebras -# 4. Enter the Nix shell environment: nix-shell -# This will drop you into a shell with Agda, its standard library, and agda-algebras configured. - -# More details: -# + Using `default.nix` -# + This is the traditional method for setting up the environment. -# + In the project directory, run `nix-shell`. -# + This command will drop you into a shell where Agda and the standard library are available and configured. -# + Using `flake.nix`: -# + This method is for those who want the benefits of flakes, including better reproducibility and versioning. -# + Enable flakes by adding `experimental-features = nix-command flakes` to your `~/.config/nix/nix.conf`. -# + In the project directory, run `nix develop`. -# + This command will drop you into a development environment with Agda and the standard library configured. diff --git a/nix/flake.nix b/nix/flake.nix deleted file mode 100644 index fa5ccc1b..00000000 --- a/nix/flake.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ - description = "Agda project with standard library and agda-algebras library"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs"; - }; - - outputs = { self, nixpkgs }: { - # Define the overlay that adds the agda-algebras library to haskellPackages. - overlay = final: prev: { - haskellPackages = prev.haskellPackages // { - agda-algebras = final.haskell.lib.makeHaskellPackage { - pname = "agda-algebras"; - version = "0.1.0"; - src = self; - libraryHaskellDepends = [ prev.agda prev.agdaPackages.standard-library ]; - license = final.lib.licenses.mit; - description = "Agda project with standard library and agda-algebras library"; - homepage = "https://github.com/ualib/agda-algebras"; # Replace with your actual GitHub username and repository name - }; - }; - }; - - # Define devShells for each system. - devShells = { - x86_64-linux = let - pkgs = import nixpkgs { - overlays = [ self.overlay ]; - }; - in pkgs.mkShell { - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - - # Set the AGDA_LIBS environment variable to point to the .agda-lib file. - AGDA_LIBS = "${self}/agda-algebras.agda-lib"; - }; - - aarch64-linux = let - pkgs = import nixpkgs { - overlays = [ self.overlay ]; - }; - in pkgs.mkShell { - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - - # Set the AGDA_LIBS environment variable to point to the .agda-lib file. - AGDA_LIBS = "${self}/agda-algebras.agda-lib"; - }; - }; - - # Optionally, define packages if needed. - packages = { - x86_64-linux = let - pkgs = import nixpkgs { - overlays = [ self.overlay ]; - }; - in pkgs.stdenv.mkDerivation { - name = "agda-algebras"; - src = self; - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - }; - - aarch64-linux = let - pkgs = import nixpkgs { - overlays = [ self.overlay ]; - }; - in pkgs.stdenv.mkDerivation { - name = "agda-algebras"; - src = self; - buildInputs = [ pkgs.haskellPackages.agda-algebras ]; - }; - }; - }; -} - -# Usage: -# 1. Ensure Nix is installed on your system. -# 2. Enable flakes by adding 'experimental-features = nix-command flakes' to your ~/.config/nix/nix.conf. -# 3. Navigate to the project directory. -# 4. Run `nix develop` to enter the development environment with Agda and its standard library configured. - -# To use the agda-algebras library as a Nixpkgs overlay: -# 1. Add the flake URL to your inputs in your flake.nix. -# 2. Use the overlay in your nixpkgs configuration. -# 3. Install the library via `haskellPackages.agda-algebras`. diff --git a/scripts/README.md b/scripts/README.md index d4898046..3b0cbfcc 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -16,33 +16,33 @@ from a single markdown file using the GitHub API. The following commands assume the GitHub project/issue generation script is at `scripts/gh_project_populate.py` and the Markdown file containing the -label/project/issue descriptions is `doc/GITHUB_PROJECT.md`. +label/project/issue descriptions is `docs/GITHUB_PROJECT.md`. + Dry run — see what would be created (from the main project directory). ```zsh - python3 scripts/gh_project_populate.py doc/GITHUB_PROJECT.md --repo ualib/agda-algebras --dry-run + python3 scripts/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --dry-run ``` + Create everything (will prompt for confirmation). ```zsh - python3 scripts/gh_project_populate.py doc/GITHUB_PROJECT.md --repo ualib/agda-algebras + python3 scripts/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras ``` + Or create in stages. ```zsh - python3 scripts/gh_project_populate.py doc/GITHUB_PROJECT.md --repo ualib/agda-algebras --labels-only - python3 scripts/gh_project_populate.py doc/GITHUB_PROJECT.md --repo ualib/agda-algebras --milestones-only - python3 scripts/gh_project_populate.py doc/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only + python3 scripts/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --labels-only + python3 scripts/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --milestones-only + python3 scripts/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only ``` + Resume if interrupted (e.g., start from issue M1-3). ```zsh - python3 scripts/gh_project_populate.py doc/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only --start-from M1-3 + python3 scripts/gh_project_populate.py docs/GITHUB_PROJECT.md --repo ualib/agda-algebras --issues-only --start-from M1-3 ``` ### Notes diff --git a/src/Base.agda b/src/Base.agda index a2ceba00..156e5824 100644 --- a/src/Base.agda +++ b/src/Base.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base where diff --git a/src/Base/Adjunction.agda b/src/Base/Adjunction.agda index 8a071a03..be3131e7 100644 --- a/src/Base/Adjunction.agda +++ b/src/Base/Adjunction.agda @@ -1,4 +1,4 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction where diff --git a/src/Base/Adjunction/Closure.agda b/src/Base/Adjunction/Closure.agda index 08a42aa0..be5a67d9 100644 --- a/src/Base/Adjunction/Closure.agda +++ b/src/Base/Adjunction/Closure.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction.Closure where diff --git a/src/Base/Adjunction/Galois.agda b/src/Base/Adjunction/Galois.agda index 2fd672ea..5038d5b1 100644 --- a/src/Base/Adjunction/Galois.agda +++ b/src/Base/Adjunction/Galois.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction.Galois where diff --git a/src/Base/Adjunction/Residuation.agda b/src/Base/Adjunction/Residuation.agda index c17a7d06..c0e532ac 100644 --- a/src/Base/Adjunction/Residuation.agda +++ b/src/Base/Adjunction/Residuation.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Adjunction.Residuation where diff --git a/src/Base/Algebras.agda b/src/Base/Algebras.agda index c8899f4d..e728abdf 100644 --- a/src/Base/Algebras.agda +++ b/src/Base/Algebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Algebras/Basic.agda b/src/Base/Algebras/Basic.agda index d1ad0dc8..789cd8ea 100644 --- a/src/Base/Algebras/Basic.agda +++ b/src/Base/Algebras/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Algebras/Congruences.agda b/src/Base/Algebras/Congruences.agda index 320bff4d..d6bc72d7 100644 --- a/src/Base/Algebras/Congruences.agda +++ b/src/Base/Algebras/Congruences.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Algebras/Products.agda b/src/Base/Algebras/Products.agda index 133f826a..d02fa055 100644 --- a/src/Base/Algebras/Products.agda +++ b/src/Base/Algebras/Products.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Categories.agda b/src/Base/Categories.agda index 48eaa893..598992a6 100644 --- a/src/Base/Categories.agda +++ b/src/Base/Categories.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Categories where diff --git a/src/Base/Categories/Functors.agda b/src/Base/Categories/Functors.agda index dbe33ce4..8da99816 100644 --- a/src/Base/Categories/Functors.agda +++ b/src/Base/Categories/Functors.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Categories.Functors where diff --git a/src/Base/Complexity.agda b/src/Base/Complexity.agda index 7b90ab86..63652a5c 100644 --- a/src/Base/Complexity.agda +++ b/src/Base/Complexity.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Complexity where diff --git a/src/Base/Complexity/Basic.agda b/src/Base/Complexity/Basic.agda index 63fa100e..84e47201 100644 --- a/src/Base/Complexity/Basic.agda +++ b/src/Base/Complexity/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Complexity.Basic where diff --git a/src/Base/Complexity/CSP.agda b/src/Base/Complexity/CSP.agda index 9dc87502..0abd2a6a 100644 --- a/src/Base/Complexity/CSP.agda +++ b/src/Base/Complexity/CSP.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Equality.agda b/src/Base/Equality.agda index 4729cb29..2c7a2f62 100644 --- a/src/Base/Equality.agda +++ b/src/Base/Equality.agda @@ -1,4 +1,4 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality where diff --git a/src/Base/Equality/Extensionality.agda b/src/Base/Equality/Extensionality.agda index c0bd4fbf..eb8bec30 100644 --- a/src/Base/Equality/Extensionality.agda +++ b/src/Base/Equality/Extensionality.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality.Extensionality where diff --git a/src/Base/Equality/Truncation.agda b/src/Base/Equality/Truncation.agda index da2bfe11..3c208e10 100644 --- a/src/Base/Equality/Truncation.agda +++ b/src/Base/Equality/Truncation.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality.Truncation where diff --git a/src/Base/Equality/Welldefined.agda b/src/Base/Equality/Welldefined.agda index 7e3306cb..f9afa536 100644 --- a/src/Base/Equality/Welldefined.agda +++ b/src/Base/Equality/Welldefined.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Equality.Welldefined where diff --git a/src/Base/Functions.agda b/src/Base/Functions.agda index 74364bb1..219deb9e 100644 --- a/src/Base/Functions.agda +++ b/src/Base/Functions.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions where diff --git a/src/Base/Functions/Injective.agda b/src/Base/Functions/Injective.agda index 934f5c10..8806819b 100644 --- a/src/Base/Functions/Injective.agda +++ b/src/Base/Functions/Injective.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Injective where diff --git a/src/Base/Functions/Inverses.agda b/src/Base/Functions/Inverses.agda index 2529b38e..df958aef 100644 --- a/src/Base/Functions/Inverses.agda +++ b/src/Base/Functions/Inverses.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Inverses where open import Agda.Primitive using () renaming ( Set to Type ) diff --git a/src/Base/Functions/Surjective.agda b/src/Base/Functions/Surjective.agda index 870e78ae..67d1d284 100644 --- a/src/Base/Functions/Surjective.agda +++ b/src/Base/Functions/Surjective.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Surjective where open import Agda.Primitive using () renaming ( Set to Type ) diff --git a/src/Base/Functions/Transformers.agda b/src/Base/Functions/Transformers.agda index db0eeb94..d6e7fa7e 100644 --- a/src/Base/Functions/Transformers.agda +++ b/src/Base/Functions/Transformers.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Functions.Transformers where diff --git a/src/Base/Homomorphisms.agda b/src/Base/Homomorphisms.agda index b4968807..b6e5162c 100644 --- a/src/Base/Homomorphisms.agda +++ b/src/Base/Homomorphisms.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Homomorphisms/Basic.agda b/src/Base/Homomorphisms/Basic.agda index 3f7211f1..e6fdb063 100644 --- a/src/Base/Homomorphisms/Basic.agda +++ b/src/Base/Homomorphisms/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature; 𝓞 ; 𝓥 ) diff --git a/src/Base/Homomorphisms/Factor.agda b/src/Base/Homomorphisms/Factor.agda index 80c476d6..0248f9ee 100644 --- a/src/Base/Homomorphisms/Factor.agda +++ b/src/Base/Homomorphisms/Factor.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Homomorphisms/HomomorphicImages.agda b/src/Base/Homomorphisms/HomomorphicImages.agda index cf39c6ff..d01a8ddb 100644 --- a/src/Base/Homomorphisms/HomomorphicImages.agda +++ b/src/Base/Homomorphisms/HomomorphicImages.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Homomorphisms/Isomorphisms.agda b/src/Base/Homomorphisms/Isomorphisms.agda index 2ae85906..b2541e62 100644 --- a/src/Base/Homomorphisms/Isomorphisms.agda +++ b/src/Base/Homomorphisms/Isomorphisms.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Homomorphisms/Kernels.agda b/src/Base/Homomorphisms/Kernels.agda index 1cc2bcb6..2b039c81 100644 --- a/src/Base/Homomorphisms/Kernels.agda +++ b/src/Base/Homomorphisms/Kernels.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature; 𝓞 ; 𝓥 ) diff --git a/src/Base/Homomorphisms/Noether.agda b/src/Base/Homomorphisms/Noether.agda index 6d0dfd9d..80c6b4c1 100644 --- a/src/Base/Homomorphisms/Noether.agda +++ b/src/Base/Homomorphisms/Noether.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Homomorphisms/Products.agda b/src/Base/Homomorphisms/Products.agda index 1819cdb7..0d8e414c 100644 --- a/src/Base/Homomorphisms/Products.agda +++ b/src/Base/Homomorphisms/Products.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Homomorphisms/Properties.agda b/src/Base/Homomorphisms/Properties.agda index 00d1fad1..6a185a4a 100644 --- a/src/Base/Homomorphisms/Properties.agda +++ b/src/Base/Homomorphisms/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Relations.agda b/src/Base/Relations.agda index d1eff242..10ca0e06 100644 --- a/src/Base/Relations.agda +++ b/src/Base/Relations.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations where diff --git a/src/Base/Relations/Continuous.agda b/src/Base/Relations/Continuous.agda index 9348a03e..8a53ac68 100644 --- a/src/Base/Relations/Continuous.agda +++ b/src/Base/Relations/Continuous.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Continuous where diff --git a/src/Base/Relations/Discrete.agda b/src/Base/Relations/Discrete.agda index 0bc0d88d..fd53027a 100644 --- a/src/Base/Relations/Discrete.agda +++ b/src/Base/Relations/Discrete.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Discrete where diff --git a/src/Base/Relations/Properties.agda b/src/Base/Relations/Properties.agda index f68be17a..6d013859 100644 --- a/src/Base/Relations/Properties.agda +++ b/src/Base/Relations/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Properties where diff --git a/src/Base/Relations/Quotients.agda b/src/Base/Relations/Quotients.agda index ee53066f..8807681c 100644 --- a/src/Base/Relations/Quotients.agda +++ b/src/Base/Relations/Quotients.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Relations.Quotients where diff --git a/src/Base/Structures.agda b/src/Base/Structures.agda index fd023d2f..9a417b3e 100644 --- a/src/Base/Structures.agda +++ b/src/Base/Structures.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures where diff --git a/src/Base/Structures/Basic.agda b/src/Base/Structures/Basic.agda index 0d54772a..851a4a2e 100644 --- a/src/Base/Structures/Basic.agda +++ b/src/Base/Structures/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Basic where diff --git a/src/Base/Structures/Congruences.agda b/src/Base/Structures/Congruences.agda index 454f609a..d512e78c 100644 --- a/src/Base/Structures/Congruences.agda +++ b/src/Base/Structures/Congruences.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Congruences where diff --git a/src/Base/Structures/EquationalLogic.agda b/src/Base/Structures/EquationalLogic.agda index c93a3e3d..fe23cc6e 100644 --- a/src/Base/Structures/EquationalLogic.agda +++ b/src/Base/Structures/EquationalLogic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.EquationalLogic where diff --git a/src/Base/Structures/Graphs.agda b/src/Base/Structures/Graphs.agda index 84b7bd1f..35385bed 100644 --- a/src/Base/Structures/Graphs.agda +++ b/src/Base/Structures/Graphs.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Graphs where diff --git a/src/Base/Structures/Graphs0.agda b/src/Base/Structures/Graphs0.agda index 103f7bef..13f78ea1 100644 --- a/src/Base/Structures/Graphs0.agda +++ b/src/Base/Structures/Graphs0.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Graphs0 where diff --git a/src/Base/Structures/Homs.agda b/src/Base/Structures/Homs.agda index 36c1a842..4aa02f3e 100644 --- a/src/Base/Structures/Homs.agda +++ b/src/Base/Structures/Homs.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Homs where diff --git a/src/Base/Structures/Isos.agda b/src/Base/Structures/Isos.agda index e389c546..d32ac7af 100644 --- a/src/Base/Structures/Isos.agda +++ b/src/Base/Structures/Isos.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Isos where diff --git a/src/Base/Structures/Products.agda b/src/Base/Structures/Products.agda index 3d2bd76c..2b847494 100644 --- a/src/Base/Structures/Products.agda +++ b/src/Base/Structures/Products.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Products where diff --git a/src/Base/Structures/Sigma.agda b/src/Base/Structures/Sigma.agda index ac07bf72..e6281b18 100644 --- a/src/Base/Structures/Sigma.agda +++ b/src/Base/Structures/Sigma.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma where diff --git a/src/Base/Structures/Sigma/Basic.agda b/src/Base/Structures/Sigma/Basic.agda index a62ab791..a0b1e10e 100644 --- a/src/Base/Structures/Sigma/Basic.agda +++ b/src/Base/Structures/Sigma/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Basic where diff --git a/src/Base/Structures/Sigma/Congruences.agda b/src/Base/Structures/Sigma/Congruences.agda index 49fce24f..c82ce5ad 100644 --- a/src/Base/Structures/Sigma/Congruences.agda +++ b/src/Base/Structures/Sigma/Congruences.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Congruences where diff --git a/src/Base/Structures/Sigma/Homs.agda b/src/Base/Structures/Sigma/Homs.agda index e75c72d7..3a8d1ef8 100644 --- a/src/Base/Structures/Sigma/Homs.agda +++ b/src/Base/Structures/Sigma/Homs.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Homs where diff --git a/src/Base/Structures/Sigma/Isos.agda b/src/Base/Structures/Sigma/Isos.agda index c4328775..36aa8601 100644 --- a/src/Base/Structures/Sigma/Isos.agda +++ b/src/Base/Structures/Sigma/Isos.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Isos where diff --git a/src/Base/Structures/Sigma/Products.agda b/src/Base/Structures/Sigma/Products.agda index ecf04ecb..9a6d1cf8 100644 --- a/src/Base/Structures/Sigma/Products.agda +++ b/src/Base/Structures/Sigma/Products.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Sigma.Products where diff --git a/src/Base/Structures/Substructures.agda b/src/Base/Structures/Substructures.agda index 3f734ef6..6ecbdd5f 100644 --- a/src/Base/Structures/Substructures.agda +++ b/src/Base/Structures/Substructures.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Substructures where diff --git a/src/Base/Structures/Terms.agda b/src/Base/Structures/Terms.agda index d4187a51..8185d5cf 100644 --- a/src/Base/Structures/Terms.agda +++ b/src/Base/Structures/Terms.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Base.Structures.Terms where diff --git a/src/Base/Subalgebras.agda b/src/Base/Subalgebras.agda index 401a8f44..ee34b6c7 100644 --- a/src/Base/Subalgebras.agda +++ b/src/Base/Subalgebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Subalgebras/Properties.agda b/src/Base/Subalgebras/Properties.agda index 452d6710..86063aa9 100644 --- a/src/Base/Subalgebras/Properties.agda +++ b/src/Base/Subalgebras/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Subalgebras/Subalgebras.agda b/src/Base/Subalgebras/Subalgebras.agda index 8a18da57..63014326 100644 --- a/src/Base/Subalgebras/Subalgebras.agda +++ b/src/Base/Subalgebras/Subalgebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Subalgebras/Subuniverses.agda b/src/Base/Subalgebras/Subuniverses.agda index a63acb61..08115e97 100644 --- a/src/Base/Subalgebras/Subuniverses.agda +++ b/src/Base/Subalgebras/Subuniverses.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Terms.agda b/src/Base/Terms.agda index 9a5679ee..8c8bc957 100644 --- a/src/Base/Terms.agda +++ b/src/Base/Terms.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Terms/Basic.agda b/src/Base/Terms/Basic.agda index 22cc32fe..815e38d7 100644 --- a/src/Base/Terms/Basic.agda +++ b/src/Base/Terms/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Terms/Operations.agda b/src/Base/Terms/Operations.agda index 46e05b49..40e46b57 100644 --- a/src/Base/Terms/Operations.agda +++ b/src/Base/Terms/Operations.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Terms/Properties.agda b/src/Base/Terms/Properties.agda index dba37387..e34680d0 100644 --- a/src/Base/Terms/Properties.agda +++ b/src/Base/Terms/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Varieties.agda b/src/Base/Varieties.agda index 33a12bba..18d7e29d 100644 --- a/src/Base/Varieties.agda +++ b/src/Base/Varieties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( Signature ; 𝓞 ; 𝓥 ) diff --git a/src/Base/Varieties/Closure.agda b/src/Base/Varieties/Closure.agda index 1fe7c21f..7fcc6e2b 100644 --- a/src/Base/Varieties/Closure.agda +++ b/src/Base/Varieties/Closure.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Varieties/EquationalLogic.agda b/src/Base/Varieties/EquationalLogic.agda index bd9632cf..484bad2f 100644 --- a/src/Base/Varieties/EquationalLogic.agda +++ b/src/Base/Varieties/EquationalLogic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Varieties/FreeAlgebras.agda b/src/Base/Varieties/FreeAlgebras.agda index 879fbff6..4435b8e7 100644 --- a/src/Base/Varieties/FreeAlgebras.agda +++ b/src/Base/Varieties/FreeAlgebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Level using ( Level ) open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Varieties/Invariants.agda b/src/Base/Varieties/Invariants.agda index 4e1b17d1..4c8305b0 100644 --- a/src/Base/Varieties/Invariants.agda +++ b/src/Base/Varieties/Invariants.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Varieties/Preservation.agda b/src/Base/Varieties/Preservation.agda index 2e9bdcf8..1fcb20e3 100644 --- a/src/Base/Varieties/Preservation.agda +++ b/src/Base/Varieties/Preservation.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Base/Varieties/Properties.agda b/src/Base/Varieties/Properties.agda index eb10337b..9a5d3f8b 100644 --- a/src/Base/Varieties/Properties.agda +++ b/src/Base/Varieties/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Demos.agda b/src/Demos.agda index 81fc8d90..7f5f613a 100644 --- a/src/Demos.agda +++ b/src/Demos.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Demos where diff --git a/src/Demos/ContraX.agda b/src/Demos/ContraX.agda index 4f160a88..cd00e3bf 100644 --- a/src/Demos/ContraX.agda +++ b/src/Demos/ContraX.agda @@ -1,4 +1,4 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) diff --git a/src/Demos/GeneralOperationsAndRelations.agda b/src/Demos/GeneralOperationsAndRelations.agda index 5a4c3632..34ff7ea5 100644 --- a/src/Demos/GeneralOperationsAndRelations.agda +++ b/src/Demos/GeneralOperationsAndRelations.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Demos.GeneralOperationsAndRelations where diff --git a/src/Demos/HSP.agda b/src/Demos/HSP.agda index bb177f01..d6d50f2c 100644 --- a/src/Demos/HSP.agda +++ b/src/Demos/HSP.agda @@ -1,4 +1,4 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using ( 𝓞 ; 𝓥 ; Signature ) module Demos.HSP {𝑆 : Signature 𝓞 𝓥} where diff --git a/src/Examples.agda b/src/Examples.agda index 0885187f..44c7bbc5 100644 --- a/src/Examples.agda +++ b/src/Examples.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples where diff --git a/src/Examples/Categories.agda b/src/Examples/Categories.agda index fb9b88b3..79b6a83a 100644 --- a/src/Examples/Categories.agda +++ b/src/Examples/Categories.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Categories where diff --git a/src/Examples/Categories/Functors.agda b/src/Examples/Categories/Functors.agda index 8ac3c8d8..43c7b723 100644 --- a/src/Examples/Categories/Functors.agda +++ b/src/Examples/Categories/Functors.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Categories.Functors where diff --git a/src/Examples/Structures.agda b/src/Examples/Structures.agda index 986ffcce..0cab708c 100644 --- a/src/Examples/Structures.agda +++ b/src/Examples/Structures.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Structures where diff --git a/src/Examples/Structures/Basic.agda b/src/Examples/Structures/Basic.agda index fffc1aa4..d9a8aa77 100644 --- a/src/Examples/Structures/Basic.agda +++ b/src/Examples/Structures/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Structures.Basic where diff --git a/src/Examples/Structures/Signatures.agda b/src/Examples/Structures/Signatures.agda index e57ba0eb..455b1e98 100644 --- a/src/Examples/Structures/Signatures.agda +++ b/src/Examples/Structures/Signatures.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Examples.Structures.Signatures where diff --git a/src/Exercises.agda b/src/Exercises.agda index 5d32dd8a..d47638ac 100644 --- a/src/Exercises.agda +++ b/src/Exercises.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Exercises where diff --git a/src/Exercises/Complexity.agda b/src/Exercises/Complexity.agda index 6603751c..7a86031d 100644 --- a/src/Exercises/Complexity.agda +++ b/src/Exercises/Complexity.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Exercises.Complexity where diff --git a/src/Exercises/Complexity/FiniteCSP.agda b/src/Exercises/Complexity/FiniteCSP.agda index 8ccbebc2..f0ff5af6 100644 --- a/src/Exercises/Complexity/FiniteCSP.agda +++ b/src/Exercises/Complexity/FiniteCSP.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Exercises.Complexity.FiniteCSP where diff --git a/src/Overture.agda b/src/Overture.agda index ff76c805..b54c8180 100644 --- a/src/Overture.agda +++ b/src/Overture.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture where diff --git a/src/Overture/Basic.agda b/src/Overture/Basic.agda index af4d324b..e5b0c3f0 100644 --- a/src/Overture/Basic.agda +++ b/src/Overture/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture.Basic where diff --git a/src/Overture/Operations.agda b/src/Overture/Operations.agda index b739fccd..c420c174 100644 --- a/src/Overture/Operations.agda +++ b/src/Overture/Operations.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture.Operations where diff --git a/src/Overture/Preface.agda b/src/Overture/Preface.agda index a709ba83..e4216ae4 100644 --- a/src/Overture/Preface.agda +++ b/src/Overture/Preface.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture.Preface where diff --git a/src/Overture/Signatures.agda b/src/Overture/Signatures.agda index e61c423f..a3d2fdff 100644 --- a/src/Overture/Signatures.agda +++ b/src/Overture/Signatures.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Overture.Signatures where diff --git a/src/Setoid.agda b/src/Setoid.agda index b3760cb8..a8bc3a5e 100644 --- a/src/Setoid.agda +++ b/src/Setoid.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid where diff --git a/src/Setoid/Algebras.agda b/src/Setoid/Algebras.agda index e9ebbfb5..3181dd0e 100644 --- a/src/Setoid/Algebras.agda +++ b/src/Setoid/Algebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Algebras/Basic.agda b/src/Setoid/Algebras/Basic.agda index 9475032e..623e3451 100644 --- a/src/Setoid/Algebras/Basic.agda +++ b/src/Setoid/Algebras/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/src/Setoid/Algebras/Congruences.agda b/src/Setoid/Algebras/Congruences.agda index 2671a608..d2a83f8d 100644 --- a/src/Setoid/Algebras/Congruences.agda +++ b/src/Setoid/Algebras/Congruences.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Algebras/Products.agda b/src/Setoid/Algebras/Products.agda index ec5859b9..03e239d2 100644 --- a/src/Setoid/Algebras/Products.agda +++ b/src/Setoid/Algebras/Products.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Functions.agda b/src/Setoid/Functions.agda index 325cc812..a8aef70f 100644 --- a/src/Setoid/Functions.agda +++ b/src/Setoid/Functions.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions where diff --git a/src/Setoid/Functions/Basic.agda b/src/Setoid/Functions/Basic.agda index 121fc905..e554af1a 100644 --- a/src/Setoid/Functions/Basic.agda +++ b/src/Setoid/Functions/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions.Basic where diff --git a/src/Setoid/Functions/Bijective.agda b/src/Setoid/Functions/Bijective.agda index dcca705a..8a902efb 100644 --- a/src/Setoid/Functions/Bijective.agda +++ b/src/Setoid/Functions/Bijective.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Relation.Binary using ( Setoid ) diff --git a/src/Setoid/Functions/Injective.agda b/src/Setoid/Functions/Injective.agda index 106dd871..908f4abe 100644 --- a/src/Setoid/Functions/Injective.agda +++ b/src/Setoid/Functions/Injective.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Relation.Binary using ( Setoid ) diff --git a/src/Setoid/Functions/Inverses.agda b/src/Setoid/Functions/Inverses.agda index d4480391..81f89b66 100644 --- a/src/Setoid/Functions/Inverses.agda +++ b/src/Setoid/Functions/Inverses.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions.Inverses where diff --git a/src/Setoid/Functions/Surjective.agda b/src/Setoid/Functions/Surjective.agda index e39bc861..0a720411 100644 --- a/src/Setoid/Functions/Surjective.agda +++ b/src/Setoid/Functions/Surjective.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Functions.Surjective where diff --git a/src/Setoid/Homomorphisms.agda b/src/Setoid/Homomorphisms.agda index f7cc82e6..f6a4e027 100644 --- a/src/Setoid/Homomorphisms.agda +++ b/src/Setoid/Homomorphisms.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Homomorphisms/Basic.agda b/src/Setoid/Homomorphisms/Basic.agda index 2e85178f..25ca072a 100644 --- a/src/Setoid/Homomorphisms/Basic.agda +++ b/src/Setoid/Homomorphisms/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature ) diff --git a/src/Setoid/Homomorphisms/Factor.agda b/src/Setoid/Homomorphisms/Factor.agda index 196c4fdd..4153c22a 100644 --- a/src/Setoid/Homomorphisms/Factor.agda +++ b/src/Setoid/Homomorphisms/Factor.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Homomorphisms/HomomorphicImages.agda b/src/Setoid/Homomorphisms/HomomorphicImages.agda index 60ff7acc..b692b630 100644 --- a/src/Setoid/Homomorphisms/HomomorphicImages.agda +++ b/src/Setoid/Homomorphisms/HomomorphicImages.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Homomorphisms/Isomorphisms.agda b/src/Setoid/Homomorphisms/Isomorphisms.agda index 27f794ba..740a913a 100644 --- a/src/Setoid/Homomorphisms/Isomorphisms.agda +++ b/src/Setoid/Homomorphisms/Isomorphisms.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Homomorphisms/Kernels.agda b/src/Setoid/Homomorphisms/Kernels.agda index 8c70bcaf..3666aec2 100644 --- a/src/Setoid/Homomorphisms/Kernels.agda +++ b/src/Setoid/Homomorphisms/Kernels.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Homomorphisms/Noether.agda b/src/Setoid/Homomorphisms/Noether.agda index 63845e28..527d597c 100644 --- a/src/Setoid/Homomorphisms/Noether.agda +++ b/src/Setoid/Homomorphisms/Noether.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Homomorphisms/Products.agda b/src/Setoid/Homomorphisms/Products.agda index c46d79de..b4ea7cff 100644 --- a/src/Setoid/Homomorphisms/Products.agda +++ b/src/Setoid/Homomorphisms/Products.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Homomorphisms/Properties.agda b/src/Setoid/Homomorphisms/Properties.agda index d73def53..b90a8b0e 100644 --- a/src/Setoid/Homomorphisms/Properties.agda +++ b/src/Setoid/Homomorphisms/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Relations.agda b/src/Setoid/Relations.agda index 1dbe1ad8..07f7c06e 100644 --- a/src/Setoid/Relations.agda +++ b/src/Setoid/Relations.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Relations where diff --git a/src/Setoid/Relations/Discrete.agda b/src/Setoid/Relations/Discrete.agda index 83012b8f..0b7a3933 100644 --- a/src/Setoid/Relations/Discrete.agda +++ b/src/Setoid/Relations/Discrete.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Relations.Discrete where diff --git a/src/Setoid/Relations/Quotients.agda b/src/Setoid/Relations/Quotients.agda index 87bbd9b0..198cab1e 100644 --- a/src/Setoid/Relations/Quotients.agda +++ b/src/Setoid/Relations/Quotients.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module Setoid.Relations.Quotients where diff --git a/src/Setoid/Subalgebras.agda b/src/Setoid/Subalgebras.agda index 2f0dc119..5baedc5e 100644 --- a/src/Setoid/Subalgebras.agda +++ b/src/Setoid/Subalgebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Subalgebras/Properties.agda b/src/Setoid/Subalgebras/Properties.agda index 0acca87b..225dc920 100644 --- a/src/Setoid/Subalgebras/Properties.agda +++ b/src/Setoid/Subalgebras/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Subalgebras/Subalgebras.agda b/src/Setoid/Subalgebras/Subalgebras.agda index 753e30dc..1557b361 100644 --- a/src/Setoid/Subalgebras/Subalgebras.agda +++ b/src/Setoid/Subalgebras/Subalgebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Subalgebras/Subuniverses.agda b/src/Setoid/Subalgebras/Subuniverses.agda index 3b47b00c..2d8875c1 100644 --- a/src/Setoid/Subalgebras/Subuniverses.agda +++ b/src/Setoid/Subalgebras/Subuniverses.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Terms.agda b/src/Setoid/Terms.agda index f14d4f08..1f3f05f3 100644 --- a/src/Setoid/Terms.agda +++ b/src/Setoid/Terms.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Terms/Basic.agda b/src/Setoid/Terms/Basic.agda index 1a002e5a..d645d01b 100644 --- a/src/Setoid/Terms/Basic.agda +++ b/src/Setoid/Terms/Basic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Terms/Operations.agda b/src/Setoid/Terms/Operations.agda index 9dd10357..ac696f3e 100644 --- a/src/Setoid/Terms/Operations.agda +++ b/src/Setoid/Terms/Operations.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Terms/Properties.agda b/src/Setoid/Terms/Properties.agda index a63c52d9..99af4809 100644 --- a/src/Setoid/Terms/Properties.agda +++ b/src/Setoid/Terms/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties.agda b/src/Setoid/Varieties.agda index 889cf99c..64c8faed 100644 --- a/src/Setoid/Varieties.agda +++ b/src/Setoid/Varieties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties/Closure.agda b/src/Setoid/Varieties/Closure.agda index d5e3af36..9c3d5ede 100644 --- a/src/Setoid/Varieties/Closure.agda +++ b/src/Setoid/Varieties/Closure.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties/EquationalLogic.agda b/src/Setoid/Varieties/EquationalLogic.agda index f86a1ee4..6a5d1c57 100644 --- a/src/Setoid/Varieties/EquationalLogic.agda +++ b/src/Setoid/Varieties/EquationalLogic.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties/FreeAlgebras.agda b/src/Setoid/Varieties/FreeAlgebras.agda index 907af46e..3416754d 100644 --- a/src/Setoid/Varieties/FreeAlgebras.agda +++ b/src/Setoid/Varieties/FreeAlgebras.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties/HSP.agda b/src/Setoid/Varieties/HSP.agda index 705f7bdc..7fcd869f 100644 --- a/src/Setoid/Varieties/HSP.agda +++ b/src/Setoid/Varieties/HSP.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties/Preservation.agda b/src/Setoid/Varieties/Preservation.agda index 9bd39b54..3fe661c3 100644 --- a/src/Setoid/Varieties/Preservation.agda +++ b/src/Setoid/Varieties/Preservation.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties/Properties.agda b/src/Setoid/Varieties/Properties.agda index 9a8c3036..dacd37e2 100644 --- a/src/Setoid/Varieties/Properties.agda +++ b/src/Setoid/Varieties/Properties.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/Setoid/Varieties/SoundAndComplete.agda b/src/Setoid/Varieties/SoundAndComplete.agda index 799c8496..d2efbcda 100644 --- a/src/Setoid/Varieties/SoundAndComplete.agda +++ b/src/Setoid/Varieties/SoundAndComplete.agda @@ -1,5 +1,5 @@ -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} open import Overture using (𝓞 ; 𝓥 ; Signature) diff --git a/src/agda-algebras.agda b/src/agda-algebras.agda index 9337e462..e40a7edd 100644 --- a/src/agda-algebras.agda +++ b/src/agda-algebras.agda @@ -88,7 +88,7 @@ Cubical Agda. -} -{-# OPTIONS --without-K --exact-split --safe #-} +{-# OPTIONS --cubical-compatible --exact-split --safe #-} module agda-algebras where