Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/coq-community/math-classes
A library of abstract interfaces for mathematical structures in Coq [maintainer=@spitters,@Lysxia]
https://github.com/coq-community/math-classes
coq coq-ci coq-library coq-platform mathematics typeclasses
Last synced: 2 days ago
JSON representation
A library of abstract interfaces for mathematical structures in Coq [maintainer=@spitters,@Lysxia]
- Host: GitHub
- URL: https://github.com/coq-community/math-classes
- Owner: coq-community
- License: mit
- Created: 2011-05-13T13:18:32.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2024-11-03T16:20:04.000Z (about 1 month ago)
- Last Synced: 2024-12-03T23:03:53.060Z (10 days ago)
- Topics: coq, coq-ci, coq-library, coq-platform, mathematics, typeclasses
- Language: Coq
- Homepage: https://math-classes.github.io
- Size: 2.86 MB
- Stars: 162
- Watchers: 16
- Forks: 43
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-inspiration - math-classes
README
# Math Classes
[![Docker CI][docker-action-shield]][docker-action-link]
[![Contributing][contributing-shield]][contributing-link]
[![Code of Conduct][conduct-shield]][conduct-link]
[![Zulip][zulip-shield]][zulip-link]
[![DOI][doi-shield]][doi-link][docker-action-shield]: https://github.com/coq-community/math-classes/actions/workflows/docker-action.yml/badge.svg?branch=master
[docker-action-link]: https://github.com/coq-community/math-classes/actions/workflows/docker-action.yml[contributing-shield]: https://img.shields.io/badge/contributions-welcome-%23f7931e.svg
[contributing-link]: https://github.com/coq-community/manifesto/blob/master/CONTRIBUTING.md[conduct-shield]: https://img.shields.io/badge/%E2%9D%A4-code%20of%20conduct-%23f15a24.svg
[conduct-link]: https://github.com/coq-community/manifesto/blob/master/CODE_OF_CONDUCT.md[zulip-shield]: https://img.shields.io/badge/chat-on%20zulip-%23c1272d.svg
[zulip-link]: https://coq.zulipchat.com/#narrow/stream/237663-coq-community-devs.20.26.20users[doi-shield]: https://zenodo.org/badge/DOI/10.1017/S0960129511000119.svg
[doi-link]: https://doi.org/10.1017/S0960129511000119Math classes is a library of abstract interfaces for mathematical
structures, such as:* Algebraic hierarchy (groups, rings, fields, …)
* Relations, orders, …
* Categories, functors, universal algebra, …
* Numbers: N, Z, Q, …
* Operations, (shift, power, abs, …)It is heavily based on Coq’s new type classes in order to provide:
structure inference, multiple inheritance/sharing, convenient
algebraic manipulation (e.g. rewriting) and idiomatic use of
notations.## Meta
- Author(s):
- Eelis van der Weegen (initial)
- Bas Spitters (initial)
- Robbert Krebbers (initial)
- Coq-community maintainer(s):
- Bas Spitters ([**@spitters**](https://github.com/spitters))
- Xia Li-yao ([**@Lysxia**](https://github.com/Lysxia))
- License: [MIT License](LICENSE)
- Compatible Coq versions: Coq 8.18 or later (use releases for other Coq versions)
- Additional dependencies:
- [BigNums](https://github.com/coq/bignums)
- Coq namespace: `MathClasses`
- Related publication(s):
- [Type Classes for Mathematics in Type Theory](https://arxiv.org/abs/1102.1323) doi:[10.1017/S0960129511000119](https://doi.org/10.1017/S0960129511000119)## Building and installation instructions
The easiest way to install the latest released version of Math Classes
is via [OPAM](https://opam.ocaml.org/doc/Install.html):```shell
opam repo add coq-released https://coq.inria.fr/opam/released
opam install coq-math-classes
```To instead build and install manually, do:
``` shell
git clone https://github.com/coq-community/math-classes.git
cd math-classes
./configure.sh
make # or make -j
make install
```## Directory structure
### categories/
Proofs that certain structures form categories.### functors/
### interfaces/
Definitions of abstract interfaces/structures.### implementations/
Definitions of concrete data structures and algorithms, and proofs that they are instances of certain structures (i.e. implement certain interfaces).### misc/
Miscellaneous things.### orders/
Theory about orders on different structures.### quote/
Prototype implementation of type class based quoting. To be integrated.### theory/
Proofs of properties of structures.### varieties/
Proofs that certain structures are varieties, and translation to/from type classes dedicated to these structures (defined in interfaces/).The reason we treat categories and varieties differently from other structures
(like groups and rings) is that they are like meta-interfaces whose implementations
are not concrete data structures and algorithms but are themselves abstract structures.To be able to distinguish the various arrows, we recommend using a variable width font.