Check out Atomic Chess, our featured variant for November, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Single Comment

Betza Notation. A primer on the leading shorthand for describing variant piece moves.[All Comments] [Add Comment or Rating]
H. G. Muller wrote on Mon, Oct 14, 2013 01:05 PM UTC:

Some more directional nitpicking

The default continuation in the 'forward' direction when chaining steps is often ambiguous. E.g. if F or N follow W, or W or N follow F. So without use of explicit directional modifiers, such chains would fork. First I thought this was a very powerful feature, being able to express a lot of moves at once.

Now I came to realize, however, that it is in fact a very undesirable feature. W-F-W would fork both at the F and final W, and (when starting forward from e4) could move e4-e5-f6-f7, e4-e5-d6-d7, e4-e5-f6-g6 and e4-e5-d6-c6. But the latter two are a sort of lame multi-path detour Alfils, while the first two are a specific form of lame Camels. Having the same notation specify both these quite different moves is only annoying, unless they would usually occur together on the same piece. (While it is in fact very unlikely they ever would.) Because then you would have to start fiddling with directional modifiers to indicate which of the two you meant. It is like doing away with the F and W atoms, and forcing the user to use flfrblbrK when he means F, and vsK when he means W.

So I wanted to put the additional requirement that chains can never fork, except when the steps can go in completely independent directions, specified by 'a'. (This is actually pretty common.) In particular, this means that the default interpretation, in absence of explicitly written directional modifiers, must always single out a unique direction as the 'most-forward', even when strictly speaking there are two completely equivalent ('degenerate') moves.

The rule I want to adopt for this is that when the previous step does not uniquely define what 'forward' is, as in W after F, you would look at the step before it to decide which of the two you should take. (And so on, until you reach a decision.) So in the W-F-W example, at the second W after e4-e5-f6 the choice is between f7 and g6. But compared to e4-e5 f6-f7 is forward, and f6-g6 is right. So f7 wins, and the chain W-F-W specifies a Camel move by default. Should you want to indicate the other one, you would have to write explicit directional modifiers. Once it is established what 'f' means, the other directions can be indicated in the non-degenerate 4-fold or 8-fold (W and K) systems. It would be illegal to use non-unique directional specification (other than 'a'), like s, v, fh in continuation steps.

This leaves the problem when all previous steps are in the same direction, which will certainly be the case if there is only one. But then the two possibilities are indeed mirror images belonging to the same atom. So it is not very objectionable to have both; the worst it could mean is that the chain now specifies 8 symmetry-equivalent paths, rather than 4. Which, for an oblique path, is in general what we want anyway. so W-F to specify the 8 moves if the Xiangqi Horse is fine.

But the two paths will have different chirality, being mirror images, so that l and r would have reverse meanings further down the chain, which would cause a problem in case we want to use explicit directional specs. So we adopt the convention that we use l and r always as if the first breaking of 4-fold symmetry in the path goes to the right. This breaking can be the first bend in the trajectory, or the first move when it is oblique. In the latter case, moves like e4-f6, e4-c5, e4-d2 and e4-g3 (right of the closest orthogonal axis) are considered to go right, the other four Knight moves are considered to 'go left'.

To avoid mix-ups with l and r, we adopt the convention that chains must always bent to the right first, but that when we write them, we mean both the written one and its mirror image. Thus W-flF would not be a valid specification of a 'Chiral Horse'. So what if we want to specify a piece that moves like that? Well, W-F defaults under the new rules to W-frF, and specifies 8 different (overall N) moves: 4 because of the leading W, and then two mirror images each because the trajectory bents. The directional specs for the degenerate 8-fold case (Knight moves) can thus be used to select directions from this. f(W-frW) would still specify two moves which are mirror images of each other (as fN specifies two such moves), and lf(W-frW) would then specify only the left-handed one of those (like lfN would).

To make the parentheses superfluous, we can adopt the convention that the first member of a chain can never have a directional modifier, and that directional modifiers written there always apply to orient the chain as a whole (but by specifying the starting direction, not the overall direction). This seems fitting: it makes chains just like atoms, who also always specify all symmetry-equivalent moves.

Example - We can write e.p. capture,which involves two chiral mirror-image trajectories to trample its victim and then move to its destination, as fscW-rmW. The cW-rmW would specify a move like one orthogoal step forward, then one orthogonal step right, and satisfies the chirality rule of bending to the right. But it represent all 4 moves that are rotated versions of it, as well as their 4 mirror images. The e.p. capture only uses two of these, that start to the left or right, and then curve 'up' (which is left for one, right for the other). The corresponding Knight moves that do this would be fs, hence this is what has to be written in front of it.

The formal grammar of this extended Betza notation would become:

SPEC := DIRECTED_PATH | DIRECTED_PATH SPEC
DIRECTED_PATH := DIRECTOR PATH | i DIRECTOR PATH
DIRECTOR := DIRECTIONSET | DIRECTIONSET DIRECTOR
DIRECTIONSET := v | s | fh | fs | bh | bs | rh | rv | lh | lv | DIRECTION
DIRECTION := f | b | l | r | a | fl | lf | fr | rf | br | rb | bl | lb | EMPTY
PATH := QUALIFIED_SLIDE | QUALIFIED_SLIDE - DIRECTION PATH
QUALIFIED_SLIDE := SPECIALS MODALITY SLIDE | SIGNAL
SPECIALS := SPECIAL | SPECIAL SPECIALS
SPECIAL := e | x | xx | EMPTY
MODALITY := ACTION | ACTION MODALITY
ACTION := m | c | d | p | t | u | o | i | EMPTY
SLIDE := STEP DRESSED_EXPONENT | STEP
DRESSED_EXPONENT := DIRECTION MODALITY NUMBER
STEP := ATOM | ( PATH )
ATOM := O | W | F | D | N | A | H | L | J | G | COORDS
COORDS := ( NUMBER , NUMBER )
NUMBER := DIGIT | DIGIT NUMBER
DIGIT := 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
SIGNAL := PSEUDO_ATOM | PEUDO_ATOM NUMBER
PSEUDO_ATOM := T | S 
EMPTY :=
The subtle thing here is that a PATH cannot contain directional modifiers on its first step, so that any such modifiers appearing there are taken to refer to the PATH as a whole (to make a DIRECTED_PATH). While later SLIDEs of the PATH can only have a single DIRECTION as prefix, not the more general DIRECTOR, which can be a group of directions.