
Abstract algebra for developers and people who hate math - dhaivatpandya
http://poincare101.blogspot.com/2011/11/abstract-algebra-presented-in-non.html
======
alex-g
People who hate math aren't going to be inspired by a collection of axioms and
equations. Nor are they likely to be wowed by the examples of matrices and
vectors. Some examples from geometry, or permutations, might be more likely to
teach the concepts.

People who know something about math are going to spot several errors in the
presentation. For example, the reals with multiplication don't form a group,
since 0 has no multiplicative inverse.

Not an error, but a subtlety: the collection of axioms here says that the
group has a right identity and right inverses. It's later assumed that the
identity is also a left identity (in the proof of uniqueness). This is true,
as it happens, but it's not entirely obvious. The usual presentation of groups
has two-sided identities and inverses up-front.

Actually, the alternative axiom set of a right identity, but left inverses,
has models that are not groups. An example is a left zero semigroup, where ab
= a for all a and b. We have right identity (ae = a; no problem) and left
inverses (for all a, there exists b such that ba = e; yes, just take b = e).
This isn't a group! (OK, unless it has only one element.)

Maybe this illustrates an interesting point for developers: the axiomatic
approach is like having a common interface for some class of objects, and it's
helpful to be able to reason about them without knowing the details of how
they're implemented. But reasoning about the expressive power of different
interfaces or specifications can be horribly difficult. The Robbins conjecture
(about the equivalence of two axiom sets for Boolean algebra) was open from
1933 to 1996 - and proved in an automated theorem prover, no less.

~~~
dhaivatpandya
Upvoted. Very true, and thanks for the mistakes and stuff. I'll fix the ones I
can, and I'm adding some more stuff that actually relates to CS.

~~~
alex-g
Are you also going to fix the assertion that matrices form a group under
multiplication? (They don't: not all matrices have inverses. The general
linear group is what you are probably looking for.) It's a bit embarrassing
that of your three examples of groups, only one is actually a group...

~~~
dhaivatpandya
Sorry, again. I'm really trying my best to keep it all correct, but, I do make
mistakes.

~~~
wging
Another mistake you might want to fix:

>(like, matrix multplication isn't commutative, that means: A∗B≠B∗A when B and
A are matrices)

You want to say something like "A∗B isn't necessarily equal to B∗A when B and
A are matrices." Neither A∗B≠B∗A nor A∗B=B∗A are true in general when A and B
are matrices.

~~~
dhaivatpandya
Fixed. Thanks for telling me these things, it really helps.

------
calydon
I hate to be negative but the title is misleading. There is no way any of this
will appeal to people who hate math. A reader who 'hates math', implies that
they have very little background in set theory and would be hard-pressed to
define a Venn diagram. I am such a person and I couldn't get past the first
definitions, although I tried. I need more background knowledge, and asking
that I read a hefty Wikipedia article to get up to speed isn't going to cut
it.

I'm sure the content is good, and for people who already know what the symbols
mean, you've probably done a great job of making it meaningful but the title
should be - 'Abstract algebra revisited for serious students of abstract
algebra' or something like that.

~~~
icco
Agreed. I understand what this article presented, but in no way was this any
different or better than how this material was presented to me in college. At
least in school I could go bug the professor after class to explain to me why
I didn't get it.

------
RegEx
Nice read, and nice example of specialization: Simply putting "for developers"
in the title surely helped this article get so high on HN, though there's no
application of computer science or programming to make the article more
tailored for developers. I don't want to sound snarky by any means, as I did
genuinely enjoy the article, but it's neat to see marketing 101 in action:
Simply picking and acknowledging an audience(developers) made the reception of
the article so much stronger.

Edit: OP stated he will edit the article to include more CS application.

~~~
dhaivatpandya
Added :) I sort of forgot at the end of the article.

------
raheemm
My favorite section is where he gives the context of how abstract algebra came
about in the 19th century. It connects the theoretical with real world
problem, which makes it far more interesting.

~~~
paulrosenzweig
Agreed! I took a few math major classes as a freshman, but my professors never
took the time to give this aerial view. Now the value in these generalizations
makes perfect sense.

------
probably
I don't hate math but don't quite getting what I can do with this knowledge to
develop something new or different from what I would develop without it.
Please help with enlightenment?

~~~
dhaivatpandya
The thing is, to make any advances in mathematics (since it is such an old
subject with large advancements and abstractions already made), you can't
really make much progress in math per se, but, it really gives you a much
better understanding how things like classes and type systems work, and in
general makes you a better programmer.

I will present more applications and such in the next one.

------
grot
An admirable attempt, but -- the formatting and the grammar are distracting
detractors from the content.

