Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/coq-community/mmaps
Modular Finite Maps over Ordered Types in Coq [maintainers=@letouzey,@palmskog]
https://github.com/coq-community/mmaps
avl-tree coq docker-coq-action finite-maps red-black-tree
Last synced: 29 days ago
JSON representation
Modular Finite Maps over Ordered Types in Coq [maintainers=@letouzey,@palmskog]
- Host: GitHub
- URL: https://github.com/coq-community/mmaps
- Owner: coq-community
- License: lgpl-2.1
- Created: 2016-02-25T17:42:13.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-06-30T16:36:45.000Z (6 months ago)
- Last Synced: 2024-11-24T04:13:01.625Z (29 days ago)
- Topics: avl-tree, coq, docker-coq-action, finite-maps, red-black-tree
- Language: Coq
- Homepage: https://coq-community.org/coq-mmaps/
- Size: 734 KB
- Stars: 11
- Watchers: 4
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Modular Finite Maps over Ordered Types
[![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][docker-action-shield]: https://github.com/coq-community/coq-mmaps/actions/workflows/docker-action.yml/badge.svg?branch=master
[docker-action-link]: https://github.com/coq-community/coq-mmaps/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.20usersThis project contains several implementations of finite maps,
including implementations based on AVL trees and red-black trees.
The finite maps are parameterized on arbitrary ordered types using
Coq functors. This is an updated version of the Coq Stdlib's FMaps
that is meant to complement the Stdlib's MSet library.## Meta
- Author(s):
- Pierre Letouzey (initial)
- Andrew W. Appel
- Coq-community maintainer(s):
- Pierre Letouzey ([**@letouzey**](https://github.com/letouzey))
- Karl Palmskog ([**@palmskog**](https://github.com/palmskog))
- License: [GNU Lesser General Public License v2.1 only](LICENSE)
- Compatible Coq versions: 8.14 and later
- Additional dependencies: none
- Coq namespace: `MMaps`
- Related publication(s):
- [Efficient Verified Red-Black Trees](https://www.cs.princeton.edu/~appel/papers/redblack.pdf)
- [Functors for Proofs and Programs](https://hal.inria.fr/hal-00150913) doi:[10.1007/978-3-540-24725-8_26](https://doi.org/10.1007/978-3-540-24725-8_26)## Building and installation instructions
The easiest way to install the latest released version of Modular Finite Maps over Ordered Types
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-mmaps
```To instead build and install manually, do:
``` shell
git clone https://github.com/coq-community/coq-mmaps.git
cd coq-mmaps
make # or make -j
make install
```## Documentation
This library of finite maps is a modernization of
[FMaps](https://coq.inria.fr/stdlib/Coq.FSets.FMaps.html) in Coq's
standard library.
Compared to FMaps, MMaps has a richer interface and provides additional
finite map implementations, including a performant implementation
[based on red-black trees](theories/RBT.v).As starting points for understanding how to use the library,
we recommend looking at [MMaps.Interface](theories/Interface.v) and
[MMaps.demo](theories/demo.v).