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