For anyone who is serious about learning abstract algebra but lacking
mathematical background (i.e. an analysis course under the belt), consider the
book "Abstract Algebra" by Dummit and Foote. It's at the undergraduate level
(so it goes through the motions of rigor that research math texts often omit),
and well presented. A more advanced, terse and elegant, text would be
Hershtein's Topics in Algebra.

~~~
dhaivatpandya
If you tell me what's wrong with the formatting and grammar, I'll try my best
to fix them for the next time.

------
dudurocha
Nice content! Thanks for putting it in more easy words.

If I could give you a suggestion, a better way of showing it could be better.
Like some slides, or colors. Something that made more friendly to read.
Although the content is good, scanning it do not made me want to read right
way.

Anyway, thanks!

~~~
dkersten
_Although the content is good, scanning it do not made me want to read right
way._

This is the exact feeling I have and were it not for the HN comments, I would
have closed it without actually reading the content.

~~~
dhaivatpandya
I will most likely be making slides (on SlideShare) for the next one and it
will probably be on Wordpress instead of blogger.

~~~
icco
I don't think either of these things will provide a solution that the above is
looking for. The problem is with the layout of your content and the fact that
write like a math professor. I imagine you scare a lot of people off with a
ton of math symbols at the opening, maybe leave that for later, or explain it
all in plain English instead of using symbols.

~~~
dhaivatpandya
I will try doing that, its just that when I look at math articles, I look for
symbols not words :)

But, I'll definitely do that in the next one and see what the response is.

~~~
dkersten
You should probably use symbols after an "in plain english" description. I'm
not too sure what the solution is, but the content was good once I decided to
actually read it.

------
eric-hu
Thank you for posting this!

> And, the problem was, mathematics was losing its "connectivity", all these
> new algebras had little to no connection to each other, and it was very
> difficult to make progress in a few of these algebras at once.

I went through 6 upper division abstract algebra classes without one professor
providing this background. It's quite obvious once I read it, which is what
makes it an _amazing_ motivation.

There were some formatting notations that didn't display--mostly superscripts
that displayed in-line

~~~
dhaivatpandya
Thanks for the feedback :)

------
randysavage25
You gotta like math in order to be a cool programmer, otherwise it's like
being in a wheelchair.

~~~
jarin
On the other hand, you can still get into the Olympics in a wheelchair ;)

~~~
dhaivatpandya
Well, that's only if you're competing with other people that are in
wheelchairs, when you're a programmer you're competing with everyone :P

------
kuahyeow
Try the simple English wikipedia too -
<https://simple.wikipedia.org/wiki/Group_theory>

------
veneratio
As a As a current student in Abstract Algebra, this was really refreshingly
simple to look at . Thanks fro a greatly simplified teaser to show other
people!

~~~
dhaivatpandya
Thanks a lot for you feedback, I will be posting more, so keep in tune :)

------
dhaivatpandya
Thanks for the feedback guys :) I really appreciate it

I'll be doing more abstract algebra stuff, so, followers would be great :)

------
rhdoenges
This whole thing gave me haskell flashbacks. (That is a good thing)

~~~
dhaivatpandya
Yes, it is. I love haskell.

------
dhaivatpandya
I added some CSy stuff.

~~~
mikeklaas
Sorry, but OOP has virtually nothing to do with abstract algebra. Your whole
post is about proving that something belongs to a general class and using the
properties of a general class, and making such a vague analogy is completely
contrary to that.

For a real CS example, see cryptography.

~~~
tonyarkles
I humbly disagree.

Properly-done OOP is all about abstraction and reasoning. You're taking a set
of concepts (business concepts, technical concepts, etc) and building a
(hopefully) consistent model of how those concepts relate to each other.
Included in this model is a deep understanding of the operations that can be
performed on the model you've come up with. If you've done a good job about
specifying the abstraction, you end up with a system that is easy to reason
about. "If I do this, this will happen."

This is, in essence, the same thing you're doing with abstract algebra; you're
looking at common behaviours of different systems, and building up a
consistent model that works for all of them, including the operations that you
can do. The underlying details may be different for vector addition and matrix
multiplication, but, using abstract algebra, you can reason about the
behaviour in the same way. Good OOP has the same effect.

~~~
dhaivatpandya
I agree with tonyarkles.

------
aiscott
A good and free book on abstract algebra is available here:
<http://abstract.ups.edu/download/aata-original.pdf> (it's GPL)

------
vonsydov
lol you didn't even describe what a 'closure' is ... just drew the equation.

i stopped reading after that.

~~~
dhaivatpandya
Um. I did. If you read on, I did explain what a closure was. If you don't get
it, the concept is pretty simple, if you have two elements in a set S, and you
apply the group operation on them, then the result must be in set S for the
set in question to be a group.

