, , ,

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:
    XY

In ASCII, we would write X[<]Y.

A position is not an ancestor of itself:

  XX
is always false.

If either X is an ancestor of Y or X is equal to Y, we write

  XY

(ASCII: X[<=]Y.)

If X is an ancestor of Y then we say that Y is a descendant of X.

The expression

  YX

means that Y is a descendant of X. (ASCII: Y[>]X).

Naturally,

  YX

means that either Y is a descendant of X or Y is equal to X. (ASCII: Y[>=]X).

comparison to <

Recall that if X and Y are positions, then

  X<Y
is true if the positionid of X is smaller than the position id of Y.

On the other hand,

  XY
is true if X is an ancestor of Y .

The positionid of a position is chosen so that any position has a smaller position id than its descendants. Thus, if XY is true, then so is X<Y.

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 < and are identical.

The value of

The value of the positional relational symbols , , , follows the precedence and conventions of the other relational symbols.

Thus, if XY is true, then its value is equal to X.

Similarly,

  XYZ
has value equal to X when the expression is true.