A Reflective Framework for Formal Interoperability

Investigators


Project Summary

In practice we find ourselves in constant need of moving back and forth between different formalizations capturing different aspects of a system. For example, in a large software system we typically have very different requirements, such as functional correctness, performance, real-time behavior, concurrency, security, and fault tolerance, which correspond to different views of the system and that are typically expressed in different formal systems. Often these requirements affect each other, but it can be extremely difficult to reason about their mutual interaction, and no tools exist to support such reasoning.

This situation is very unsatisfactory, and presents one of the biggest obstacles to the use of formal methods in software engineering because, given the complexity of large software systems, it is a fact of life that no single perspective, no single formalization or level of abstraction suffices to represent a system and reason about its behavior. We need (meta-)formal methods and tools to achieve Formal Interoperability, that is, the capacity to move in a mathematically rigorous way across the different formalizations of a system, and to use in a rigorously integrated way the different tools supporting these formalizations.

We will develop new, formal interoperability methodologies and generic meta-tools that are expected to achieve dramatic advances in software technology and formal methods:

Other Notes

  1. There is work related to hardware verification using our tools and methods and good potential for it in Maude:
  • In addition to the hardware verification applications, a subset of Maude called Simple Maude has been applied as a machine-independent parallel language to program parallel machines, and its suitablility for this purpose has been demonstated for the Rewrite Rule Machine (RRM) architecture. In particular, we have:
    1. A paper explaining Simple Maude and showing how it can be applied to program a very wide range of parallel applications
    2. A paper on parallel compilation for Simple Maude onto SIMD and MIMD/SIMD machines
    3. An experimental compiler that takes Simple Maude rewrite rule programs as inputs and generates parallel code in the RRM instruction set
    4. Simulation results, giving performance estimates for an RRM system running the parallel code for different applications, documented in several papers.
    The main advantages that we have found for using Simple Maude as a parallel language are:
    1. High level declarative way of programming, yet very well suited and versatile to express efficiently a wide range of applications such as signal processing, image processing, parallel simulations, and of course symbolic computing.
    2. Use of formal program transformations for optimizing the code is easy, because programs are logical theories
    3. Machine-independent, yet efficient compilers can be built for many different machines, including massively parallel ones
    4. Program verification is much more feasible than for conventional parallel languages (say HPF, or some parallel C++) because of the simple logical basis and semantics of the language.


    Last updated by Carolyn Talcott clt@cs.stanford.edu 10 July 1998.