My apologies if this is a re-run ... in which case I'll gladly accept a
pointer to a definitive answer.

In the mailing list archives, I found an answer Asmus Freytag sent in June
regarding the Arabic joining rules in the Unicode 2.0 Standard, where he
provided corrections for the usage of "join-causing" (instead of
"left-join-causing" and "right-join-causing") in the book (pp. 6-24--6-26).

However, as far as I can see, the actual definitions for those two
supersets in the book are incorrect (or Asmus Freytag's insertions were in
the wrong order): as I understand it, the superset rules *should* be:
right-join-causing = { dual-joining, left-joining, or join-causing }
left-join-causing = { dual-joining, right-joining, or join-causing }

For example, take R4 (my favourite), from the book, with Asmus Freytag's
insertions:
A dual-joining character X that has a [right-]join-causing character
on the right and a [left-]join-causing character on the left will
adopt the form Xm.

Now, take a substring in the following visual order: W X Y

Let X be dual-joining.

Apply R4 to X: Examine character Y, to the (visual) right of character X,
to determine whether Y is right-join-causing (i.e. will cause X to join to
the right). This means we need to see if Y joins to the *left* (!), which
it could do by being LEFT-joining, dual-joining, or join-causing.

Similarly, to apply the second half of R4 to X, W must be left-join-causing
(i.e. causing X to join to the left), meaning that W would have to join to
the right, by being RIGHT-joining, dual-joining, or join-causing.

Am I correct in this interpretation?

[I assume this has been clarified and/or fixed in 3.0... and I know it's
too late anyway :-)]