1
1
Fork
You've already forked bezout
0
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
doc(traits): added some documentation
2025年07月06日 07:55:45 +02:00
examples example(two_squares): added example 2025年06月28日 12:06:58 +02:00
src doc(traits): added some documentation 2025年07月06日 07:55:45 +02:00
.gitignore feat(gitignore): added .gitignore 2025年05月30日 01:17:16 +02:00
.woodpecker.yaml ci(doc): don't build documentation for dependencies 2025年06月16日 20:25:20 +02:00
Cargo.lock feat: initial commit 2025年05月28日 16:41:55 +02:00
Cargo.toml feat: initial commit 2025年05月28日 16:41:55 +02:00
flake.lock feat: initial commit 2025年05月28日 16:41:55 +02:00
flake.nix feat: initial commit 2025年05月28日 16:41:55 +02:00
README.md doc(crate): markup 2025年06月16日 20:54:25 +02:00

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

  1. AbelianGroup
  2. Monoid
  3. Ring
  4. Domain
  5. NormalizationDomain
  6. CdDomain
  7. GcdDomain
  8. BezoutDomain
  9. Field
  10. EuclideanDomain

Structs defined by this crate

  1. Integer
  2. FractionField<R: CdDomain>
  3. Rational
  4. Polynomial<R: Ring>
  5. Complexification<R: Ring>
  6. GaussianInteger
  7. GaussianRational

Algorithms implemented in this crate

  1. Extended Euclidean Algorithm for computation of gcd and Bezout coefficients over a Euclidean Domain. This is used to implement the BezoutDomain trait for EuclideanDomains.
  2. Polynomial long division to implement the EuclideanDomain trait on Polynomial<K: Field>

Roadmap

  1. Define Residue rings of the integers. If the modulus is a prime number, the residue ring should implement the Field trait.
  2. Define Matrices over a Ring.
  3. Implement partial fraction decomposition over EuclideanDomains (in particular for polynomials over a field).
  4. Implement computation of the Smith normal form of a matrix over a euclidean domain.
  5. 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).
  6. Define CoherentRing trait and implement solution of linear equations over coherent rings. Implement the CoherentRing trait for Fields and for Bezout domains.
  7. Support modules, submodules and ideals.
  8. Implement Buchbergers's algorithm for computation of Gröbner bases over fields/integers. Use this to implement the CoherentRing trait on polynomial rings of several variables.
  9. Provide documentation and examples.