The Grail Home Page
What is Grail?
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 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.
Version 2.4 of Grail enables you to manipulate parameterizable
finite-state machines and regular expressions. 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
expression.
Version 2.4 of Grail supports Mealy machines.
Who's developing Grail?
Grail's principal researchers are:
Darrell Raymond (presently at the University of Western
Ontario)
drraymon@csd.uwo.ca
Click here for Darrell's home page.
Derick Wood (presently at the Hong Kong University of
Science and Technology)
dwood@cs.ust.hk
Click here for
Derick's home page.
Where can I read more about Grail?
Consult the Grail publications page.
To read more about non-Grail work on finite-state machine implementations,
consult the Grail related work page.
How can I get Grail?
You can access Grail at UWO. Version 2.4 of Grail is now
available.
The source code, man pages, and .dvi files for the
User's Guide, the Programmer's Guide and
the Release Notes
can be downloaded by clicking here.
This file is .2 Mbytes compressed and .8 Mbytes uncompresseed.
We also provide pre-compiled binaries for various architectures.
These binaries are all about .7 Mbytes compressed, and about
2 Mbytes uncompressed.
For Sparc/SunOS, click here.
For 486/DOS, click here.
For SGI/IRIX, click here.
For RS6000/AIX, click here.
Is Grail free?
No, 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,
written consent.
It's not that we have something against people
making money---we just want to make sure that those who benefit financially
from using Grail put some small part of that benefit back into the
development and support of Grail
What's going on with Grail these days?
Several things:
- Boubaker Meddeb-Hamrouni of IMAG in Grenoble has created
a Macintosh version of Grail. A BinHex'd version of the
binary is available. This
binary uses Version 2.3 source code, and some custom
interface work done by Meddeb-Hamrouni. If you have
questions or comments about this program, please contact
him at Boubaker.Meddeb-Hamrouni@imag.fr.
- Richard Upchurch and Boleslaw Mikolajczak of the University
of Massachusetts have been using Grail in a 4th year software
engineering course. You'll find more information on
their
Web page.
- Grail is currently being funded by an NSERC strategic grant, intended
to foster transfer of technology to industry. We're looking for industrial
partners who want to work with us on adapting Grail to their needs.
So if you're in industry and you think you have an application, let
us know.
- We're planning a 1996 `conference on implementing automata' (that's
right, CIA). This event would bring together people interested
in the practical issues of implementing formal language theory. If
you think you'd be interested in attending this conference, let us know.
-
We're looking for students to work on some interesting projects
we haven't had time to do ourselves. For a description of the
projects, consult the Grail projects page.