**Next:**Mathematical Bus

**Up:**The Connectivity Problem

**Previous:**Numerical Linear Algebra

## Weyl/Nuprl

In addition to the usual algebraic objects manipulated by computer algebra systems (polynomials, power series, vectors and matrices), our mathematics substrate Weyl [128], can represent objects from a variety other mathematical domains. For instance, using Weyl's ability to represent and perform arithmetic with functions (including those specified via their values at points), we were able to synthesize high dimensional dynamical systems from the Navier-Stokes equations using the Galerkin projection using only a page of code (compared to over fifty pages required using other techniques). Weyl's framework is general enough to support objects like simplices, simplicial complexes and other objects from geometry and topology as ``first class'' objects. Mesh generation software that takes advantage of these tools have been developed using Weyl.

The domains of which these objects are elements are also represented in Weyl. That is, not only are elements of rings, fields and vector spaces representable in Weyl, but the rings, fields and vector spaces themselves are Weyl objects. This facility provides a natural home for many mathematical properties that arise in computations. For instance, one can specify the algebraic extension over which to factor a polynomial by explicitly providing the algebraic number field. Determining which of several polynomial greatest common divisor routines should be used depends on properties of the coefficient domain of the polynomial (e.g., coefficient growth, characteristic, presence of zero divisors, etc.). In Weyl, this type of information can be managed and maintained in the rings themselves.

Increasingly, we are seeing that sophisticated mathematical
computations involve a non-trivial amount of deductive inference in
addition to calculation. For instance, an algebraic extension will be
free of zero divisors if a certain ideal is prime. Deductions of this
type and management of the vast array of mathematical theorems
involved in these deductions are more appropriately handled by a proof
development system like Nuprl [26]. With some success,
we have recently conducted some experiments that combine the
facilities of Weyl and Nuprl [53,54]. Nuprl was able to
axiomatize the domain structures used in Weyl, and create accurate and
effective semantic models for many issues that had previously been
treated in an * ad hoc* manner.

This broad coverage, and the fidelity with which we manipulate mathematics has made Weyl/Nuprl attractive as a platform for developing meshing algorithms, as an intermediary between geometric modeling programs and finite element solvers, and as the foundation of program transformation tools that synthesize numerical programs from specifications of mathematical computations [127].

However, this flexibility and fidelity has come at a cost in performance. Experiments have shown that the cost of repeated run-time dispatching for low level arithmetic operations, and the constant ``re-boxing'' of objects to provide a place to attach the mathematical domain can be excessive. While clever use of the ``template'' and ``RTTI'' mechanisms in can resolve some of these problems, additional research is needed to develop methodologies for using these ideas in maintainable code.

**Next:**Mathematical Bus

**Up:**The Connectivity Problem

**Previous:**Numerical Linear Algebra

*nuprl project*

Tue Nov 21 08:50:14 EST 1995

Tue Nov 21 08:50:14 EST 1995