6

We are given with an arbitrary algebraic structure $(X,∗)$. $X$ is an arbitrary set, $∗$ stands for binary operation. Prove that if $(x∗y)∗y=x$ and $y∗(y∗x)=x$ for any elements $x,y$ in $X$, then $y∗x=x∗y$.

Take, for example, $(\mathbb{Z},∗)$, where $n∗m=−n−m$, $n,m \in \mathbb{Z}$. In this case the operation $∗$ is commutative (but not associative) and $(n∗m)∗m=n$, $m∗(m∗n)=n$ are true. Is it possible to prove the statement in general case?

I thought about using derivations $y∗((x∗y)∗y)=y∗x$ and $(y∗(y∗x))∗y=x∗y$ from the first formulas.

This question comes from an algebra book and it is preceded by the joke that it is "the worst" exercise in the whole book. So it got me interested.

Abraham83
  • 301
  • 1
    Hint: $(xy)y = x$ so $(xy)((xy)y) = (xy)x$. Can you take it from there? No? A second hint $(xy)((xy)y) = y$ so $y = (xy)x$. Now can you finish? – fleablood Apr 16 '25 at 02:54
  • 3
    Out of curiosity, which algebra book is this from? – Chris Grossack Apr 16 '25 at 03:26
  • @fleablood Thank you! I've completed the proof by myself using the similar idea. From $(x∗y)∗y$ we get $y∗((x∗y)∗y)=y∗x$. Now we just need to proof that the left part equals to $xy$. Take $y∗(y∗x)=x$ and transform it to $(yx)(y∗(y∗x))=(yx)x$. We know that $(yx)x=y$. Substitute $a=(yx)$ and $(yx)x=y$ to get $a(y∗a)=y$. By this we conclude that $y∗((x∗y)∗y)=xy$. End of proof. – Abraham83 Apr 16 '25 at 10:13
  • 1
    @ChrisGrossack This problem comes from the Russian book "Introduction to algebra" by Kostrikin. I have the translated verison. – Abraham83 Apr 16 '25 at 10:16
  • 1

1 Answers1

10

You can solve universal algebra problems like this one using tools such as Prover9 and Mace4 which (respectively) try to find proofs from assumptions or find countermodels.

In the syntax of Prover9 we write your problem as

op(500, infix, "*").
formulas(assumptions).
  (x * y) * y = x.
  y * (y * x) = x.
end_of_list.

formulas(goals). x * y = y * x. end_of_list.

where we first introduce a new infix operation *, then supply a list of axioms * satisfies, then provide a list of "goals" which we're interested in. If we save this file as test.in and run Prover9 -f test.in we get a whole bunch of output ending with the satisfying THEOREM PROVED.

The important part of the output is shown here:

============================== PROOF =================================

% Proof 1 at 0.00 (+ 0.00) seconds. % Length of proof is 7. % Level of proof is 3. % Maximum clause weight is 7.000. % Given clauses 4.

1 x * y = y * x # label(non_clause) # label(goal). [goal]. 2 (x * y) * y = x. [assumption]. 3 x * (x * y) = y. [assumption]. 4 c2 * c1 != c1 * c2. [deny(1)]. 5 x * (y * x) = y. [para(3(a,1),2(a,1,1))]. 7 x * y = y * x. [para(2(a,1),5(a,1,2))]. 8 $F. [resolve(7,a,4,a)].

============================== end of proof ==========================

With some effort one can turn this proof into something human readable:

Start with

  • (2) $(x * y) * y = x$
  • (3) $x * (x * y) = y$

then substitute $x = a$ and $y = (a * b)$ into (2) to get $(a * (a * b)) * (a * b) = a$, using (3) we can simplify this to $b * (a * b) = a$. Prover9 writes everything in terms of xs and ys instead of using fresh variables, so it writes this as

  • (5) $x * (y * x) = y$

Finally set $x = a$ and $y = (b * a)$ in (5) to see $a * ((b * a) * a) = b * a$, and use (2) to get $a * b = b * a$, which Prover9 writes as

  • (7) $x * y = y * x$

The other lines (1,4, and 8) are because Prover9 always uses proof by contradiction.


I hope this helps ^_^