An Introduction to Larch

Presented by Eric Eide

<eeide@cs.utah.edu>
in the CSL Seminar (CP SC 686) on December 4, 1996.


Larch is a system for formal specification and verification of program modules. Larch is not a single language; rather, Larch is a family of languages, each tailored to the requirements of a particular programming language. There are Larch specification languages for C, C++, Modula-3, Ada, ML, Smalltalk, CLU, and CORBA IDL.

Larch supports two-tiered specification because each Larch language consists of two sublanguages: a Larch Shared Language (LSL) component and a behavioral interface specification language (BISL) component. The Larch Shared Language component defines a mathematical model --- a set of types and operators on those types --- that will be used to reason about a program module. The BISL component connects pieces of the program module (e.g., functions and methods) with the mathematical abstractions defined in the LSL specification.

Larch is interesting to the Flux project, Flick in particular, for a number of reasons. First, Larch provides a formal way to document and reason about program modules in a number of languages. Flick could use the Larch languages as the basis for (1) flexible specification of presentation and (2) automatic creation of specialized implementations driven by interprocedural code analysis, resource management constraints, or security concerns.

Presentation Materials

Reference Materials


Eric Eide <eeide@cs.utah.edu>
Last modified: Fri Dec 6 09:48:20 MST