computational-algebra

General-Purpose Computer Algebra System as an EDSL in Haskell

https://github.com/konn/computational-algebra

Science Score: 64.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    4 of 9 committers (44.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.5%) to scientific vocabulary

Keywords

algorithm computational-algebra groebner-basis haskell ideal math mathematics polynomial
Last synced: 4 months ago · JSON representation ·

Repository

General-Purpose Computer Algebra System as an EDSL in Haskell

Basic Info
Statistics
  • Stars: 92
  • Watchers: 14
  • Forks: 9
  • Open Issues: 6
  • Releases: 0
Topics
algorithm computational-algebra groebner-basis haskell ideal math mathematics polynomial
Created almost 13 years ago · Last pushed over 1 year ago
Metadata Files
Readme Funding License Citation

README.md

Computational Algebra Library

pipeline status coverage report

For more detail, please read Official Project Site.

Overview

The computational-algebra is the computational algebra system, implemented as a Embedded Domain Specific Language (EDSL) in Haskell. This library provides many functionality for computational algebra, especially ideal computation such as Groebner basis calculation.

Thanks to Haskell's powerful language features, this library achieves the following goals:

Type-Safety : Haskell's static type system enforces static correctness and prevents you from violating invariants.

Flexibility : With the powerful type-system of Haskell, we can write highly abstract program resulted in easy-to-extend system.

Efficiency : Haskell comes with many aggressive optimization mechanism and parallel computation features, which enables us to write efficient program.

This package currently provides the following functionalities:

  • Groebner basis calculation w.r.t. arbitrary monomial ordering
    • Currently using Buchberger's algorithm with some optimization
    • Faugere's F_4 algorithms is experimentally implemented, but currently not as fast as Buchberger's algorithm
  • Computation in the (multivariate) polynomial ring over arbitarary field and its quotient ring
    • Ideal membership problem
    • Ideal operations such as intersection, saturation and so on.
    • Zero-dimensional ideal operation and conversion via FGLM algorithm
    • Variable elimination
  • Find numeric solutions for polynomial system with real coefficient

Requirements and Installation

Old version of this package is uploaded on Hackage, but it's rather outdated. Most recent version of computational-algebra is developed on GitHub.

It uses the most agressive language features recently implemented in Glasgow Haskell Compiler, so it requires at least GHC 8.0.1 and also it depends on many packages currently not available on Hackage, but you can install it fairly easily with help of The Haskell Tool Stack.

zsh $ curl -sSL https://get.haskellstack.org/ | sh # if you haven't install Stack yet $ git clone https://github.com/konn/computational-algebra $ cd computational-algebra $ stack build

In addition, you may need to install GSL and LAPACK (for matrix computation) beforehand. You can install them via Homebrew (OS X), apt-get, or other major package management systems.

Paper

  • Hiromi Ishii, A Purely Functional Computer Algebra System Embedded in Haskell. Computer Algebra in Scientific Computing, pp. 288-303. 20th International Workshop, CASC 2018, Lille, France, September 17-21, 2018, Proceedings (arXiv).

Read More in Official Project Site

Owner

  • Name: Hiromi Ishii
  • Login: konn
  • Kind: user
  • Location: Tokyo
  • Company: Jij, Inc. @Jij-inc

Dependent Haskeller / Linear Haskell Advocate, Ph.D. in Math. Writing some Rust for living for a while.

Citation (CITATION.cff)

cff-version: 1.2.0
message: |
  If you use this software, please cite it using these metadata.
title: The computational-algebra package
abstract: |
  Well-kinded computational algebra system as an EDSL in Haskell.
authors:
  - family-names: Ishii
    given-names: Hiromi
preferred-citation:
  authors:
    - family-names: Ishii
      given-names: Hiromi
  title: "A Purely Functional Computer Algebra System Embedded in Haskell"
  type: article
  doi: 10.1007/978-3-319-99639-4_20
  collection-title: "CASC 2018: Computer Algebra in Scientific Computing"
  collection-type: proceedings
  isbn: 978-3-319-99639-4
  publisher:
    name: Springer
  year: 2018
  pages: "288-303"
identifiers:
  - description: |
      The original paper describing the entire architecture of the library.
    type: doi
    value: "10.1007/978-3-319-99639-4_20"
  - description: |
      The arXiv preprint version of the original paper.
    type: other
    value: "arXiv:1807.01456"
  - description: |
      Haskell package uploaded to Hackage
    type: url
    value: https://hackage.haskell.org/package/computational-algebra
    

