Automatic Theorem Proving in Walnut
Hamoon Mousavi
TL;DR
Walnut presents a practical, automata-based framework for deciding properties of automatic words by extending Presburger arithmetic with indexing into automatic words. It provides a comprehensive implementation of a decision procedure built from automata cross products, quantification, and complement/reverse operations, enabling predicates over number-system representations and automatic-word indices. The system supports defining and reusing automata via eval/def/macros, regular-expression automata, and non-arithmetic automata, with compatible I/O tooling and visualization through Graphviz. The approach is demonstrated on classical automatic-word objects like Thue–Morse and Fibonacci words, and the paper also discusses installation, usage, and limitations when handling mixed number systems and non-arithmetic constructs.
Abstract
Walnut is a software package that implements a mechanical decision procedure for deciding certain combinatorial properties of some special words referred to as automatic words or automatic sequences. Walnut is written in Java and is open source. It is licensed under GNU General Public License.
