Utool is the Swiss Army Knife of Underspecification. It is a GUI and library written in Rust for performing computations with dominance graphs and other formalisms, which are used to represent semantic ambiguities in natural language processing.
Utool was developed in 2005-2010 in the CHORUS Project at Saarland University by Alexander Koller and collaborators. It is no longer under active development, but it is probably still the fastest solver for underspecified representations of scope ambiguities, and will still run fine today. If you have any questions or requests, please get in touch by submitting a Github issue.
In 2026, in response to sustained interest in Utool, we released Utool 4: a streamlined port of Utool to Rust from the original Java. This increased the speed of chart generation and solution enumeration by a factor of 10x. Chart filtering (with rewrite rules) can now be done efficiently even on dominance graphs where the Java version ran out of memory. A Macbook Pro with M5 Pro processor computes the chart for the hardest example in the testsuite in 55 milliseconds, reduces to weakest readings in 700 milliseconds, and enumerates the remaining 1.9 million readings in 200 milliseconds.
The Utool homepage has a detailed manual. The manual is written for Utool 3.1 (in Java), but Utool 4 is mostly a drop-in replacement for 3.4, so the key points still apply.
Prebuilt command-line programs and desktop packages for Utool 4 are published on the GitHub Releases page. Release artifacts are built for these targets:
| Platform | Desktop application | Command line program |
|---|---|---|
| macOS, Apple Silicon | DMG · app archive | tar.gz |
| macOS, Intel | DMG · app archive | tar.gz |
| Windows x64 | installer | zip |
| Linux x64 | AppImage · Debian package | tar.gz |
For the easiest start, download and run the desktop application. This will allow you to open, convert, and solve dominance graphs. You can also activate the server model in the desktop app, which allows you to send XML commands for solving dominance graphs from other programs over a socket.
Alternatively, you can download the command-line program and then run it in your shell. This is most suitable for batch processing.
The packages are not developer-signed or notarized. Windows SmartScreen and
macOS Gatekeeper may therefore ask you to approve the application before its
first launch. Download releases only from the repository's Releases page and
verify that you selected the expected version and architecture.
The binaries you have to approve are called utool and utool-display.
The last Java version, Utool 3.4, is still available on the Releases page if you wish to use that instead.
If you use Utool in your research, you can cite it as follows:
@inproceedings{koller-thater-2005-evolution,
title = "The Evolution of Dominance Constraint Solvers",
author = "Koller, Alexander and Thater, Stefan",
booktitle = "Proceedings of Workshop on Software",
year = "2005",
address = "Ann Arbor, Michigan",
url = "https://aclanthology.org/W05-1105",
pages = "65--76",
}
Our own most recent publication that uses Utool is this one. You can cite it if you are computing weakest readings or performing redundancy elimination with Utool.
@inproceedings{koller-thater-2010-computing,
title = "Computing Weakest Readings",
author = "Koller, Alexander and Thater, Stefan",
booktitle = "Proceedings of the 48th Annual Meeting of the Association for Computational Linguistics",
year = "2010",
address = "Uppsala, Sweden",
url = "https://aclanthology.org/P10-1004",
pages = "30--39",
}

