Core Concepts
Mata ist eine gut konzipierte Automaten-Bibliothek in C++, die eine einzigartige Kombination aus Geschwindigkeit und Einfachheit bietet. Sie ist für Anwendungen wie Zeichenketten-Constraint-Lösung und Reasoning über reguläre Ausdrücke sowie als Referenzimplementierung von Automaten-Algorithmen gedacht.
Abstract
Mata ist eine Finite-Automaten-Bibliothek, die für Anwendungen entwickelt wurde, in denen Automatensprachen durch Mengenoperationen und Abfragen manipuliert werden, vermutlich in einer engen Schleife, in der Automaten iterativ unter Verwendung klassischer sowie spezieller Konstruktionen kombiniert werden. Beispiele sind Anwendungen wie Zeichenketten-Constraint-Lösung, Verarbeitung regulärer Ausdrücke, reguläres Modell-Checking oder Entscheidungsverfahren für Logiken wie WS1S oder quantifizierte Presburger-Arithmetik.
Mata bietet eine effiziente Implementierung grundlegender Automaten-Algorithmen wie Union, Schnitt, Komplement, Minimierung oder Größenreduktion, Determinisierung, Leerheits-/Inklusionstest, Äquivalenz-/Mitgliedschaftstest und Parsing regulärer Ausdrücke. Darüber hinaus ermöglicht Mata den einfachen Zugriff auf Niedrigstufen-Primitive, um diverse anwendungsspezifische Algorithmen und Optimierungen zu implementieren, die oft auf einer engen Integration mit der Anwendungsumgebung aufbauen.
Mata ist in C++ implementiert, verwendet fast ausschließlich die STL-Bibliothek für seine Datenstrukturen und hat keine externen Abhängigkeiten. Dies macht es relativ einfach, es in andere Softwareprojekte zu integrieren. Neben der C++-API bietet es auch eine Python-Anbindung für schnelles Prototyping und einfaches Experimentieren.
Die Leistungsfähigkeit von Mata wurde in einem umfassenden Vergleich mit 7 bekannten Automaten-Bibliotheken auf einem großen Benchmark von Problemen aus den Bereichen Zeichenketten-Constraint-Lösung, Verarbeitung regulärer Ausdrücke und reguläres Modell-Checking demonstriert. Mata übertrifft dabei konsistent alle anderen Bibliotheken, teilweise um ein Vielfaches.
Stats
Mata ist signifikant schneller als alle anderen getesteten Automaten-Bibliotheken auf dem Benchmark.
Mata ist der einzige Anbieter einer Implementierung des Simulationsalgorithmus der zweiten Generation, der aus [65,21] stammt.
Mata ist die Basis des effizienten Zeichenketten-Lösers Z3-Noodler, der den Stand der Technik in der Zeichenketten-Constraint-Lösung auf vielen Standard-Benchmarks übertrifft.
Quotes
"Mata ist eine gut konzipierte Automaten-Bibliothek in C++, die eine einzigartige Kombination aus Geschwindigkeit und Einfachheit bietet."
"Mata ist für Anwendungen wie Zeichenketten-Constraint-Lösung und Reasoning über reguläre Ausdrücke sowie als Referenzimplementierung von Automaten-Algorithmen gedacht."
"Mata übertrifft konsistent alle anderen getesteten Automaten-Bibliotheken, teilweise um ein Vielfaches."