Suppose X and Y are positions with the main pgn file. If the position Y is reached from X by making a nonempty sequence of moves in the pgn file, we say that position X is an ancestor of Y and write this as:
In ASCII, we would write
A position is not an ancestor of itself:
X≺Xis always false.
If either X is an ancestor of Y or X is equal to Y, we write
If X is an ancestor of Y then we say that Y is a descendant of X.
means that Y is a descendant of X. (ASCII:
means that either Y is a descendant of X or Y is equal to X. (ASCII:
comparison to <
Recall that if X and Y are positions, then
X<Yis true if the positionid of X is smaller than the position id of Y.
On the other hand,
X≺Yis true if X is an ancestor of Y .
positionid of a position is chosen so that any position has a smaller position id than its descendants. Thus, if
X≺Y is true, then so is
The converse is not necessarily true however. If
variations is set in the CQL header, then it might be the case that
X<Y is true but
X<Y is false. However, if
variations is not set in the CQL header, so that only mainline positions are considered, then
≺ are identical.
The value of
The value of the positional relational symbols
≺, ≻, ≼, ≽follows the precedence and conventions of the other relational symbols.
X≺Y is true, then its value is equal to
X≺Y≺Zhas value equal to
Xwhen the expression is true.