We review 3 different applications of the same development methodology. We
begin by using a very expressive, appropriate Domain Specific Language (in
this case mathematics as embodied in a Computer Algebra System), to write
down very precise problem definitions, using their most natural formulation.
Once these problems are defined, this forms an implicit definition of a unique
solution. From the problem statement, our model, we use mathematical
transformations to make the problem simpler to solve computationally. We
call this crucial step “model manipulation.” With the model rephrased in
more computational terms, we can also derive various quantities directly
from this model, which greatly simplify traditional numeric solutions, our
eventual goal. From all this data, we then use standard code generation
and code transformation techniques to generate lower-level code to perform
the final numerical steps. This methodology is very flexible, generates faster
code, and generates code which would have been all but impossible for a
human programmer to get correct.