Computational science will be the dominant paradigm for science in the next century. This proposal addresses one of the major challenges facing this new kind of science---the demand for better software support for computational mathematics. The task of providing this support is sufficiently central to the national interest and sufficiently comprehensive that it could serve as a Grand Challenge problem for computer science.
A strategy for meeting this challenge has evolved from inter-project cooperation at Cornell on the elements of scientific computing. This proposal represents a collaboration among five computer scientists with diverse backgrounds: scientific computing, computational geometry, computer algebra, applied logic, and programming languages. In various combinations these people have worked together, and software from their separate projects has been linked. Their experience with the difficulty of this linking process has led to the identification and to the prospective solutions of three major problems: the connectivity problem, the code generation problem, and the explanation problem. The problems and their solutions are briefly explained below. This proposal outlines a plan to design and implement an open system architecture that will integrate a variety of computational science tools into an environment that supports collaborative activity.
Many interesting and powerful tools exist to support computational mathematics (for example, Matlab, Lapack, Mathematica, Axiom, Ellpack, PLTMG, Autocad, and LEDA), but most of these are focused on one specific area or on one specific style of computation. These systems are largely self-contained and closed, connecting to other software only at a very low level of abstraction, using, for instance, string-to-string communication. They do not have a common semantic base that would allow one system to ``collaborate'' with another. This is the connectivity problem. To address the connectivity problem, a common mathematical bus (the MathBus) will serve as the backbone of the system. Its communication protocols will be based on a typed formal language which provides the semantics for collaboration. A major design objective is to raise the level of communication among software tools, allowing the communication of mathematical objects instead of being restricted to simple strings.
Although existing software has contributed substantially to scientific programming productivity, the time taken to generate code remains a major impediment to progress in computational science. This is the code creation problem. In part, this problem is due to the difficulty of expressing certain mathematical techniques as subroutines. The problem of code creation is addressed with a method of transformation and refinement, allowing the transformation of high-level mathematical expressions into more-traditional code.
One of the reasons that sharing code with a colleague is difficult is because there is no common language for explaining what a program does and for precisely giving the conditions necessary to apply it. This is the explanation problem. The solution to the connectivity problem also provides an approach to explanation, namely to provide formal and semi-formal semantic standards for communications and linkage on the proposed MathBus.
The problem solutions outlined here lead to an additional opportunity. Once tools can inter-operate and mathematical models can be shared, it becomes possible to create collections of mathematical theorems, explanations, and examples and counterexamples. Such a mathematical database could capture an important part of mathematical knowledge that is at best poorly represented by books and journals.
Paul Chew, Robert L. Constable, Keshav Pingali, Steve Vavasis, Richard Zippel