You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This library provides algebraic tools for working with binary relations.
The main tactic provided is a reflexive tactic for solving (in)equations
in an arbitrary Kleene algebra. The decision procedure goes through
standard finite automata constructions.
Note that the initial authors consider this library to be superseded
by the Relation Algebra library, which is based on derivatives
rather than automata: https://github.com/damien-pous/relation-algebra
git clone https://github.com/coq-community/atbr.git
cd atbr
make # or make -j <number-of-cores-on-your-machine>
make install
Documentation
The development and underlying theory of the library is described in the paper
Deciding Kleene Algebras in Coq, Logical Methods in Computer Science,
Volume 8, Issue 1, 2012.
Below are succinct descriptions of each file and tactic. See also the
coqdoc presentation of the Coq source files from the latest release.
Library files
Filename
Description
ATBR
Export all relevant modules, except those related to matrices
ATBR_Matrices
Export all relevant modules, including those related to matrices
Algebraic hierarchy
Filename
Description
Classes
Definitions of algebraic classes of the development
Graph
Lemmas and hints about the base class (carrier with equality)
Monoid
Monoids, free monoids, finite iterations over a monoid, various tactics
solve an (in)equation on the idempotent semiring (*,+,1,0)
semiring_normalize
simplify an (in)equation on the idempotent semiring (*,+,1,0)
semiring_clean
simplify 0 and 1
semiring_cleanassoc
simplify 0 and 1, normalize the parentheses
kleene_reflexivity
solve an (in)equation in Kleene Algebras
ckleene_reflexivity
solve an (in)equation in Kleene Algebras with converse
skleene_reflexivity
solve an (in)equation in Strict Kleene Algebras (without 0)
kleene_clean_zero
remove zeros in a KA expression
kleene_ssf
put KA expressions into strict star form
Rewriting tactics
Tactic
Description
ac_rewrite H
rewrite a closed equality modulo (AC) of (+)
monoid_rewrite H
rewrite a closed equality modulo (A) of (*)
Other tactics
Tactic
Description
converse_down
push converses down to terms leaves
switch
add converses to the goal and push them down to terms leaves
Acknowledgements
The initial authors would like to thank Guilhem Moulin and Sebastien Briais,
who participated to a preliminary version of this project. They are also grateful
to Assia Mahboubi, Matthieu Sozeau, Bruno Barras, and Hugo Herbelin for highly
stimulating discussions, as well as numerous hints for solving various problems.