Core Concepts
Mata is a well-engineered, fast, and simple finite automata library designed for applications such as string constraint solving, regular expression processing, and regular model checking.
Abstract
The content introduces Mata, a new finite automata library written in C++ that offers a unique combination of speed and simplicity. Mata is intended to be used in applications where automata languages are manipulated by set operations and queries, such as string constraint solving, regular expression processing, and regular model checking.
The key highlights of Mata are:
Fast implementation of basic automata algorithms (union, intersection, complement, minimization, determinization, emptiness/inclusion/equivalence/membership test, parsing of regular expressions) using a custom data structure for the transition relation.
Access to low-level primitives to implement diverse application-specific algorithms and optimizations.
Flexibility, extensibility, and easy access to the low-level data structures, making it suitable for academic research and student projects.
Well-engineered infrastructure with a Python binding, continuous integration, and a large benchmark of automata problems.
Mata consistently outperforms a wide range of existing automata libraries on the benchmark, sometimes by orders of magnitude.
Mata is the core of the efficient string solver Z3-Noodler, which outperforms the state of the art in string constraint solving.
Stats
Mata is significantly faster than all other libraries on the benchmark, with speedups ranging from 1.22x to 9999.29x.
Quotes
"Mata is a well-engineered automata library written in C++ that offers a unique combination of speed and simplicity."
"Mata consistently outperforms all other libraries, from several times to orders of magnitude."
"Mata is the core of the efficient string solver Z3-Noodler, which outperforms the state of the art in string constraint solving."