5 research outputs found
A Purely Functional Computer Algebra System Embedded in Haskell
We demonstrate how methods in Functional Programming can be used to implement
a computer algebra system. As a proof-of-concept, we present the
computational-algebra package. It is a computer algebra system implemented as
an embedded domain-specific language in Haskell, a purely functional
programming language. Utilising methods in functional programming and prominent
features of Haskell, this library achieves safety, composability, and
correctness at the same time. To demonstrate the advantages of our approach, we
have implemented advanced Gr\"{o}bner basis algorithms, such as Faug\`{e}re's
and , in a composable way.Comment: 16 pages, Accepted to CASC 201
Type Classes for Mathematics in Type Theory
The introduction of first-class type classes in the Coq system calls for
re-examination of the basic interfaces used for mathematical formalization in
type theory. We present a new set of type classes for mathematics and take full
advantage of their unique features to make practical a particularly flexible
approach formerly thought infeasible. Thus, we address both traditional proof
engineering challenges as well as new ones resulting from our ambition to build
upon this development a library of constructive analysis in which abstraction
penalties inhibiting efficient computation are reduced to a minimum.
The base of our development consists of type classes representing a standard
algebraic hierarchy, as well as portions of category theory and universal
algebra. On this foundation we build a set of mathematically sound abstract
interfaces for different kinds of numbers, succinctly expressed using
categorical language and universal algebra constructions. Strategic use of type
classes lets us support these high-level theory-friendly definitions while
still enabling efficient implementations unhindered by gratuitous indirection,
conversion or projection.
Algebra thrives on the interplay between syntax and semantics. The
Prolog-like abilities of type class instance resolution allow us to
conveniently define a quote function, thus facilitating the use of reflective
techniques
Type Systems for Computer Algebra
I Zusammenfassung III 1 Introduction 1 2 Prelude 7 2.1 Terminology : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 2.1.1 Abstract Data Types : : : : : : : : : : : : : : : : : : : : : : : : 7 2.1.2 Polymorphism : : : : : : : : : : : : : : : : : : : : : : : : : : : 8 2.1.3 Coercions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 10 2.2 General Notation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 11 2.3 Partial Orders and Quasi-Lattices : : : : : : : : : : : : : : : : : : : : : 11 2.4 Order-Sorted Algebras : : : : : : : : : : : : : : : : : : : : : : : : : : : 14 2.5 Category Theory : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 18 2.6 The Type System of AXIOM : : : : : : : : : : : : : : : : : : : : : : : 20 2.6.1 Categories : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 21 2.6.2 Coercions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 22 3 Type Classes 23 3.1 Types as Terms of an Order-Sorted Signature : : :..
A Proposal to Study Type Systems for Computer Algebra
It is widely recognized that programming languages should offer features to help structure programs. To achieve this goal, languages like Ada, Modula-2, objectoriented languages, and functional languages have been developed. The structuring techniques available so far (like modules, classes, parametric polymorphism) are still not enough or not appropriate for some application areas. In symbolic computation, in particular computer algebra, several problems occur that are difficult to handle with any existing programming language. Indeed, nearly all available computer algebra systems suffer from the fact that the underlying programming language imposes too many restrictions. We propose to develop a language that combines the essential features from functional languages, object-oriented languages, and computer algebra systems in a semantically clean manner. Although intended for use in symbolic computation, this language should prove interesting as a general purpose programming language. ..