virtualmainline
virtual mainline
In studies, we sometimes have several main lines,for example one that leads to a win with a rook promotion and another that leads to a win with a bishop promotion. However, the PGN file standard forces one of these variations to be the "main" line, and the other to be a "variation". This may lead to inaccurate searches or to incorrect artistic evaluation.
The filter virtualmainline
allows us to overcome this technical limitation of the PGN standard.
A position is in a virtual mainline if all of its ancestor branches were initiated by black. For example, consider the PGN file:
1.e4 (1.d4 d5) c5 (1..e5 2.Nf3 (2.f4 d6) d6)
The 3 positions following each of the highlighted moves would
match a virtualmainline
filter. The position after the not-highlightd
2..d6
is not a virtualmainline because it is arrived at after a white initiated branch represented by the move 2.f4
More formally, there are three rules that determine the set of virtual mainline positions in a PGN file:
- The initial position is a virtual mainline position.
- If a position is a black-to-move virtual mainline position, then its children are all virtual mainline positions.
- If a position is a white-to-move virtual mainline position, then its primary child is a virtual mainline position
The virtualmainline
filter matches a position that is a virtual mainline position:
virtualmainline
Note that this only makes sense if variations
is set in the CQL header, which you must do explicitly. If variations
is not set, then every position is a mainline position, and thus also a virtual mainline position as well.
You can also use the command line option -virtualmainline
, which is an abbreviation for -cql virtualmainline
. The -virtualmainline
command line option also sets the variations
flag.
Note that -virtualmainline
differs from -variations
or -mainline
in that -virtualmainline
does not apply recursively to move or to positions considered within filters that modify the current position (like find, line, echo).