Error in Conway's "Regular Algebra and Finite Machines"

I was following “Proof Pearl: Regular Expression Equivalence and Relation Algebra” (Krauss & Nipkow, 2012) to implement a regular expression equivalence checker in OCaml to validate it as a project idea for my “Advanced Topics in Automata, Languages and Compilers” course.

Once the neat implementation was done, I wanted to test it, especially with pairs of regular expressions that aren’t trivially equivalent. I scoured the internet (mostly Stack Overflow) and the literature for such examples. Eventually I stumbled upon “Regular Algebra and Finite Machines” (Conway, 1971).

The error

Deep into the book, on page 121 it contains the following exercises:

Exercises from Conway's "Regular Algebra and Finite Machines"

(Here \(+\) indicates the regex operator |, \(1\) is the empty string aka \(\varepsilon\) and \([]\) are just nested parenthesis for grouping, not a regex character class.)

Exercise 3 asks us to prove that (xy)*(x|xy(yy*x)*)* is equivalent to ((xy*y)*yx|x)*(xy)*. However, my checker didn’t agree and spat out the counterexample yx. Indeed, it’s not too hard to verify by hand that the first regex does not match yx while the second regex does. Hence, they aren’t equivalent!

The fix

The correct formulation of exercise 3 would be:

\[(\boldsymbol{yx})^*[x+xy(yy^*x)^*]^* = [(xy^*y)^*yx+x]^*(xy)^*.\]

The difference compared to the book is shown in bold: beginning of the left-hand side should have yx instead of xy. My checker agrees that the two are now equivalent.

This is indirectly corroborated later in the book as well. Solutions to the exercises say:

A proof of 3 (not from C1-14) is implicit in later exercises.

And exercise 9 includes the fixed left-hand side regular expression.

References

2012

  1. J. Autom. Reason.
    Proof Pearl: Regular Expression Equivalence and Relation Algebra
    Alexander Krauss, and Tobias Nipkow
    Journal of Automated Reasoning, 2012

1971

  1. Regular Algebra and Finite Machines
    John Horton Conway
    1971