Indiana University Bloomington

School of Informatics and Computing

Technical Report TR638:
Fundamental Algebraic Concepts in Concept-Enabled C++

Peter Gottschling
(Oct 2006), 135 pages
Algebraic concepts are the theoretical background of generic linear algebra software. The specification of these concepts together with the corresponding model declarations enables the compiler to verify the applicability of types within template functions. The availability of semantic properties in addition to syntactic ones establishes a new qualitity of software reliability because semantic errors are transparent to C++ compilers without concepts and lead to wrong executables without notice in the compilation process. Exposing semantic properties in source code has a tremendous impact on software reliability and maintainability. We call this new paradigm Property-Aware Programming.

This is the first paper in this new research area and we focus here on algebraic properties. Our specification of these properties in terms of concepts provides a fine-grained distinction between different basic properties and establishes a clear border between mathematical and implementation requirements.

The application of these concepts is illustrated on the generic computation of the power function. Other important applications of algebraic concepts shown in this paper are the constraints on generic reductions in order to verify? the applicability of high-performance source code transformations and the type-dependent and operation-aware handling of rounding errors. In addition, theory on the inclusion of model sets with respect to arity-changing refinements is introduced.

Available as: