Hacker News new | ask | show | jobs
by fyp 2253 days ago
Most algebraic structures are best understood by which axioms it satisfies. For example basically every subset of axioms of an abelian group is useful enough to have a name. Wiki has a really nice table:

Semigroupoid

Small Category

Groupoid

Magma

Quasigroup

Unital Magma

Loop

Semigroup

Inverse Semigroup

Monoid

Commutative monoid

Group

Abelian group

https://en.wikipedia.org/wiki/Abelian_group

4 comments

This is one of those things were better naming would make mathematics easier, imho. The words are just so random and inconsistent.

Example: Commutative and Abelian are synonyms, but there's "Commutative monoid" and "Abelian group". Why not use same adjective. But of course also the random bag of words that have nothing to do with the concept, like magma.

Could take a page out of the biologist's book. "what's this thing?" Transcriptase - enzyme (-ase) which transcribes - DNA to RNA. "What about this" Reverse transcriptase - does the reverse of transcriptase.

Angiotensin-converting enzyme - does exactly what it says on the tin. You can lex it even further:

- Angio - heart (from ango, vessel)

- Tens - from hypertension, vis tendo, tendere, to stretch.

- (-in) - suffix associated with polypeptides:

- Convertere - turn around, from:

- Con - with

- Vert - turn

- En - inside

- Zyme - from zume/zymē - leavened, loosely, biological thing which causes leavening

It just makes so much sense! Lexemes are so cool. Like digging into linguistic source code.

We suffer here from lack of classical education. Greek and Latin would probably help.
How did they get people to agree to it? Mathematical terminology is a crime, but the problem is that it's very hard to get people to coordinate on different terminology.
Why not call the DNA to RNA enzyme reverse transcriptase and the RNA to DNA one transcriptase?
Commutative and abelian aren't really synonyms. "Abelian" is reserved for objects that have a certain amount of rigidity. Commutative monoids are squishy, while abelian groups very rigid. Another place you'll see the name "abelian" is "abelian Lie algebras", which are also rigid. "Abelian categories" axiomatize the kind of rigidity abelian groups have.

Magmas are usually called "groupoids", but there's another generalization of group also called "groupoids". I'm actually not sure they really deserve a short name, rather than just "set with a binary operation", since there isn't much you can say about them in that generality that you can't generalize to "set with two binary operations", "set with a binary and a trinary operation", etc. The argument for a name is it gives you something to modify, since there are interesting special cases such as "medial groupoids". (An example of a medial groupoid is the real numbers with the "average of two numbers" operation.)

https://en.wikipedia.org/wiki/Rng_(algebra) is a small example of trying to use more consistent names, but it's too punny for my taste... (Rng is a ring without an identity element)
There's also a rig (a ring without "n"egatives): https://ncatlab.org/nlab/show/rig

I agree. Too cute for its own sake.

Aside: "wiki" is a term referring to a general class of software. The name of the crowd-sourced, free encyclopedia is "Wikipedia", as it is built with wiki software.

In other words, Wikipedia is a member of the set of wikis. You wouldn't call "5" just "integer", e.g. it would be confusing to say "there are integer fingers on one hand".

If someone came up to me and said, "there are integer fingers in one hand" I would be the opposite of confused.
It's the kind of "technically correct" that is literally useless.
I'd like to seen an extension of this table with the negation of these axioms
Here is an beautiful old paper about data structures built using a binary join operator, exploring the 16 possible outcomes for properties: unit, idempotent, associative, commutative.

The resulting grid can be factored around set, bag, list and binary tree, with empty/non-empty variants.

Then there is interaction of the structures with binary operators on the data elements themselves, giving a nice analysis of map, filter, fold (reduce) in functional programming.

A.Bunkenburg, The Boom Hierarchy

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.49....

There is a rich literature if you chase the references back and forth, starting from Bird-Meertens Formalism (Squiggol), Hoogendijk, through Backhouse and Malcolm, to Meijer and McBride.

I think negations usually don't prove interesting, and mathematicians essentially use "non-" to mean "not necessarily". So the theory of "noncommutative rings" includes the theory of "commutative rings" as an easy special case.
What would you do with that?

For example, I can see the use of commutativity (ab = ba) and anticommutativity (ab = -ba), but I'm not sure what I'd do with the negation of commutativity (ab ≠ ba).

Nope: the negation is "there is a couple a,b such that ab!=ba", which means just "strictly not commutative group": I do not think there is a relevant theory to be done about them (otherwise, I guess it would have been done).
Ah, whoops. That seems even more useless, though.
Non-commutative also means that if there are units, there may be different left and right units:

    1L * A = A = A * 1R
What I would love are examples of how they are useful.
For me the first example where I really got why algebraic structures was useful this video on using abstract algebra in analytics[0].

This helped me grasp something that I had read from Alexander Stepanov[1] that I hadn't fully understood before (not being familiar with the algebraic terminology):

> I suddenly realized that the ability to add numbers in parallel depends on the fact that addition is associative...In other words, I realized that a parallel reduction algorithm is associated with a semigroup structure type. That is the fundamental point: algorithms are defined on algebraic structures.

I think the use case of building infrastructure for parallel/distributed computation as described above is a nice, concrete example of why using abstract algebra in our programs can be useful. It certainly isn't the only use case though. Other things include managing complex control flow, or passing an implicit context through a computational pipeline.

[0] https://www.infoq.com/presentations/abstract-algebra-analyti...

[1] http://stlport.org/resources/StepanovUSA.html

Thank you!
This is a really cool presentation where the authors "step up the ladder" to design a really elegant API for animations as semirings (where * is used to sequence animations, and + for animations running in parallel), and then go on to implement it in Swift: https://bkase.github.io/slides/algebra-driven-design/
Thank you!
see the second-to-last slide for a mapping from Algebraic Structures to Computer Science Concepts. http://comonad.com/reader/wp-content/uploads/2009/08/Introdu...
Thank you!
Thank Edward Kmett! That slide is single-handedly responsible for me getting into abstract algebra.