-
Notifications
You must be signed in to change notification settings - Fork 14
/
py-engl.txt
1263 lines (1085 loc) · 40.2 KB
/
py-engl.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
D E S C R I P T I O N O F P O P E Y E
Some remarks on the distribution of popeye:
Popeye is free software. Everybody may get the source of popeye. We
believe that this software should be public and does not constitute
our own personal property - even we have invested a lot of work in
it. This work cannot be waged by money, and also we devote our time to
popeye not to earn money.
The only restriction that we impose is that Popeye be distributed in
its entirety.
Providing feedback:
The preferred way of submitting bug reports or feature requests is
through the tools offered on github.com .
Please direct your browser to
https://github.com/thomas-maeder/popeye/issues
Use the "Add new" link and fill out the "Summary" and "Description"
with the information you'd like to submit, then use the "Add Artifact"
button to submit your bug report or feature request.
Starting popeye:
Change the name of your preferred executable to py.exe
To operate it from the terminal: py
To solve problems recorded in file XX: py XX
Commandline parameters:
-maxmem
You can provide for Popeye for example 40960 kilobyte (or 40 megabye)
of memory with
-maxmem 40960 resp. -maxmem 40M
to speed up solving.
Popeye uses this memory to avoid testing the same intermediate
positions repeatedly. You can indicate -maxmem 0 to turn off this
optimisation.
-maxtime
Indicate the maximum number of seconds that Popeye may spend
on each problem. This command line option is
equivalent to the option maxtime that can be used in the problem
definition (see below).
Example:
-maxtime 60
If a problem hasn't been solved after one minute, solving
continues with the next problem in the input file (if any).
-regression
FOR DEVELOPERS MAINLY
Popeye version info and solving times are suppressed from
output files.
Stopping Popeye:
press CTRL + C key combination
Description of the input language of popeye:
The input to popeye is not case sensitive. Every input to popeye starts with
the reserved word `BeginProblem'. After entering this command to popeye,
following commands may be used:
remark, author, origin, title, protocol,
condition, option, stipulation, sstipulation, forsyth, pieces, twin
The order of these commands is free, and can also occur more times.
The last of the commands in the second line is relevant. All of these
commands expect further parameters. Lets start with the simpler commands:
- remark: this keyword introduces a comment. Everything up to the end of the
line will be ignored and has no further effects.
- author: The parameter to this command is the author of the problem. All
Text up to end of line will be put above the diagram in the output.
This input is completely optional and has no effect to the other
capabilities of the program. All the input of multiple author
commands will be placed on the output.
- origin: All the same as the author command.
- title: All the same as the author command.
- protocol: The parameter to his command is interpreted as filename, and all
further output of popeye on the screen is also placed in the given
file. If the file exists already, the output of popeye is appended to
the file. The file will not be deleted.
- condition: All the conditions neccessary for the problem, seperated by
blanks or newline, should be given to this command.
The following conditions are implemented:
Circe
Madrasi
Volage
Hypervolage
BichromChess
MonochromChess
GridChess
KoeKo
BlackEdgemover
WhiteEdgemover
Leofamily
ChineseChess
Patrouille
NoCapture
ImmunChess
ContactGridChess
Imitator
CavalierMajeur
HaanerChess
Sentinelles
Maximummer (applies to the defending side - don't mix with Black/White...)
UltraSchachZwang (dito)
BlackMaximummer
WhiteMaximummer
WhiteUltraSchachZwang
BlackUltraSchachZwang
BlackMinimummer
WhiteMinimummer
MagicSquares
Tibet
DoubleTibet
Hole (= a square where you cannot move to)
BlackMustCapture
WhiteMustCapture
TransmutedKings
BlackFollowMyLeader
WhiteFollowMyLeader
DuellistChess
NoIProm No Promotion to Imitator allowed
VogtlaenderChess
EinsteinChess
Bicolores
NewKoeko
AntiCirce
ReversalEinsteinChess
RelegationChess
NorskSjakk
TraitorChess
AndernachChess
BlackForcedSquare
WhiteForcedSquare
BlackConsequentForcedSquare
WhiteConsequentForcedSquare
ReflectiveKings
ChameleonChess
FunctionaryChess
GlasgowChess
AntiAndernachChess
Isardam
ChecklessChess
PromOnly
ExclusiveChess
Marscirce
PhantomChess
WhiteTransmutedKing
BlackTransmutedKing
WhiteReflectiveKing
BlackReflectiveKing
AntiEinsteinChess
BlackRoyalSquare
WhiteRoyalSquare
PlusChess
BrunnerChess
CentralChess
ExtinctionChess
RepublicanChess
ActuatedRevolvingBoard
MessignyChess
Woozles
BiWoozles
Heffalumps
BiHeffalumps
WhitePromSquares
BlackPromSquares
NoWhitePromotion
NoBlackPromotion
EiffelChess
ActuatedRevolvingCentre
ShieldedKings
NoWhiteCapture
NoBlackCapture
AlphabeticChess
LineChameleonChess
AMU
SingleBox
MAFF
OWU
WhiteOscillatingKings
BlackOscillatingKings
AntiKings
AntiMarsCirce
WhiteSuperTransmutingKing
BlackSuperTransmutingKing
UltraPatrol
SwappingKings
RoyalDynasty
SAT
StrictSAT
Take&MakeChess
Make&TakeChess
BlackSynchronMover
WhiteSynchronMover
BlackAntiSynchronMover
WhiteAntiSynchronMover
Masand
MasandGeneralised
BGL
AnnanChess
NannaChess
NormalPawn
BlackChecks
GenevaChess
VaultingKings
WhiteVaultingKing
BlackVaultingKing
ProteanChess
Lortap
Antikoeko
CastlingChess
ChameleonPursuit
LosingChess
GhostChess
Football
WhiteAlphabeticChess
BlackAlphabeticChess
KobulKings
SuperGuards
Wormholes
MarineChess
UltramarineChess
BackHome
FaceToFace
BackToBack
CheekToCheek
Disparate
SnekChess
SnekCircleChess
ArgentinianChess
LostPieces
PartialParalysis
LeseMajeste
Rokagogo
Breton
PointReflection
Bolero
BoleroInverse
Influencer
RoleExchange
BlackMaxDister
BlackMinDister
WhiteMaxDister
WhiteMinDister
SeriesCapture
Pepo
CASTchess
CASTInverse
MultiCaptures
FuddledMen
Bicaptures
TransmissionMenace
PowerTransfer
After the conditions Imitator, MagicSquare, Hole,
WhitePromSquares, BlackPromSquares or one of
the ForcedSquares, list the squares on which the imitators are
to be placed, where the special squares are located, where
promoted pieces (FrischaufCirce) are located, or where the
white or black promotionsquares are located.
The condition PromOnly must be followed by a list of piece types,
separated through blanks. Promotion is only allowed into those
piece types.
The condition ChameleonCirce can be followed by a list of
piece types, separated by blanks. The list determines how
pieces change their type before being reborn. (Examples:
"ChameleonCirce S B R Q S" is ordinary Chameleon-Circe
and equivalent to "ChameleonCirce"
"ChameleonCirce S Q R B S" gives reverse ChameleonCirce.)
In the condition ChameleonChess, the same notation can be used
to define the piece type sequence of all officers. And the
auxiliary condition ChameleonSequence can be used to define that
sequence of the explicitly indicated chameleons.
After Madrasi and PowerTransfer, you can enter "RexInclusive".
After the Isardam condition, "TypeB" and then "RexInclusive" can be
specified.
After the SingleBox condition, "Type1", "Type2" or "Type3" can
be entered.
After the RepublicanChess condition, "Type1" or "Type2" can
be indicated; Type2 is the default.
After the list of magic square, "Type1" or "Type2" can
be indicated; Type1 is the default.
After the Sentinelles condition "PionAdvers", "PionNeutre",
"ParaSentinelles", or "Berolina" can be entered, and also
"MaximumWhite", "MaximumBlack" or "MaximumTotal" followed by a
number.
After MessignyChess, (Bi)Woozles, (Bi)Heffalumps and Protean
Chess you can enter "RexExclusive".
After the WhiteOscillatingKings or BlackOscillatingKings
condition "TypeB" or or "TypeC" can be entered.
After GridChess, various variantes can be entered.
VerticalShift, HorizontalShift and DiagonalShift produce the
normal grid shifted by one rank and/or file. E.g. the cell
containing the square a1 consists of:
VerticalShift: a1b1
HorizontalShift: a1a2
DiagonalShift: a1
Orthogonal followed by a list of files (to the left of any
grid lines) and ranks (below any grid lines) all without
spaces between.
Irregular followed by space-separated lists of square groups
forming the grid cells. N.B. The largest square group can be
omitted as all remaining squares not specified will form
another group.
For example the standard grid can be described by any of
condition grid
condition grid orthogonal bdf246
condition grid irregular a8a7b8b7 c8c7d8d7 ...
Specifying
condition grid irregular
with no squares listed will make all moves illegal.
GridLine followed by a list of lines will add extra lines to
the grid. This should be used only to specify partial lines that
do not subdivide a grid cell, (i.e. to allow some moves to be
legal within a grid cell) as specifying cells is more
efficient. The grid lines must be specified in 4 characters e.g.
condition grid gridline Ha24 Vc61
will draw a horizontal grid line from the bottom-left corner of
a2 for 4 squares and a vertical line from the bottom-left corner
of c6 for 1 square, on top of the normal grid.
To draw grid lines on a blank board, i.e. with no regular grid,
specify
condition grid irregular gridline Ha24 Vc61
(N.B. In the context of grid chess, moves go as straight lines
from square centre to square centre; pieces that do not move
in straight lines may not behave as expected; moves are permitted
which merely touch the end of a gridline (e.g with gridline Ve11
and wKd1, the move Kd1-e2 is legal).
After any of the VaultingKings conditions, a space-separated
list of piece types may be given. The checked king will move
additionally as one of the piece types in the list. If the
option Transmuting is given, the checked king will move only
as one of the pieces in the list (not as king). If no piece
type is given, the checked king (additionally) moves as
equihopper.
After the MustCapture, Maximummer and Minimummer conditions,
the keyword "Ultra" indicates that the respective Ultra
condition is intended.
After RoleExchange, the maximum number of RoleExchanges can be indicated.
Without this indication, the number is unlimited.
After Circe, AntiCirce, MarsCirce, AntiMarsCirce, ImmunChess,
PhantomChess and GenevaChess, a number of options can be indicated; the
options can be combined in various ways. Not
all combinations make sense, and not all options make sense for
all base conditions.
In addition, options who belong to the same of the following 8 groups
are normally mutually exclusive.
Inclusion of the kings:
RexInclusive (default for AntiCirce and MarsCirce)
RexExclusive (default otherwise)
Relevant move/walk/side:
LastMove
WaitCapture
Clone (also defines the walk of the reborn piece)
Couscous
Mirror (special meaning for Equipollents - see below)
Restrition to piece walk:
April (followed by a list of piece walks)
Definition of the rebirth square(s):
Equipollents
Parrain (== Equipollents LastMove)
ContraParrain (== Equipollents LastMove Mirror)
Rank
File
Symmetry
Diagram
PWC
Antipodes
Super
Take&Make
Cage
CaptureSquare
Adaptation of the rebirth square:
Diametral
VerticalMirror
Frischauf
(Rank)
Adaptation of the reborn piece's walk:
Chameleon
Turncoat
Einstein
ReversalEinstein
Behaviour in case of occupied rebirth square:
Relaxed (default for Circe)
Strict (default otherwise)
Assassin
Volcanic
Parachute
Self-block of the reborn piece:
Calvet (default)
Cheylan
The following "traditional" condition names can still be used;
RexInclusive resp. RexExclusive can be added:
traditional: Indication with option(s):
MirrorCirce Circe Mirror
PWC Circe PWC
CouscousCirce Circe Couscous
ChameleonCirce Circe Chameleon
EquipollentsCirce Circe Equipollents
FileCirce Circe File
DiagramCirce Circe Diagram
ParrainCirce Circe LastMove Equipollents
ContraParrain Circe LastMove Equipollents Mirror
SymmetryCirce Circe Symmetry
MirrorFileCirce Circe File Mirror
AntipodeanCirce Circe Antipodes
MirrorCirceClone Circe Clone Mirror
SuperCirce Circe Super
CirceClone Circe Clone
FrischaufCirce Circe Frischauf
DiametralCirce Circe Diametral
MirrorCouscousCirce Circe Couscous Mirror
CirceAssassin Circe Assassin
CirceTurncoats Circe Turncoat
CirceDoubleAgents Circe Turncoat Mirror
CageCirce Circe Cage
CirceTake&Make Circe Take&Make (also known as Anti-Take&Make)
VerticalMirrorCirce Circe VerticalMirror
AprilChess Circe Super April
MirrorAntiCirce AntiCirce Mirror
DiagramAntiCirce AntiCirce Diagram
FileAntiCirce AntiCirce File
SymmetryAntiCirce AntiCirce Symmetry
MirrorFileAnticirce AntiCirce File Mirror
AntipodeanAntiCirce AntiCirce Antipodes
EquipollentsAntiCirce AntiCirce Equipollents
AntiCloneCirce AntiCirce Clone
AntiSuperCirce AntiCirce Super
MarsMirrorCirce MarsCirce Mirror
AntiMarsMirrorCirce AntiMarsCirce Mirror
AntiMarsAntipodeanCirce AntiMarsCirce Antipodes
MirrorImmunChess ImmunChess Mirror
FileImmunChess ImmunChess File
DiagramImmunChess ImmunChess Diagram
MirrorFileImmunChess ImmunChess File Mirror
SymmetryImmunChess ImmunChess Symmetry
AntipodeanImmunChess ImmunChess Antipodes
EquipollentsImmunChess ImmunChess Equipollents
After Breton, Adverse or PY can be indicated.
- option: Everything which should be in effect should be given here as
blank seperated list. The following is recognized:
Try calculate if a move is a try.
Defence this option is followed by a number indicating
the number of defences which should be taken
into consideration. For instance Defence 1 all
real tries are calculated.
TrivialTriesAvoid Remove trivial tries from the output.
Currently, refuted first moves delivering check
are considered trivial.
SetPlay calculate setplay.
NullMoves Allows the moving side to play a null move.
Servers for finding tempo tries.
Threat for moremovers: This option must be followed
by an integer. The opposit party has defended
when there is no threat in less or equal this
number of moves.
WhiteToPlay white starts moving in helpplay.
Variation show threats and variations.
MoveNumbers Movenumber, already calculated move and cumulated
solving time on output.
StartMoveNumber This option is followed by the Movenumber
popeye was interrupted at.
UpToMoveNumber This option is followed by the Movenumber
Popeye will be interrupted at.
NoWk without white king
NoBk without black king
Duplex calculate stipulation for both sides
NoThreat calculate variations without calculating threats
MaxSolutions This option must be followed by an integer. Popeye
stops calculating if this number of solutions
are reached.
MaxFlightsquares for moremovers: This option must be followed
by an integer. The opposit party has defended
when the number of flightsquares for it's king
are more or equal this number.
EnPassant Must be followed by 3-4 squares which indicate the
pawn move just played:
- departure square
- avoided squares
- arrival square
This information is used for potential en passant
keys.
CastlingMutuallyExclusive <wrooksquare><brooksquare>
Castlings with the rooks that occupy the
indicated squares in the game array are
mutually exclusive.
Example: CastlingMutuallyExclusive a1h8
For indicating more than one pair of mutually
exclusive castlings, the option can used
multiple times.
NoBoard The chessboard is not printed to screen or into file.
NoShortVariations Short variations are suppressed on output.
HalfDuplex calculate stipulation only for the opponent side.
PostKeyPlay The position entered is considered to be the position
after the key. Just the solution play is analysed.
NonTrivial m n A special option to solve/cook/test long self and
(semi)reflex problems. The second argument n
deter- mines which black moves are considered
to be trivial - a move that can be met by a
s#n (or r=n resp.). In long problems (more
than n moves) black has at every stage at
least one nontrivial move. I. e. a move that
doesnot lead to a s#n. The first argument m
determines how many additional nontrivial
moves can be granted to black by white during
the whole solving procedure. Example: nontr 0
1. This is the most restrictive option. White
forced to play moves that leave black with
only one move not met by a s#1.
Intelligent intelligent (quick) solving of help(stale)mate
moremovers.
After the intelligent option, the maximum number of
solutions per (stale)mate position can be given.
Note: doesn't find stalemates without king!
MaxTime This option must be followed by an integer. Popeye
stops calculating if this number of seconds
solving time are reached.
NoCastling This option must be followed by the squares of those
pieces that cannot castle anymore in the
diagram position.
Quodlibet In s# or r# also direct mates are a solution.
StopOnShortSolutions Calculation is terminated after detecting of
short solutions.
Beep This option can be followed by an integer. Each time
Popeye has found a solution it beeps a number
of times.
SuppressGrid (Grid Chess) Suppress the rendition of grid lines
in text and LaTeX output.
WriteGrid (Grid Chess) Writes an additional board that
the partition of the board into grid cells.
Useful for irregular grids.
KeepMatingPiece Stop solving when there is no piece left that could
deliver mate.
LastCapture Follow by a colour, piece and square as in the piece
command. Specifies piece captured on move leading to
the diagram.
GoalIsEnd applicable if the goal doesn't lead to immobility
(e.g. z, x): the play ends if the wrong side reaches
the goal.
MatesIn1 don't suppress mates in 1 in self play if play would
allow longer variations)
- stipulation: popeye knows the following stipulations:
any meaningful combination of
{#= } {#= }
{!= } {!= }
{!# } {!# }
{00 } {00 }
{% } {% }
{~ } {~ }
{ep } {ep }
{SER- } {H } {# } {# }
{PSER-} {S } {= } {= }
{m->} + {EXACT-} + {PHSER-}+ {R } + ( + {== } + ) + {== } + n
{SEMI-} {HS} {+ } {+ }
{RECI-} {HR} {Zxy} {Zxy }
{x } {x }
{## } {## }
{##!} {##! }
{ct } {ct }
{<> } {<> }
{ctr} {ctr }
{<>r} {<>r }
{c81} {c81 }
{Kxy }
{dia } + n{.5}
{SER-} + {dia } + n
{a=>b} + n{.5}
{SER-} + {a=>b} + n
(m, n are the number of moves)
for example:
#3 mate in three moves
HZg74 help-targetsquare-g7 in 4 moves
sKa74 self-kiss of the piece on a7 in 5 moves
S+2 self-check in 2 moves
R==3 reflex-doublestalemate in 3 moves
HS#3 helpselfmate in 3 moves (= help forced selfmate)
SER-+7 series-check in 7 moves
SEMI-R+4 semi-reflex-check in 4 moves
x3 Capture in 3 moves
RECI-H#2 reciprocal helpmate in 2 (= Grazer helpmate)
RECI-H(=)#2 reciprocal help(stale)mate in 2 moves (black
delivers stalemate or allows being mated)
SER-%4 series-Win_a_Piece in 4 moves
H##!4 help-"gegenmatt" in 4 moves
SER-H##3 series-help-"beidmatt" in 3 moves
2->ser-h#4 white makes 2 moves, then ser-h#4
h003 help-castling in 3 moves
dia6.5 Shortest Proofgame in 13 halfmoves
(after the seventh move of white)
ser-dia9 Series-Proofgame in 9 moves
reci-h(=)#4 helpalternative(stale)mate in 4 moves
ser-!=7 Series-AutoStalemate in 7 moves
ser-ct10 Series-direct circuit (switchback) in 10 moves
(of W piece)
h<>3 help exchange place in 3 moves
(Bl helps W swap 2 pieces from diagram)
ser-sctr2 series self circuit by rebirth in 2 moves
(W forces Bl to complete switchback of a W piece)
ser-h<>r5 series help exchange place by rebirth in 5 moves
(Bl helps W complete by rebirth the exchange
of two Bl pieces)
#=2 mate or stalemate in 2 moves
h~1 any helpmove
HR#3 helpreflexmate in 3 moves (= help forced reflexmate)
pser-h#6 Parry series helpmate in 6
phser-s#6 Parry series selfmate in 6 (parry moves are help moves)
SEMI is valid only in combination with direct reflex-play.
All these stipulations must be followed by a number giving the
count of moves.
- sstipulation: The stipulation can also be indicated in "structured form".
This form allows all stipulations to be indicated that can also be
indicated in traditional form using the command "stipulation". In
addition, it allows many more stipulations to be indicated.
(Exception: pser stipulations are not supported currently)
With sstipulation, the play is described as a tree structure. Play
starts at the root, continues through branches that may fork,
and ends in one or more leaves. After the keyword sstipulation,
indicate the root by specifying the side to move, then the branches
and the leaves in the language as specified below.
Anatomy of a sstipulation
-------------------------
Example: sstipulation white 5s[#]
In this stipulation, it is White to move. Play consists of a
branch that leads into a leaf. The branch consists of 5
*s*eries moves. The leaf simply tests whether a mate has been
reached.
The definition of a branch normally consists of:
- the maximum length in half-moves (in the example: 5)
- the type of the branch (s for series)
- leaves (#)
- forks (don't occur in the example)
- constraints (don't occur in the example)
Play ends in one or multiple leaves. Their definition normally
consists of the goal (in the example: #) to be reached.
When changing from a branch to another or to a leaf, the right
to move is changed. In the example, it is Black to move in the
leaf, i.e. the leaf tests whether Black is mate.
The example is thus a synonym for
stipulation ser-#5
Branch types
------------
Type Notation Examples Synonyms as stipulation
Series s 5s[#] ser-#5
"Battle play" ad 3a[+]d, 4ad[x] +2, sx2
da 3d[==]a s==2 option postkeyplay
Help play hh 5h[=]h h=2.5
The letters s (series move), a (attacking move), d (defending
move) and h (help move) each represent a half-move.
A fork following a, h or s defines what the respective move is
supposed to reach, and a fork following d what the move
defends against.
Note: a da branch is solvable if the side to move DOES NOT have
a refutation.
Fork into a branch
------------------
A fork leads into a nested branch.
Examples Synonyms as stipulation
3a[1a[#]d]d semi-r#2
4hh[1a[#]d] not supported (Help-Semireflexmate in 2.5)
6s[1d[#]a] ser-s#6
Branches with more than one fork or leaf
----------------------------------------
After each half-move, both a leaf and a fork can be indicated.
Examples Synonyms as stipulation
4a[#=]d[#=] s#=2 option quodlibet
3a[#][1a[#]d]d semi-r#2 option quodlibet
Logical expressions
-------------------
The following operators can be applied to leaves and branches
to form expressions:
Operator Meaning
! Negation
| OR
& AND
Examples Meaning
!# the side to move is not mate
!3a[#]d there is no solution to a direct twomover
4ad[#] | 3h[#]h s#2 or h#1.5
1h[#]h & 2hh[#] #1 and h#1 (i.e. reci-h#1)
Both operands of the binary operators have to belong to the
same of the following groups:
- leaf # = zh1 ...
- attack ad hh s
- defense da
An expression belongs to the same group as its operand(s) and
can therefore be the operand of an expression, e.g. (as
alternative to triplets):
3a[#]d & 4hh[#] & 4ad[#]
The three partial expressions as well as the & expressions
belong to the attack group.
Operators are normally evaluated from left to right. If
necessary, use () to define the proper precedence. E.g.
4hh[#] & ( 4ad[#] | 4hh[=] )
Constraints
-----------
Constraints can be indicated in branches using curly braces
({}).
Example Synonym as stipulation
3a[1a[#]d]d{!1a[#]d} r#2
Note: even if the constraint follows the d, it is enforced
BEFORE each attacking move (including the first one!). The
problem has thus no solution if the constraint is violated in
the diagram.
The two principal differences between nested branches/leaves
and restrictions are:
- the requirement expressed by the nested branch/leaf only
needs to be fulfilled at the end of play; a restriction,
however, has to be fulfilled each time before the respective
move is played
- the moves played for the verification of a constraint don't
appear in the printed solution, with the following 2
exceptions:
* if a constraint is violated in the diagram position
* if the refutation of a try leads to a violated constraint
("reflex defense")
Branches with minimal length
----------------------------
The syntax m:n can be used to define a branch with minimal
length (m=minimal, n=maximal length):
Examples synonym as stipulation
4:4hh[#] exact-h#2
3:5s[#] not supported (series mate in 3 to 5 moves)
Special operators at the beginning of a branch
----------------------------------------------
The operators >, / and - can occur in this order at the
beginning of branches.
> at the beginning of the definition of a nested branch ends
play in the containing branch in positions where the nested
branch has a solution. E.g. a problem with
sstipulation white 3h[1a[x]d]h
can have the solutions
1.g3-g4 h5*g4 x
1.g3-g4 h5*g4 2.h4-h5 g4*f3 x
The longer sequence is a solution although the goal has been
reached after the first two half-moves already. If play is to
end as soon as the goal is reached, write
sstipulation white 3h[>1a[x]d]h
The operator / at the beginning of a nested branch prevents
the moves played in that branch from appearing in the output.
E.g. the capturing moves forced by Zugzwang in CapZug
stipulations are not part of the solution. Help CapZug in 2.5
moves is thus defined as
sstipulation black - 5h[/1d[x]a{!+}]h
The side to move at the beginning of a branch can be changed
using the - operator.
Examples Synonyms as stipulation
- 7h[#]h h#3.5
3h[- 4hh[#]]h not supported (h#4 without 2nd white move)
Conditional right to move
-------------------------
The right to move can be restrained by a requirement R by prefixing the
respective symbol (h resp. d) with ?R?.
The right to move represented by a symbol decorated in this way is
granted only if the requirement is fulfilled at the relevant time.
Example: sstipulation white 7h[#]?+?h (synonym of stipulation phser-#4)
Currently, the only supported requirement R is that the side at the move
be in check.
In addition, ?R? is only applicaple in two contexts:
- in ad to the d
- in hh to the second h, provided that the maximum length of the branch
is not divisible by 2
Further examples:
white 15a[#]?+?d (pser-#8)
white 15a[1d[#]a]?+?d (pser-s#8)
white 15a[>1a[#]d]?+?d (pser-semi-r#8)
white 15a[>1a[#]d]?+?d{!1a[#]d} (pser-r#8)
black 15h[1a[#]d]?+?h (pser-h#8)
white 15h[1d[#]a]?+?h (phser-s#8)
All these commands up to now are very easy to use (except maybe
sstipulation). A little bit more elaborate are the commands
- forsyth: With this command you can enter the position in forsyth notation.
Examples:
rsbqkbsr/pppppppp/8/8/8/8/PPPPPPPP/RSBQKBSR (game array)
rsbqkbsrpppppppp32PPPPPPPPRSBQKBSR (game array; alternative)
48/5gPp/5K1k (V.Onitiu, #6 - black grasshopper)
1.PA6/8/1Q2.ma3/8/k1.pa.pa4/8/1P1K (Z.Mach, #2 - chinese pieces)
Pieces represented by one letter in the "pieces" command are entered using that
same letter in the forsyth command. The squares are registered from a8 to h8, followed
by a7 to h7, etc. down to h1. Runs of blank squares are registered by a number which
counts the number of blanks, and the "/" character separates each rank.
Lowercase letters represent black pieces and uppercase letters represent white pieces.
The "/" character is optional. Runs of blanks squares of 10 or more can be entered. Blank
squares after the last piece can be omitted (e.g. Mach example above, 4/8 has been omitted).
The notation is extended to allow input of fairy pieces as follows:
- a piece can begin with an optional colour specification character (which overrides use of a
lowercase/uppercase letter)
+ White
- Black
= Neutral
Examples:
+g White grasshopper (or +G)
=p Neutral pawn (or =P)
- a piece which is represented by two letters or digits in the "pieces" command can be entered
with the "forsyth" command by commencing with a ".". The first of the two following letters
determines whether it is white or black, unless a colour specifier is used. Examples:
.PA White Pao
.ma Black Mao
.g2 Black Grasshopper-2
+.15 White (1,5)-leaper
-.15 Black (1,5)-leaper
=.li Neutral Lion
Note only the first of the two letters is checked for lowercase/uppercase to determine the colour.
It is only necessary to use a colour specifier +/-/= for neutral pieces, or for pieces whose
representation is two digits.
At present pieces with other attributes (paralysing, royal etc.) cannot be entered with this command. It
is possible to enter additional pieces with the "pieces" command, either before or after the "forsyth"
command (blank squares in the forsyth command will not be cleared)
- pieces: This command specifies all the pieces belonging to the problem.
After this keyword, the color of the following pieces must be given:
This is one of:
White
Black
Neutral
After the color specification
Chameleon
Jigger
Kamikaze
Paralysing
Royal
Volage
Functionary
HalfNeutral
HurdleColourChanging (only for hoppers !)
Protean
Magic
Uncapturable
FrischAuf
may be given. All the pieces given after this will have these
attributes. After this specification follows the list of
pieces: First the walk of the piece followed by the list of
squares where pieces should be placed on. By giving a new color
specifiation pieces of another color may be entered without
repeating the pieces command.
If a piece is placed on an occupied square, the previous piece
is transfered below the square to the top of the underworld. In the
fairy conditions Circe Volcanic, Circe Parachute, GhostChess and
HauntedChess, moves from that square cause pieces from the underworld
to be transfered back into the real world. Otherwise, pieces in the
underworld allow promoting pawns into their walk.
Popeye supports the following piece walks:
15 1,5-leaper
16 1,6-leaper
24 2,4-leaper
25 2,5-leaper
35 3,5-leaper
36 3,6-leaper
37 3,7-leaper
ah MAoHopper
al alfil
am amazon
an antelope
ao maorider
ar archbishop
b bishop
b1 bouncer
b2 rook bouncer
b3 bishop bouncer
be bishop eagle
bh bishop hopper
bi bison 1,3+2,3 leaper
bk bouncy knight
bl bishop-lion
bm bishop moose