
AbstractAlgebra: Computer algebra package for Julia language - alokrai
https://nemocas.github.io/AbstractAlgebra.jl/latest/index.html
======
lidHanteyk
This library is cool and I may end up cribbing some of its design. It's
unfortunate that they did not include semirings directly, which have many
interesting algebraic uses. [0]

[0]
[http://stedolan.net/research/semirings.pdf](http://stedolan.net/research/semirings.pdf)

~~~
mncharity
> It's unfortunate that they did not include [...]

I'm _so_ looking forward to a language type system expressive enough to do a
pushout lattice of <types,operators,laws> theories. So semiring, and
everything else, can simply and uniquely exist. Instead of the pervasive "It's
unfortunate that they did not include"... so very much. Instantly
instantiatable platonic forms, instead of years of proposals, endless
discussions, and standardization committee meetings. Dancing math, instead of
slathering api glue.

~~~
epatters
Within the Julia ecosystem, you might be interested in Catlab
([https://github.com/epatters/Catlab.jl](https://github.com/epatters/Catlab.jl)),
as we are actively working to build something very much along these lines. We
already have in place a system for describing generalized algebraic theories
(GATs) in Julia and generating symbolic expressions for them. In the future,
we intend to implement pushouts of GATs as an algebraic approach to theory
fusion. We are currently in the planning stage of this part of the project and
hope to get something working this year.

~~~
mncharity
Nifty. Perhaps add a copy of the documentation link[1] to the top of the
README? Friction minimization...

[1]
[https://epatters.github.io/Catlab.jl/latest/](https://epatters.github.io/Catlab.jl/latest/)

------
thisrod
This sounds nice. As a quantum optics programmer, I really like the idea of a
generic polynomial and matrix library that is careful not to assume products
are commutative.

~~~
thisrod
Also, the manual seems finished, which is unusual for a Julia package.

------
allisterb
Also for F#:
[https://github.com/allisterb/Sylvester/tree/master/src/Math/...](https://github.com/allisterb/Sylvester/tree/master/src/Math/Sylvester.AbstractAlgebra)

Contains both rigorous definitions and theories for use by the Sylph prover.

------
frabert
Given the name, I expected more focus on stuff like lattices, instead it seems
mostly numerical stuff.

Still neat, though!

~~~
red_trumpet
This is the feature list from the link:

    
    
        - Use of Julia multiprecision integers and rationals
        - Finite fields (prime order, naive implementation only)
        - Number fields (naive implementation only)
        - Univariate polynomials
        - Multivariate polynomials
        - Relative and absolute power series
        - Laurent series
        - Fraction fields
        - Residue rings, including Z/nZ
        - Matrices and linear algebra
    

What exactly do you consider "numerical" here? AFAIU those are all standard
constructions from abstract algebra and number theory.

~~~
abjKT26nO8
You're mostly right, with one (or two) exception: _> Matrices and linear
algebra_. This isn't abstract algebra. It's used in abstract algebra, but
that's true for linear algebra in almost any branch of mathematics. Also,
depending on what exactly they implemented for _Univariate polynomials_ , this
part may also be numerical.

~~~
omaranto
Did you look at the documentation? The matrices implemented have their
elements in arbitrary commutative rings (well, not arbitrary, somebody has to
implement them in Julia, of course, but they have a bunch). I think its fair
to call that abstract algebra; I wouldn't it numeric. In my university, that's
how we teach linear algebra to math majors but not to engineers, for example.

