University of Minnesota
Software Engineering Center

You are here

Minnesota Extensible Language Tools

Software development is a time-consuming and error-prone process that often results in unreliable and insecure software. At least part of the reason for these undesirable results is that large semantic gap between the programmer's high-level understanding of the problem and the relatively low-level programming language in which the problem solutions are encoded. Thus, programmers cannot "say what they mean" but must encode their ideas as programming idioms at a lower level of abstraction. This wastes time and is the source of many errors. A long range goal is to improve the software development process and the quality of the resulting software artifacts by reducing the semantic gap. Extensible languages provide a promising way to achieve this goal. An extensible language can easily be extended with the unique combination of domain-specific language features that raises the level of abstraction to that of the task at hand. The extended language provides the programmer with language constructs, optimizations, and static program analyses to significantly simplify the software development process.

Recent Publications

Algebraic Implementation of Model Checking

We describe an algebraic methodology for implementing model checking algorithms. In this methodology temporal logic formulas are seen as phrases of a source language L_s and the sets of states of a the associated model are seen as elements of an algebra of sets called the target language, L_t. Thus, the model checker becomes an algebraic compiler C : L_s -> L_t which maps temporal logic formulas in L_s into the sets of states of the model in L_t which satisfy these formulas.