alice FBR rule is superfluous
Compact/ Chess Interchange Format
Status: Pre-Alpha
Brought to you by:
gcramer
Alice-Chess in http://ccif.sourceforge.net/chess-variants.html is implemented with a vague "alice" FBR rule.
You can implement Alice-Chess in C/CIF without a need for a special alice FBR rule by using a 8x16 board.
:Alice-Chess
8x16 -- 6
rnbqkbnr8/pppppppp8/16/16/16/16/PPPPPPPP8/RNBQKBNR8 w KQkq - 0 1
a1=R b1=N c1=B d1=Q e1=K a2=P
royal castling
K=([a-g]K[a-g]-mgsR08)+([i-p]K[i-p]-mgsR08)
Q=([a-g]Q[a-g]-mgsR08)+([i-p]Q[i-p]-mgsR08)
R=([a-g]R[a-g]-mgsR08)+([i-p]R[i-p]-mgsR08)
B=([a-g]B[a-g]-mgsR08)+([i-p]B[i-p]-mgsR08)
N=([a-g]N[a-g]-mgsR08)+([i-p]N[i-p]-mgsR08)
P=([a-g]P[a-g]-mgsR08)+([i-p]P[i-p]-mgsR08) +P=QRBN
I guess you'd still need a special castling rule for Alice i.e. castling=alice
Can make movement a little more compact since there is only one possible leaping Rook move of exactly 8 spaces on a 8x16 board i.e.
K = ([a-g]K[a-g]+[i-p]K[i-p])-mgR08
I will collect some facts:
1) Your piece description is based on a 8x16 board (emulating a double board).
2) The description of C/CIF is based on a 8x8 board (better: single board).
3) Normally an Alice-Chess game will be notated on a 8x8 board. Here one example:
Note that the board suffix is for information only, even the following notation is unambiguous
because the same square cannot be occupied on both boards.
4) You can even play Alice-Chess on a single board (but this is quite challenging).
5) Alice-Chess is known as a variant based on standard chess, but it's the nature of the Alice-Chess rules that it can be applied canonically to any appropriate chess variant. As an example: it's also possible to play Alice-Chess based on Capablanca-Chess. Here two examples how to define Alice-Chess as a derivation based on a chess variant:
This shows that pre-defining chess variant Alice-Chess is not really required, it can be easily derived with the help of FBR 'alice', but Alice-Chess based on standard chess is quite popular, so I have added this as a pre-defined variant for convenience.
6) Because of the FBR 'alice' the promotion rules and the piece rules on page MBN - Modified Betza Notation are superfluous, but I will keep it, they are not interfering, but a good example how to play with promotion rules combined with piece descriptions. This means that the following definition would be sufficient:
(Note: currently all the variants are defined fom the scratch, but sometime I will change this, some variants can be defined more easily as a derivation from another variant. So later probably I might only use a definition like this:)
Due to (3) it's a must that the piece description is based on a single board (8x8 with standard chess), but due to FBR 'alice' a piece description is optional. Due to (5) having a FBR 'alice' is very convenient, this avoids the need to define an additional Alice-AnyVariant for all the (appropriate) variants.
Some more facts:
7) Page MBN - Modified Betza Notation was (and still is) incomplete, the syntax definition for piece prefixes was not yet included, now I have done an update.
8) Also page FBR - Formalized Board Rules was incomplete. Now I added the forgotten 'alice' rule.
I see how the Alice notation is unambiguous and makes recording the game easy. Although a nice example of defining multiple promotion rules, I still find the promotion syntax in the Alice Chess a little confusing. In particular the last pawn promotion is not symmetric like for all the other pieces i.e. there is no ++P==QRBN. Does this imply that pawns in board A can promote but the pawns in board B cannot promote? Maybe it should be instead something like +*P==QRBN (a promoted pawn promotes to unpromoted piece) and +P==#Q#R#B#N? (an unpromoted pawn promotes to a promoted piece). Also irregardless in the example shouldn't the #Q=Q should have double equal signs like #Q==Q? This is both in the MBN Alice example and game variant Alice example.
I see that the definition of promotions, and the definition of piece prefixes is not yet clearly formulated. I have done an update of both pages:
I agree, the definition for pawns is incomplete, and unsuccessful, so I will change according to your suggestion (and with the use of default definitions):
Note that the short form "#Q" is the same as "#Q=Q" (the latter is the default, see Prefixed pieces). In this (updated) page I also defined that the default un-promotion is the piece before promotion ("##Q==Q"). This is matching the default definition for "#Q".
And now a definition without the * promotion:
Here a short proof that it really works, independent from order (compare with definition of "promotion" on page MBN):
"#Q=Q": promoted piece is moving like a queen; this is the definition of the move capaibility of piece #Q. With this definition the promotion from Q to #Q is implicitly defined, because "#Q" is denoting the promoted piece "Q". Moreover "#Q=Q" is the default definition for "#Q", so only "#Q" is sufficient (now defined on page MBN).
"##Q==Q": promoted piece #Q will become the un-promoted piece Q. Note that due to definition this is not defining ##Q (promotion rule "##" does not exists), it is defining an un-promotion rule for a promoted piece (##Q also does not exists, but #Q exists). Now this definition can be shortly written as "##Q" (defined on page MBN).
"#Q==Q": this is defining a promotion rule for #Q, the promoted piece becomes the unpromoted piece Q. This is possible, but here not correct. (Furthermore it's a do-nothing definition.)
I hope that the definition of promotions becomes more clear, even for me. I've invented all the definitions ad-hoc as I explored the chess variants. As I said before, I'm not a specialist for chess variants. But with the help of attentive readers hopefully I will become a specialist.
Once it is understood that multiple promotions can occur in a single move (in random order?) your second form (two promotion rules "#" and "+") is fairly clear. It would be clearer if there was also an "alice" promotion attribute to emphasize that the "#" promotion puts the piece "through the looking glass" in the "alice" FBR rule i.e. promotion#=[1-8],move,alice. Although unlikely to occur in practice if you were to apply the "alice" FBR rule to a non-FIDE chess variant that has multiple double promotion rules would C/CIF know which promotion rule is the "through-the-looking-glass" promotion rule?
Not required, and I don't want to add rules as long as they are not essential.
Currently this is only fictive, and C/CIF must not know this. C/CIF only provides the function of storing and retrieving chess (variant) games with an application independent archive format. It's the application who has to know how to handle the specific chess variant. All these definitions with FBR and MBN are the basis for an unambiguous identification of chess variants. If an application is storing Alice-Chess games, then the C/CIF protocol will ensure that these games are really Alice-Chess games, and not something else, even no derivations of Alice-Chess. It's possible to store derivations of Alice-Chess, but with a different identifier, together with a set of (additional) rules. With this set of rules the reader can decide if he can understand (process) this derivation.
But it's planned to use the MBN and FBR definitions for side-products:
A tool proofing the equality of piece types. This is important because for some pieces there are different ways how to define the move capability. Furthermore each application may have his own letter set for pieces, with MBN it's possible to map from one piece letter set to a different one. This allows to convert games to a different letter set. (This is independent from C/CIF, because storing/reading C/CIF games is piece letter invariant.)
A tool converting SAN notation to algebraic notation for any variant (when possible for this variant). This requires an universal move generator. The basis for this move generator is the rule set (MBN and FBR) of a chess variant.
A chess engine, playing any chess variant. Such an engine cannot be strong, but it allows to try out the various variants. (If the SAN converter is realized, then the foundation work for the engine is done.)
Probably some variants will need addtional rules for the realization of these side-prodcucts, but these additional rules must not belong to the C/CIF definitions. For C/CIF it's sufficient to provide an unambiguous identification.
I did an update, the new definitions are:
This conforms better to Alice rules:
With new definition FBR alice is nearly superfluous, but not fully, because two possible ambuigities have to be resolved (can occur with en-passant, and another with King in check).
With the new multi-board syntax I used the opportunity to add a two-board definition:
With the new multi-board syntax this two-board definition is simpler. Nevertheless the one-board definition is a good example how to work with promotion rules.
I like the new multi-board definition for Alice and the expanded capture
piece sets including promoted pieces is interesting. You probably need
however to update the pawn promotion in the new multi-board definition to
+P<*>==QRBN.
Last edit: Gregor Cramer 2016-09-13
You're right, will be done.