Kofola is an open source tool for an efficient complementation and inclusion checking of automata over infinite words (omega automata). Kofola has been built on top of SPOT and inspired by Seminator and COLA.
For a successful build of Kofola, cmake
of version 3.16 (or higher) together with a C++ compiler with a support of C++-17 standard is required. Additional requirements
include:
For Debian-like systems, Spot can be installed using the package libspot-dev
.
For building Spot from sources, download the recent version and run:
./configure
One can set the maximal number of colors for an automaton when configuring Spot with --enable-max-accsets=INT
.
make
sudo make install
Please run the following steps to compile Kofola after cloning this repo:
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Then you will get an executable in build/src/kofola
. Alternatively you can
run make release
in the root directory.
Kofola assumes input omega automata in HOA format. The following command
translates general (nondeterministic) omega-automaton stored in file A.hoa
into a complementary
omega automaton and prints it to the standard output:
./kofola A.hoa --complement
Note that Kofola produces automata with a general accepting condition (different output type might be specified
by --tba
for transition-based Büchi automata or --tgba
for transition-based
generalized Büchi automata).
The following command then checks if the language specified by the omega automaton A.hoa
is included in the language specified by B.hoa
and prints the result to the standard output:
./kofola A.hoa B.hoa --inclusion
Additional parameters might be passed using --params
, e.g., --params=merge_iwa=True
.
In order to get a program help, run
./kofola --help
- V. Havlena, O. Lengál, Y. Li, B. Šmahlíková and A. Turrini. Modular Mix-and-Match Complementation of Büchi Automata. In Proc. of TACAS'23, volume 13993 of LNCS, pages 249-270, 2023. Springer.