oalg-base: Algebraic structures on oriented entities and limits as a tool kit to solve algebraic problems.

[ algebra, bsd3, category, library, mathematics ] [ Propose Tags ]

Basic definition of algebraic structures on oriented entities.

First of all we define entities (OAlg.Entity.Definition). Based on them and since we look at algebra through the lens of categories, we define oriented (OAlg.Structure.Oriented.Definition) structures on which, by means of a suitable partially defined multiplication, multiplicative (OAlg.Structure.Multiplicative.Definition) structures are defined. If one provides such a multiplicative structure with a matching additive (OAlg.Structure.Additive.Definition) structure, one obtains distributive (OAlg.Structure.Distributive.Definition) structures on which matrices (OAlg.Entity.Matrix.Definition) are build. If an additive structure is provided with a matching scalar multiplication, vectorial (OAlg.Structure.Vectorial.Definition) structures are obtained, which then form - together with the distributive structures - the basis for algebraic (OAlg.Structure.Algebraic.Definition) structures

Limits (OAlg.Limes.Limits) - in context of categories - serve as a backbone for solving algebraic problems, e. g. finding all solutions of the equation a * x == 0 is given by the kernel (OAlg.Limes.KernelsAndCokernels) of a.

Particular attention is paid to the duality (OAlg.Data.Dualisable) of concepts - viewed through the lens of categories - so that the implementation of the dual concept could be traced back to the original one to avoid duplicate or redundant implementation efforts.

A central feature in this package is that all functions defined here - unless otherwise stated - are total and means if the input values are valid (OAlg.Data.Validable) then the resulting value is also valid. Most functions do not check their preconditions. Therefore, all data structures defined here are provided with a property section that is translated into a corresponding statement (OAlg.Data.Statement.Definition) so that they can be validated (OAlg.Control.Validate) as needed. If there is an exception to this rule - such as for partially defined algebraic operators - the rule is extended by if the input values are valid and fulfill the additional required properties, then the resulting value is also valid. Most of the algebraic operators do check there additional required preconditions.

Since the algebraic operators - such as (*), (+), (.)... - have been redefined here, one should exclude the standard Prelude when using this package, to avoid ambiguity, and use the Prelude (OAlg.Prelude) provided here.

Throughout the descripitions in this package we denote type variables in bold lower case letters to distinguishing them from variables for values of a type.

Since we take the view that a value of a data structure or an instance of a class must strictly fulfill the required properties to be valid, Double, for example, has not been implemented as a numerical type.

Please see also the README on GitHub at https://github.com/zErichGut/oalg-main/blob/main/oalg-base/README.md

[Skip to Readme]


[Index] [Quick Jump]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS],,,
Change log CHANGELOG.md
Dependencies array (>=0.5 && <1), base (>=4.16 && <5), deepseq (>=1.4 && <2), random (>=1.2 && <2), time (>=1.11 && <2) [details]
License BSD-3-Clause
Copyright Erich Gut
Author Erich.Gut
Maintainer zerich.gut@gmail.com
Category Mathematics, Algebra, Category
Home page https://github.com/zErichGut/oalg-main#readme
Bug tracker https://github.com/zErichGut/oalg-main/issues
Source repo head: git clone https://github.com/zErichGut/oalg-main(oalg-base)
Uploaded by zErichGuz at 2024-01-05T05:36:16Z
Distributions NixOS:
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 94 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-01-05 [all 1 reports]

Readme for oalg-base-

[back to package description]


A package for solving algebraic problems purely written in Haskell. See the contents in the provided documentation.