# 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.

#### Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

• No Candidates
Versions [RSS] 1.0.0.0, 1.0.0.1, 1.1.0.0, 1.1.4.0 CHANGELOG.md array (>=0.5 && <1), base (>=4.16 && <5), deepseq (>=1.4 && <2), random (>=1.2 && <2), time (>=1.11 && <2) [details] BSD-3-Clause Erich Gut Erich.Gut zerich.gut@gmail.com Mathematics, Algebra, Category https://github.com/zErichGut/oalg-main#readme https://github.com/zErichGut/oalg-main/issues head: git clone https://github.com/zErichGut/oalg-main(oalg-base) by zErichGuz at 2024-01-05T05:36:16Z NixOS:1.1.4.0 1 direct, 0 indirect [details] 94 total (12 in the last 30 days) (no votes yet) [estimated by Bayesian average] λ λ λ Docs available Last success reported on 2024-01-05