on filter
Anon filter is a left clause and a right clause with the word on between them. Each of the clauses must be set filters.
on-filter := left-clause 'on' right-clause left-clause := set-filter right-clause := set-filterThe set associated with an
on filter in a position is the intersection of the sets associated with its left clause and right clause in that position. For example,
B on between (A A)matches any square in a position that has white Bishop on it between two white pieces. The left clause of the on filter is
B which is a piece designator filter and is associated with the set of squares that has a white Bishop on it. The right clause is between (A A) which is a between filter and is associated with the set of squares between two white pieces.
on filters may be chained:
B on between (A A) on attack (a A)
will match the set of squares in a position that has a white Bishop on it between two white pieces and that is attacked by a black piece. This is technically a single on filter whose left clause is the piece designator filter B and whose right clause is the on filter whose left clause is the between filter between (A A) and whose right clause is the attack filter attack (a A).
Examples