repository-code: "https://github.com/konn/computational-algebra"

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 1,138
  • Total Committers: 9
  • Avg Commits per committer: 126.444
  • Development Distribution Score (DDS): 0.15
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Hiromi ISHII k****o@g****m 967
Hiromi ISHII k****m 163
Hiromi Ishii h****i@g****p 2
shingo tomura t****8@g****m 1
sheaf s****e@g****m 1
Gabor Greif g****f@g****m 1
Akira Terui t****i@m****p 1
T. Hikawa s****2@u****p 1
Nick_23 s****2@u****p 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 6
  • Total pull requests: 17
  • Average time to close issues: 4 months
  • Average time to close pull requests: 20 days
  • Total issue authors: 4
  • Total pull request authors: 4
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.53
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • sheaf (2)
  • cartazio (2)
  • jarble (1)
  • andersk (1)
Pull Request Authors
  • konn (14)
  • ggreif (1)
  • ldr709 (1)
  • sheaf (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • hackage 15,871 total
  • Total dependent packages: 0
  • Total dependent repositories: 2
  • Total versions: 19
  • Total maintainers: 1
hackage.haskell.org: computational-algebra

Dependently-typed computational algebra library for Groebner basis.

  • Versions: 19
  • Dependent Packages: 0
  • Dependent Repositories: 2
  • Downloads: 15,871 Total
Rankings
Stargazers count: 8.7%
Downloads: 9.5%
Forks count: 12.3%
Average: 16.1%
Dependent packages count: 19.3%
Dependent repos count: 30.8%
Maintainers (1)
Last synced: 4 months ago

Dependencies

factor-hensel/factor-hensel.cabal hackage
  • algebra *
  • algebraic-prelude *
  • base >=4.7 && <5
  • base *
  • computational-algebra *
  • factor-hensel *
  • base * test
  • factor-hensel * test
halg-algebraic/halg-algebraic.cabal hackage
  • MonadRandom *
  • algebra *
  • algebraic-prelude *
  • base >=4.7 && <5
  • containers *
  • entropy *
  • halg-factor *
  • halg-polynomials *
  • integer-roots *
  • lens *
  • mono-traversable *
  • sized *
halg-bridge-singular/halg-bridge-singular.cabal hackage
  • base >=4.7 && <5
  • halg-core *
  • halg-polyn-parser *
  • halg-polynomials *
  • megaparsec >=7.0
  • process-extras *
  • semigroups *
  • text *
  • transformers *
  • type-natural *
halg-core/halg-core.cabal hackage
  • ListLike * benchmark
  • MonadRandom * benchmark
  • algebra * benchmark
  • algebraic-prelude * benchmark
  • base >=4.7 && <5 benchmark
  • constraints * benchmark
  • containers * benchmark
  • convertible * benchmark
  • deepseq * benchmark
  • equational-reasoning * benchmark
  • foldl * benchmark
  • gauge * benchmark
  • ghc-typelits-knownnat * benchmark
  • ghc-typelits-natnormalise * benchmark
  • ghc-typelits-presburger >=0.4 benchmark
  • halg-core * benchmark
  • hashable * benchmark
  • intern * benchmark
  • lens * benchmark
  • mono-traversable * benchmark
  • reflection * benchmark
  • singletons <3.0 benchmark
  • singletons >=3.0 benchmark
  • singletons-base * benchmark
  • singletons-presburger >=0.4 benchmark
  • sized * benchmark
  • type-natural * benchmark
  • unordered-containers * benchmark
  • vector * benchmark
  • vector-instances * benchmark
  • ListLike *
  • MonadRandom *
  • algebra *
  • algebraic-prelude *
  • base >=4.7 && <5
  • constraints *
  • containers *
  • convertible *
  • deepseq *
  • equational-reasoning *
  • foldl *
  • ghc-typelits-knownnat *
  • ghc-typelits-natnormalise *
  • ghc-typelits-presburger >=0.4
  • hashable *
  • intern *
  • lens *
  • mono-traversable *
  • reflection *
  • singletons <3.0
  • singletons >=3.0
  • singletons-base *
  • singletons-presburger >=0.4
  • sized *
  • type-natural *
  • unordered-containers *
  • vector *
  • vector-instances *
halg-factor/halg-factor.cabal hackage
  • MonadRandom * benchmark
  • algebraic-prelude * benchmark
  • base >=4.7 && <5 benchmark
  • deepseq * benchmark
  • gauge * benchmark
  • halg-core * benchmark
  • halg-factor * benchmark
  • halg-galois-fields * benchmark
  • halg-polynomials * benchmark
  • MonadRandom *
  • algebra *
  • algebraic-prelude *
  • arithmoi >=0.9
  • base *
  • base >=4.7 && <5
  • containers *
  • control-monad-loop *
  • deepseq *
  • dlist *
  • fmlist *
  • halg-core *
  • halg-factor *
  • halg-polynomials *
  • integer-logarithms *
  • lens *
  • monad-loops *
  • mono-traversable *
  • mtl *
  • primes *
  • sized *
  • type-natural *
  • vector *
  • HUnit * test
  • MonadRandom * test
  • QuickCheck >=2.12 test
  • algebraic-prelude * test
  • arithmoi * test
  • base >=4.7 && <5 test
  • containers * test
  • halg-core * test
  • halg-core-test * test
  • halg-factor * test
  • halg-galois-fields * test
  • halg-polynomials * test
  • hspec * test
  • lens * test
  • quickcheck-instances * test
  • unordered-containers * test
halg-matrices/halg-matrices.cabal hackage
  • MonadRandom * benchmark
  • QuickCheck * benchmark
  • algebra * benchmark
  • algebraic-prelude * benchmark
  • base >=4.7 && <5 benchmark
  • containers * benchmark
  • deepseq * benchmark
  • directory * benchmark
  • filepath * benchmark
  • gauge * benchmark
  • halg-core * benchmark
  • halg-core-test * benchmark
  • halg-matrices * benchmark
  • halg-polynomials * benchmark
  • hmatrix * benchmark
  • lens * benchmark
  • matrix * benchmark
  • monad-loops * benchmark
  • mtl * benchmark
  • parallel * benchmark
  • primes * benchmark
  • primitive * benchmark
  • random * benchmark
  • reflection * benchmark
  • split * benchmark
  • vector * benchmark
  • MonadRandom *
  • algebra *
  • algebraic-prelude *
  • base >=4.7 && <5
  • containers *
  • deepseq *
  • halg-core *
  • halg-polynomials *
  • hmatrix *
  • lens *
  • matrix *
  • monad-loops *
  • mtl *
  • parallel *
  • primes *
  • primitive *
  • reflection *
  • vector *
halg-polyn-parser/halg-polyn-parser.cabal hackage
  • algebraic-prelude *
  • base >=4.7 && <5
  • halg-core *
  • megaparsec >=7.0
  • parser-combinators >=1.1
  • singletons <3.0
  • singletons >=3.0
  • singletons-base *
  • text *
  • type-natural *
halg-polynomials/halg-polynomials.cabal hackage
  • algebra *
  • algebraic-prelude *
  • base >=4.7 && <5
  • containers *
  • deepseq *
  • equational-reasoning *
  • ghc-typelits-knownnat *
  • halg-core *
  • hashable *
  • heaps *
  • lens *
  • matrix *
  • monad-loops *
  • mono-traversable *
  • reflection *
  • singletons >=3.0
  • singletons <3.0
  • singletons-base *
  • singletons-presburger *
  • sized *
  • text *
  • type-natural *
  • unamb *
  • unordered-containers *
  • vector *
  • QuickCheck * test
  • algebra * test
  • algebraic-prelude * test
  • base * test
  • containers * test
  • halg-core * test
  • halg-core-test * test
  • halg-polynomials * test
  • hspec * test
  • hspec-discover * test
  • matrix * test
  • sized * test
  • vector * test
.github/workflows/haskell.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • actions/download-artifact v2 composite
  • actions/upload-artifact v2.2.3 composite
  • haskell/actions/setup v1 composite
.github/workflows/pages.yml actions
  • actions/github-script v5 composite
  • peaceiris/actions-gh-pages v3 composite
dockerfiles/build/ghc-8.10/Dockerfile docker
  • registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
dockerfiles/build/ghc-8.4/Dockerfile docker
  • registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
dockerfiles/build/ghc-8.6/Dockerfile docker
  • registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
dockerfiles/build/ghc-8.8/Dockerfile docker
  • registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
dockerfiles/build-pre/Dockerfile docker
  • fpco/stack-build lts-14.20 build
dockerfiles/gha/Dockerfile docker
  • ubuntu 20.04 build
algebraic-prelude/algebraic-prelude.cabal hackage
  • algebra >=4.3
  • algebra >=4.3.1
  • algebraic-prelude *
  • base *
  • base >=4.7 && <5
  • basic-prelude *
  • lens >=4.0 && <5.2
  • semigroups *
halg-galois-fields/halg-galois-fields.cabal hackage
  • MonadRandom *
  • algebra *
  • algebraic-prelude *
  • base >=4.7 && <5
  • deepseq *
  • directory *
  • equational-reasoning *
  • ghc-typelits-presburger *
  • halg-core *
  • halg-polynomials *
  • lens *
  • monad-loops *
  • reflection *
  • singletons *
  • sized *
  • template-haskell *
  • type-natural *
  • vector *