The Scala library

One intermediate step toward the goal of bridging the gap between the derivation of numerical algorithms and their implementation is the development of a mathematical library for the programming language Scala. The language was chosen because it supports functional programming features which allow a style of programming which is closer to mathematics than purely object oriented languages.

The library provides classes representing common mathematical objects and their functionalities. These include polynomials, coordinate vectors, matrices (sparse and dense), vector spaces, and many more. The idea is that implementations which use concepts similar to those appearing in the mathematical derivation of the algorithms exhibit less errors due translation of mathematical objects and concepts into language specific ones.

However, by reducing translation errors, the library doesn't tackle the problem of logical errors. This would require a formulation in a language like $\mmath$ which is strong enough to model the programming language and reason about the correctness of corresponding algorithms. But also in this context, the availibility of suitable library functions with high reusability and a well developed theory would be very helpful to structure and simplify the correctness proofs. Therefore, the library is an important step towards the goal of logically verified programs.