CISC 499 Projects: Translating a Formal Notation to Prolog
I am working on a formal system for describing software architectures, which
contains an assertion sub-language based on the Z ("zed") specification language.
This overall project is a set of components for the system, each a 1- or
2-person project, which, were they all successful, could be integrated into a
whole (which, ideally, will be a future CISC 499 project).
The first and third projects require expertise in Prolog.
Learning Z is not required, but is helpful for the type checker project.
I have teaching materials for Z, including a technical report on the
methodology I and others use when working with the notation.
See also the index, which includes additional requirements for all of this
year's projects.
Invoking Prolog from Java
There are systems such as JPL that allow Java programs to invoke Prolog (and sometimes vice-versa). This project involves using one such system to allow a Java program to take an internal representation of a Prolog program, plus a "fact base" of Prolog ground terms, and report the results of applying the Prolog program to the fact base.
As described, this is a 1-person project that involves a brief feasability
study of which Java/Prolog tool to use, followed by the work described above.
If two are interested, we may be able to expand the work to allow for multiple
reprentations of information that could be translated into Prolog ground terms.
Specification Language Type Checker
This sub-project involves using the xText and xTend tools, which are Eclipse
plug-ins. xText can be used to create an editor for a textual "domain
specific language" such as the one I am working on, and xTend (a Java-like
language) can be used to write a type checker that looks for errors such as
undeclared identifiers and type mismatches.
This is a 1-person project.
Transforming Specifications into Prolog
This project transforms an internal Java representation of a subset of the
specification language into an internal representaton of a prolog program to
check the assertions in the language, and generate a textual representation of
the Prolog representation suitable for input to a separate Prolog interpreter.
Ideally the internal representations would be the same as those of previous
projecs, but to avoid depending on the success of the other projects, these might
be prototyped via manually-defined Java packages.
This project can accommodate 1-2 students, possbily 3, each working on a
different set of transformations while sharing the development of the
overall system.
This page last modified