A Rust library for Commutative Algebra
https://jdw.codeberg.page/bezout
- Rust 99.2%
- Nix 0.8%
|
Jakob Werner
d2075a057d
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
|
||
|---|---|---|
| examples | example(two_squares): added example | |
| src | doc(traits): added some documentation | |
| .gitignore | feat(gitignore): added .gitignore | |
| .woodpecker.yaml | ci(doc): don't build documentation for dependencies | |
| Cargo.lock | feat: initial commit | |
| Cargo.toml | feat: initial commit | |
| flake.lock | feat: initial commit | |
| flake.nix | feat: initial commit | |
| README.md | doc(crate): markup | |
Bézout
The crate bezout implements some concepts from commutative algebra.
In general, categories like the category of rings, Euclidean rings or fields are realized as traits and objects of those categories like the integers or polynomial rings are realized as structs implementing those traits.
The name of the crate refers to Étienne Bézout because one of the early goals of the crate was to implement the computation of Bézout coefficients in Euclidean domains.
(Rudimentary) documentation is available at jdw.codeberg.page/bezout.
Traits defined by this crate
AbelianGroupMonoidRingDomainNormalizationDomainCdDomainGcdDomainBezoutDomainFieldEuclideanDomain
Structs defined by this crate
IntegerFractionField<R: CdDomain>RationalPolynomial<R: Ring>Complexification<R: Ring>GaussianIntegerGaussianRational
Algorithms implemented in this crate
- Extended Euclidean Algorithm for computation of gcd and Bezout coefficients over a Euclidean Domain. This is used to implement the
BezoutDomaintrait forEuclideanDomains. - Polynomial long division to implement the
EuclideanDomaintrait onPolynomial<K: Field>
Roadmap
- Define Residue rings of the integers. If the modulus is a prime number, the residue ring should implement the
Fieldtrait. - Define Matrices over a Ring.
- Implement partial fraction decomposition over
EuclideanDomains (in particular for polynomials over a field). - Implement computation of the Smith normal form of a matrix over a euclidean domain.
- Implement Frobenius normal form computation for matrices over a field (making use of the smith normal form over the polynomial ring, see Bosch's linear algebra book).
- Define
CoherentRingtrait and implement solution of linear equations over coherent rings. Implement theCoherentRingtrait for Fields and for Bezout domains. - Support modules, submodules and ideals.
- Implement Buchbergers's algorithm for computation of Gröbner bases over fields/integers. Use this to implement the
CoherentRingtrait on polynomial rings of several variables. - Provide documentation and examples.