Questions tagged [abstract-algebra]

Abstract algebra is the subject area of mathematics that studies algebraic structures such as groups, rings, fields, modules, vector spaces, and algebras. It is heavily used in several programming related fields, such as cryptography. Any math questions on this site should be programming related.

In algebra, which is a broad division of mathematics, abstract algebra (occasionally called modern algebra) is the study of algebraic structures. Algebraic structures include groups, rings, fields, modules, vector spaces, lattices, and algebra over a field. The term abstract algebra was coined in the early 20th century to distinguish this area of study from the other parts of algebra.

Any math questions on this site should be programming related.

References:

42 questions
28
votes
4 answers

Examples of monoids/semigroups in programming

It is well-known that monoids are stunningly ubiquitous in programing. They are so ubiquitous and so useful that I, as a 'hobby project', am working on a system that is completely based on their properties (distributed data aggregation). To make the…
jkff
  • 17,623
  • 5
  • 53
  • 85
17
votes
3 answers

Is there any algebraic structures used in functional programming other then monoid?

I recently getting to know about functional programming (in Haskell and Scala). It's capabilities and elegance is quite charming. But when I met Monads, which makes use of an algebraic structure named Monoid, I was surprised and glad to see the…
16
votes
3 answers

Is there a theory that combines category theory/abstract algebra and computational complexity?

Category theory and abstract algebra deal with the way functions can be combined with other functions. Complexity theory deals with how hard a function is to compute. It's weird to me that I haven't seen anyone combine these fields of study, since…
15
votes
1 answer

Structurally enforced Free Alternative, without left distributivity

There is a nice Free Alternative in the great free package, which lifts a Functor to a left-distributive Alternative. That is, the claim is that: runAlt :: Alternative g => (forall x. f x -> g x) -> Alt f a -> g a is an Alternative homomorphism,…
15
votes
4 answers

What are structures with "subtraction" but no inverse?

A group extends the idea of a monoid to allow for inverses. This allows for: gremove :: (Group a) => a -> a -> a gremove x y = x `mappend` (invert y) But what about structures like natural numbers, where there is no inverse? I'm thinking…
singpolyma
  • 10,999
  • 5
  • 47
  • 71
11
votes
1 answer

How to get all algebraic associative operations on a finite set by efficient algorithm?

Number of binary operation on a set of 2 elements is 2^(2*2)=16. Number of associative binary operation on that set is only 8. Number of binary operation on a set of 3 elements is 3^(3*3)=19683. Number of associative binary operation on that…
9
votes
1 answer

How do you use GAP to identify a group?

How do you use GAP to identify the name of a group from its multiplication table? I know that you can define a group from a set of generators, and then look for the group in the set of internal tables: gap> g := Group([ (1,2), (1,2,3,4,5) ]); …
wye.bee
  • 708
  • 4
  • 11
8
votes
2 answers

Polynomial factorization in Haskell

With hammar's help I have made a template Haskell bit which compiles $(zModP 5) to newtype Z5 = Z5 Int instance Additive.C Z5 where (Z5 x) + (Z5 y) = Z5 $ (x + y) `mod` 5 ... I'm now facing a problem that I don't think I can solve this way. A…
Xodarap
  • 11,581
  • 11
  • 56
  • 94
6
votes
1 answer

How to create Polynomial Ring which has Float coefficients Julia

I want to create a polynomial ring which has float Coefficients like this. I can create with integers but, Floats does not work. using Oscar S, (a,b,c,d) = PolynomialRing(QQ,["a","b","c","d"]) RR = AbstractAlgebra.RealField s1 = S( 8*a -…
6
votes
2 answers

What are algebraic structures in functional programming?

I've been doing some light reading on functional programming concepts and ideas. So far, so good, I've read about three main concepts: algebraic structures, type classes, and algebraic data types. I have a fairly good understanding of what algebraic…
6
votes
2 answers

Group theory and Python

How do you write a Python code to check if the operation ∗ on the set {0,1,..,n−1} defined by a Cayley table is associative or not. My attempted code is: def is_associative_cayley_table(table): if not is_cayley_table(table): return…
6
votes
2 answers

Commutative monoid from 'algebra' package on Hackage

The documentation for algebra/2.1.1.2/doc/html shows a colossal number of type classes. How do I declare that a structure in question must be equipped with a commutative associative operation and a unit/identity element, but without anything else…
nponeccop
  • 13,527
  • 1
  • 44
  • 106
5
votes
1 answer

How to check that concrete method is respecting type-hinting for an abstract method

This is a two-part question, but the second part is dependent on the first part. For educational purposes, I am trying to implement an abstract base class and test suite for groups (the concept from abstract algebra). Part of the definition of an…
R Hill
  • 1,744
  • 1
  • 22
  • 35
5
votes
1 answer

What is the meaning of Extend type class in Haskell?

In Haskell, there is a type class called Extend. The class is defined as the following class Functor w => Extend w where extended :: (w a -> b) -> w a -> w b Every instance of the Extend class should have the following properties: extended f .…
mtber75
  • 938
  • 1
  • 8
  • 15
5
votes
2 answers

Calculating multiplicative inverse in a finite field

I've written an extended Euclidean algorithm function xgcd :: FFElem -> FFElem -> (FFElem, FFElem) that, for nonzero finite field elements a,b ∈ GF(pm), calculates s and t such that sa + tb = 1. Is there a way I can use xgcd to calculate…
Snowball
  • 11,102
  • 3
  • 34
  • 51
1
2 3