Originally posted by adam warlock
Yes, you can.
I'm a bit stuck on this, so I'll present the special case. Then I'll think some more about it. I need an extra axiom, so I'll list the axioms I've got, and add my extra one:
A) Closure, for all a, b there exists c = a*b
B) Associativity, for all a, b, c; a*(b*c) = (a*b)*c
C) Commutativity, for all a, b; a*b = b*a
D) There are a finite number of elements.
E) Extra axiom, for all a, b, c, if a*b = a*c then b = c
We can classify elements of S into three types. Type I elements are identity candidates a*a = a; Type II elements are ones where if we square them and then square the result and so one we end up back where we started. Type III are all others.
Type I) a*a = a
Type II) a*a = b; b*b = c; c*c = d; d*d = a (although the list could be much longer, and there need not be only one such subset of looping elements, the loops do have to be disjoint)
Type III) all other elements, they form chains starting with an element a that is not the square of any element and a*a = b; b*b = c; c*c = element of type I or type II (Again the chain can be of arbitrary length assuming we don't run out of elements).
I'm guaranteed that starting with a type III element and going along the chain of elements will get me to a type I or II element as the set is finite (Axiom D). Consider type II elements.
Lemma: for all x, a there exists y such that x = a*y. Consider the product of a with each member of the set, by closure each such product must be in the set, and each such product must be different by axiom E, so the set of products span the set and y exists.
Now, consider the product of all the elements of type II which form a closed loop (there may be more than one closed loop but they must be disjoint, I only want one of the disjoint ones). Suppose, without loss of generality (the magic words 🙂) the loop is length 4 and the product of them is z = a*b*c*d; a*a = b; b*b = c; c*c = d; d*d = a
a*z = a*(a*b*c*d) = (a*a)*b*c*d = b*b*c*d = c*c*d = d*d = a; where I've used the associativity axiom.
b*z = b*a*b*c*d = a*(b*b)*c*d = a*c*c*d = a*d*d = a*a = b; where I've used both the associativity and commutativity axioms.
similarly for c and d.
By completeness z = a*b*c*d is in the set and it is an indentity w.r.t. a, b, c, and d. z cannot be one of the elements a, b, c, or d - say it is b, then b*z = b*b = c but b*z = b. So now I need to show that z*x = x, when x is any element.
By my lemma (this is what I need the extra axiom for) there exists y such that x = a*y for any x in the set and a of Type II.
Then x*z = (y * a) * z = y * (a * z) = y * a = x
So z is an inverse w.r.t. all elements of the set 
Now I need to work out how to do this for the cases where a*b = a*c does not imply that b = c. Which I'm a bit stuck on.