Skip to content

Repository files navigation

Utool

Utool Logo

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 Screenshot

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.

Running Utool

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.

Citing Utool

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",
}

About

Utool is the Swiss Army Knife of Underspecification. It is a GUI and library written in Java for performing computations with dominance graphs and other formalisms, which are used to represent semantic ambiguities in natural language processing.

Resources

Stars

5 stars

Watchers

8 watching

Forks

Releases

Packages

Used by

Contributors

Languages