computational-algebra
General-Purpose Computer Algebra System as an EDSL in Haskell
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
Repository
General-Purpose Computer Algebra System as an EDSL in Haskell
Basic Info
- Host: GitHub
- Owner: konn
- License: bsd-3-clause
- Language: HTML
- Default Branch: master
- Homepage: http://konn.github.io/computational-algebra/
- Size: 117 MB
Statistics
- Stars: 92
- Watchers: 14
- Forks: 9
- Open Issues: 6
- Releases: 0
Topics
Metadata Files
README.md
Computational Algebra Library
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
- Website: https://konn-san.com
- Twitter: mr_konn
- Repositories: 258
- Profile: https://github.com/konn
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
Top Committers
| Name | 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.
- Homepage: https://konn.github.com/computational-algebra
- License: BSD-3-Clause
-
Latest release: 0.5.1.0
published about 8 years ago
Rankings
Maintainers (1)
Dependencies
- algebra *
- algebraic-prelude *
- base >=4.7 && <5
- base *
- computational-algebra *
- factor-hensel *
- base * test
- factor-hensel * test
- MonadRandom *
- algebra *
- algebraic-prelude *
- base >=4.7 && <5
- containers *
- entropy *
- halg-factor *
- halg-polynomials *
- integer-roots *
- lens *
- mono-traversable *
- sized *
- base >=4.7 && <5
- halg-core *
- halg-polyn-parser *
- halg-polynomials *
- megaparsec >=7.0
- process-extras *
- semigroups *
- text *
- transformers *
- type-natural *
- 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 *
- 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
- 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 *
- 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 *
- 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
- 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
- actions/github-script v5 composite
- peaceiris/actions-gh-pages v3 composite
- registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
- registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
- registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
- registry.gitlab.com/konn/computational-algebra/build-pre 0.6.0.0 build
- fpco/stack-build lts-14.20 build
- ubuntu 20.04 build
- algebra >=4.3
- algebra >=4.3.1
- algebraic-prelude *
- base *
- base >=4.7 && <5
- basic-prelude *
- lens >=4.0 && <5.2
- semigroups *
- 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 *