crest - Constrained REwriting Software Tool

For the TACAS 2025 submission click here.

The tool crest performs a confluence/termination analysis on logical constrained rewrite systems (LCTRSs for short). It is written in Haskell and based on the Haskell term-rewriting library and a fork of the Haskell simple-smt library. As default SMT solver currently Z3 is used. Currently it supports checking if an LCTRS is (non-)confluent using the following methods:

The implementation of those criteria follows the explained concepts in the accompanying publications below.


News


Publications


Latest Binaries/Experiments/Source Code version 0.8.7.1

Below you find fully statically linked linux binaries of crest-cr (crest-sn) and crest-cr-benchmark (crest-sn-benchmark). For other operating system binaries use the contact information below. A dependency of all binaries is a Z3 binary in your path as well as other SMT solvers if they are activated via their respective flag. Furthermore our benchmarking tools need find. Note that "*-cr-*" denotes the confluence tools and "*-sn-*" the termination tools. For more information consult the usage information of the binaries or the README in the source code.

Experiments

The current confluence results (standard output) on the full set of benchmarks with a timeout of 10 seconds using 8 threads for concurrency:
./crest-cr-benchmark examples --html -j 8 -t 10

The current termination results (standard output) on the full set of benchmarks with a timeout of 10 seconds using 8 threads for concurrency:
./crest-sn-benchmark examples --html -j 8 -t 10

Input Format (*.ari)

It accepts LCTRSs in the new ARI format described here. For an outdated description with a little bit more infromation see the publication at IWC 2023.

Contact

For questions or feedback please contact Jonas Schöpf or Aart Middeldorp.