-
Notifications
You must be signed in to change notification settings - Fork 43
/
meta.yml
125 lines (95 loc) · 3.18 KB
/
meta.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
---
fullname: Math Classes
shortname: math-classes
organization: coq-community
community: true
action: true
ci_extra_dev: true
doi: 10.1017/S0960129511000119
synopsis: >-
A library of abstract interfaces for mathematical structures in Coq
description: |
Math 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.
publications:
- pub_doi: 10.1017/S0960129511000119
pub_url: https://arxiv.org/abs/1102.1323
pub_title: Type Classes for Mathematics in Type Theory
authors:
- name: Eelis van der Weegen
initial: true
- name: Bas Spitters
initial: true
- name: Robbert Krebbers
initial: true
maintainers:
- name: Bas Spitters
nickname: spitters
- name: Xia Li-yao
nickname: Lysxia
opam-file-maintainer: [email protected]
license:
fullname: MIT License
identifier: MIT
supported_coq_versions:
text: Coq 8.18 or later (use releases for other Coq versions)
opam: '{(>= "8.18" & < "8.20~") | (= "dev")}'
tested_coq_opam_versions:
- version: dev
- version: "8.19"
- version: "8.18"
dependencies:
- opam:
name: coq-bignums
nix: bignums
description: "[BigNums](https://github.com/coq/bignums)"
namespace: MathClasses
build: |
## 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 <number-of-cores-on-your-machine>
make install
```
documentation: |
## 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.
---