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

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

A package for solving algebraic problems purely written in Haskell.

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

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 OAlg.Limes.KernelsAndCokernels of a.

Particular attention is paid to the 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 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 OAlg.Data.Statement.Definition so that they can be 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, the resulting value is also valid. Most of the algebraic operators do check the 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 OAlg.Prelude provided here.

Throughout the descripitions in this package we denote type variables in lower case bold 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]

Modules

[Last Documentation]

  • OAlg
    • OAlg.Adjunction
      • OAlg.Adjunction.Definition
      • OAlg.Adjunction.Limes
    • Category
      • OAlg.Category.Applicative
      • OAlg.Category.Definition
      • OAlg.Category.Path
      • OAlg.Category.Proposition
      • OAlg.Category.Unify
    • Control
      • OAlg.Control.Action
      • OAlg.Control.Exception
      • OAlg.Control.HNFData
      • OAlg.Control.Solver
      • OAlg.Control.Validate
      • OAlg.Control.Verbose
    • Data
      • OAlg.Data.Boolean
        • OAlg.Data.Boolean.Definition
        • OAlg.Data.Boolean.Proposition
      • OAlg.Data.Canonical
      • OAlg.Data.Constructable
      • OAlg.Data.Dualisable
      • OAlg.Data.Either
      • OAlg.Data.Equal
      • OAlg.Data.Generator
      • OAlg.Data.Identity
      • OAlg.Data.Maybe
      • OAlg.Data.Number
      • OAlg.Data.Opposite
      • OAlg.Data.Ord
      • OAlg.Data.Reducible
      • OAlg.Data.Show
      • OAlg.Data.Singleton
      • OAlg.Data.Singular
      • OAlg.Data.Statement
        • OAlg.Data.Statement.Definition
        • OAlg.Data.Statement.Proposition
      • OAlg.Data.Statistics
      • OAlg.Data.Symbol
      • OAlg.Data.Tree
      • OAlg.Data.TypeLits
      • OAlg.Data.Validable
      • OAlg.Data.X
    • Entity
      • OAlg.Entity.Definition
      • OAlg.Entity.Diagram
        • OAlg.Entity.Diagram.Definition
        • OAlg.Entity.Diagram.Proposition
        • OAlg.Entity.Diagram.Quiver
        • OAlg.Entity.Diagram.Transformation
      • OAlg.Entity.FinList
      • OAlg.Entity.Matrix
        • OAlg.Entity.Matrix.Definition
        • OAlg.Entity.Matrix.Dim
        • OAlg.Entity.Matrix.Entries
        • OAlg.Entity.Matrix.GeneralLinearGroup
        • OAlg.Entity.Matrix.ProductsAndSums
        • OAlg.Entity.Matrix.Proposition
        • OAlg.Entity.Matrix.Transformation
      • OAlg.Entity.Natural
      • OAlg.Entity.Product
        • OAlg.Entity.Product.Definition
        • OAlg.Entity.Product.Proposition
      • OAlg.Entity.Sequence
        • OAlg.Entity.Sequence.Definition
        • OAlg.Entity.Sequence.Graph
        • OAlg.Entity.Sequence.PSequence
        • OAlg.Entity.Sequence.Permutation
        • OAlg.Entity.Sequence.ProductSymbol
        • OAlg.Entity.Sequence.Set
      • OAlg.Entity.Slice
        • OAlg.Entity.Slice.Adjunction
        • OAlg.Entity.Slice.Definition
        • OAlg.Entity.Slice.Free
    • OAlg.Hom
      • OAlg.Hom.Additive
      • OAlg.Hom.Algebraic
      • OAlg.Hom.Definition
      • OAlg.Hom.Distributive
      • OAlg.Hom.Fibred
      • OAlg.Hom.Multiplicative
        • OAlg.Hom.Multiplicative.Definition
        • OAlg.Hom.Multiplicative.Proposition
      • OAlg.Hom.Oriented
        • OAlg.Hom.Oriented.Definition
        • OAlg.Hom.Oriented.Proposition
      • OAlg.Hom.Proposition
      • OAlg.Hom.Vectorial
    • Limes
      • OAlg.Limes.Cone
        • OAlg.Limes.Cone.Definition
        • OAlg.Limes.Cone.EligibleFactor
      • OAlg.Limes.Definition
      • OAlg.Limes.EqualizersAndCoequalizers
      • OAlg.Limes.KernelsAndCokernels
      • OAlg.Limes.Limits
      • OAlg.Limes.MinimaAndMaxima
      • OAlg.Limes.Perspective
      • OAlg.Limes.ProductsAndSums
      • OAlg.Limes.Proposition
      • OAlg.Limes.PullbacksAndPushouts
      • OAlg.Limes.TerminalAndInitialPoint
    • OAlg.Prelude
    • Structure
      • OAlg.Structure.Additive
        • OAlg.Structure.Additive.Definition
        • OAlg.Structure.Additive.Proposition
      • OAlg.Structure.Algebraic
        • OAlg.Structure.Algebraic.Definition
        • OAlg.Structure.Algebraic.Proposition
      • OAlg.Structure.Definition
      • OAlg.Structure.Distributive
        • OAlg.Structure.Distributive.Definition
        • OAlg.Structure.Distributive.Proposition
      • OAlg.Structure.Exception
      • OAlg.Structure.Exponential
      • OAlg.Structure.Fibred
        • OAlg.Structure.Fibred.Definition
        • OAlg.Structure.Fibred.Proposition
      • OAlg.Structure.Multiplicative
        • OAlg.Structure.Multiplicative.Definition
        • OAlg.Structure.Multiplicative.Proposition
      • OAlg.Structure.Number
        • OAlg.Structure.Number.Definition
      • OAlg.Structure.Operational
      • OAlg.Structure.Oriented
        • OAlg.Structure.Oriented.Definition
        • OAlg.Structure.Oriented.Proposition
      • OAlg.Structure.Proposition
      • OAlg.Structure.Ring
        • OAlg.Structure.Ring.Definition
      • OAlg.Structure.Vectorial
        • OAlg.Structure.Vectorial.Definition
        • OAlg.Structure.Vectorial.Proposition

Downloads

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
Change log CHANGELOG.md
Dependencies array (>=0.5.4.0 && <0.6), base (>=4.7 && <4.18), deepseq (>=1.4.4.0 && <1.5), random (>=1.2.0 && <1.3), time (>=1.9.3 && <1.13) [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 2023-10-21T09:48:24Z
Distributions NixOS:1.1.4.0
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 68 total (9 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2023-10-21 [all 2 reports]

Readme for oalg-base-1.0.0.0

[back to package description]

Basic definition of algebraic structures, viewing through the lens of categories.

  • Most algebraic operations, e.g. multiplication, addition etc, are partially defined operators, but have precise definition for there applicability.

  • Limits serve as a backbone for solving algebraic problems, e. g. finding all solutions of the equation a * x == 0 is given by the kernel of a.

The actual release contains a minimum of functionality to define finitely generated abelian groups and the kernels and cokernels respectively. As such, a lot of more work has to be done to get a complete base for solving algebraic problems.

To Do:

  • Property for Generator more precise.

  • Exact sequences.

  • Kernel and cokernels for matrices over a field.

  • As Double is not implemented as an algebraic structure here (it dose not comply to the stated properties),it is not so obvious how to handle reals.

  • More statements for validation.