1 research outputs found
Applications of the Gauss-Jordan algorithm, done right
Computer Algebra systems are widely spread because of some of their
remarkable features such as their ease of use and performance. Nonetheless,
this focus on performance sometimes leads to unwanted consequences: algorithms
and computations are implemented and carried out in a way which is sometimes
not transparent to the users, and that can lead to unexpected failures. In this
paper we present a formalisation in a proof assistant system of a \emph{naive}
version of the Gauss-Jordan algorithm, with explicit proofs of some of its
applications, and additionally a process to obtain versions of this algorithm
in two different functional languages (SML and Haskell) by means of code
generation techniques from the verified algorithm. The obtained programs are
then applied to test cases, which, despite the simplicity of the original
algorithm, have shown remarkable features in comparison to some Computer
Algebra systems, such as Mathematica\textsuperscript{\textregistered} (where
some of these computations are even incorrect), or Sage (in comparison to which
the generated programs show a compelling performance). The aim of the paper is
to show that, with the current technology in Theorem Proving, formalising
Linear Algebra procedures is a challenging but rewarding task, which provides
programs that can be compared in some aspects to \emph{state of the art}
procedures in Computer Algebra systems, and whose correctness is formally
proved