5 research outputs found

    A Purely Functional Computer Algebra System Embedded in Haskell

    Full text link
    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 F4F_4 and F5F_5, in a composable way.Comment: 16 pages, Accepted to CASC 201

    Type Classes for Mathematics in Type Theory

    Get PDF
    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

    数学と計算機科学の相互作用:計算代数とHaskellにおける安全性と拡張性

    Get PDF
    筑波大学 (University of Tsukuba)201

    Type Systems for Computer Algebra

    No full text
    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

    No full text
    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. ..
    corecore