(no title)
fyp | 5 years ago
Semigroupoid
Small Category
Groupoid
Magma
Quasigroup
Unital Magma
Loop
Semigroup
Inverse Semigroup
Monoid
Commutative monoid
Group
Abelian group
fyp | 5 years ago
Semigroupoid
Small Category
Groupoid
Magma
Quasigroup
Unital Magma
Loop
Semigroup
Inverse Semigroup
Monoid
Commutative monoid
Group
Abelian group
Aardwolf|5 years ago
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.
kortex|5 years ago
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.
QuesnayJr|5 years ago
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.)
moron4hire|5 years ago
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".
Y_Y|5 years ago
7373737373|5 years ago
mikhailfranco|5 years ago
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.
unknown|5 years ago
[deleted]
QuesnayJr|5 years ago
hope-striker|5 years ago
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).
whytaka|5 years ago
lliamander|5 years ago
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
lachenmayer|5 years ago
kian|5 years ago