xy-chain is equivalent to all current techniques that use bivalue cells as placeholders:
- xy-ring - Continuous xy-chain of length 4
xy-wing - Discontinuous xy-chain of length 4
In an xy-chain, nice loop propagation always follows pure links with 'weak inference' (drawn as broken lines, each with a -ve label) connected by bivalue cells (refer definitions of 'link', 'strong link', 'strong inference' and 'weak inference' here), eg.
.........[cell 1]-a-[cell 2]-b-[cell 3]-c-[cell 4]-d-[cell 5]-e-[cell 6]-f-[cell 7].........
where the notation :
'-x-' is a link with weak inference of -ve label x
[cell N] is a bivalue cell
In an xy-chain nice loop, if the links propagate in a cyclic manner (ie. no adjacent links are of same label), the loop is said to be 'continuous'.
With continuous xy-chain, the labelled candidate of a link can be eliminated outside the loop but within the unit of the link as demonstrated below:
Nice loop notation:
example 1 - xy-ring: -[r2c2]-3-[r2c5]-6-[r6c5]-4-[r6c2]-2-[r2c2]-
example 2 : -[r1c2]-4-[r1c6]-1-[r5c6]-8-[r4c6]-9-[r6c8]-2-[r4c8]-6-[r4c2]-1-[r1c2]-
A 'discontinuous' xy-chain nice loop has exactly one pair of adjacent links carrying the same label; the discontinuity is located between these 2 links.
At the discontinuity between 2 adjacent links of same label, the labelled candidate can be eliminated from the node as demonstrated below:
Nice loop notation always starts from the discontinuity:
example 3 - xy-wing: [r8c6]-2-[r3c6]-7-[r1c4]-6-[r1c6]-2-[r8c6] => r8c6<>2
example 4: [r8c3]-5-[r4c3]-4-[r4c9]-1-[r6c7]-7-[r2c7]-8-[r2c5]-2-[r8c5]-5-[r8c3] => r8c3<>5
You may have noticed that in box 2, the naked triple is just a continuous xy-chain that concludes the rest of the cells in box 2 must not be 2, 6 and 7.
An xy-chain can be proven by double implications. Consider example 4 above:
Nice loop notation: [r8c3]-5-[r4c3]-4-[r4c9]-1-[r6c7]-7-[r2c7]-8-[r2c5]-2-[r8c5]-5-[r8c3] => r8c3<>5
Proof (Implications can start from any node in the nice loop):
r6c7=1 => r4c9<>1 => r4c9=4 => r4c3<>4 => r4c3=5 => r8c3<>5
r6c7=7 => r2c7<>7 => r2c7=8 => r2c5<>8 => r2c5=2 => r8c5<>2 =>r8c5=5 => r8c3<>5
Therefore r8c3<>5