Grail+ is a symbolic computation environment for finite-state machines, regular expressions, and other formal language theory objects. Using Grail+, one can input machines or expressions, convert them from one form to the other, minimize, make deterministic, complement, and perform many other operations.
Grail+ enables you to manipulate parameterizable
finite-state machines, parameterizable regular expressions, and
parameterizable finite languages. By `parameterizable', we
mean that the alphabet is not restricted to the usual twenty-six letters
and ten digits. Instead, all algorithms are written in a type-independent
manner, so that any valid C++ base type and any user-defined type or
class can define the alphabet of a finite-state machine or regular
Grail+ is intended for use in teaching, for research into the properties of machines, and for efficient computation with machines.
Grail+ is written in C++. It can be accessed either through a
process library or through a C++ class library.
Please note that Grail+ is not free.
We don't charge scholars, students, or researchers for the use of Grail+, and we don't charge people who simply want to play with it to satisfy their own curiosity.
But no commercial use of Grail+ is permitted without our prior, express,
written consent. No part of Grail+ may be included in a commercial
product or used on a commercial problem without our prior, express,