Kleenelattices
Library and tools to compare identity-free regular expressions with intersection.
Project home page : http://monstrencage.github.io/kleenelattices
Required
:camel: To compile and run this program you need OCaml version 4.00 or higher.
Installation
To compile a bytecode executable, enter in a shell in the source folder :
$ make
For an optimized version type :
$ make opt
If you want to produce a library, the command :
$ make libs
You can find the complete documentation of the project there.
You can also install both the libraries and the executable program :
$ make install
Use :
A typical input file would look like this
<expr1> <cmp> <expr2>
<expr3> <cmp> <expr4>
<expr5> <cmp> <expr6>
where an expression can use strings as variables/letters, and the operations :
<expr1> | <expr2>: the set union<expr1> & <expr2>: the set intersection<expr1> . <expr2>: the composition of relations<expr1>+: the transitive closure of a relation<expr1>{int}: the iteration of a relation. For instance,(a.b){3}is a shorthand for(a.b).(a.b).(a.b).
You can also use brackets (...).
The valid comparaisons <cmp> are :
<=: loose inclusion>=: converse of the loose inclusion<: strict inclusion>: converse of the strict inclusion=: equality=\=: negation of the equality<>: means that the two expressions are incomparable, i.e. neither one of them is included in the other.
If file is a correct input file, then calling
$ ./solve file
will produce a file file.res in which each (in)equation will have been tested and solved.