In this post, you will be shown how to identify double implication forcing chains known as simple nice loops using the b/b plot. In a simple nice loop, each node contains only one cell.

A double implication forcing chain is defined as a chain with 2 implications in which a node implies only the next node downstream. In any network where a node implies more than one node, such network is regarded as a forcing net.

In a bilocation/bivalue plot, 'strong links' and 'links' with 'strong inference' and 'weak inference' between nodes are constructed and labelled for identification of simple nice loops as follows: (refer definitions of 'link', 'strong link', 'strong inference' and 'weak inference' here):

b/b plot construction procedure:

1) Use solid lines and +ve labels to show 'strong links' with both strong and weak inferences.

2) Use broken lines and -ve labels to show 'links' with weak inference only.

3) Draw solid line between bilocation nodes with conjugate relationship in a unit.

4) Draw broken line between bivalue nodes sharing same candidate.

5) Draw broken line between ends of 2 solid lines with same labels.

6) Draw broken line from the end of a solid-line to a bivalue node with a candidate matching the label of the solid line.

7) Identify nice loops. Draw additional broken lines (refer 8 & 9 below) to complete nice loops as required.

8) Additional broken line can be from any node to the end of a solid line with label matching a candidate of the node.

9) Additional broken line can be from any node to a bivalue node sharing the same candidate.

The plot (without additional broken lines) should look something like this:

Via the bilocation/bivalue plot, simple nice loops can be identified with each loop representing a double implication forcing chain. These nice loops must follow a set of nice loop propagation rules which enables valid forcing chain inferences to take place as follows:

Nice loop propagation rules:

1) A strong link, can be interpreted as a strong inference or a weak inference.

2) To propagate from a link with strong inference to a link with strong inference (ie. solid/solid), the labels must be different.

3) To propagate from a link with weak inference to a link with weak inference (ie. solid/solid, solid/broken, broken/solid or broken/broken) the labels must be different and the node between links must be bivalue. (typical xy-chain propagation)

4) To propagate from a link with strong inference to a link with weak inference (ie. solid/solid or solid/broken) or vice versa, the labels must be same but opposite in signs. (typical x-cycle propagation)

There are 2 types of nice loops, namely continuous type and discontinuous type. If the set of propagation rules is obeyed continuously within a nice loop in a cyclic manner, the loop is said to be a "continuous nice loop", otherwise "discontinuous".

Each continuous nice loop would allow candidates to be eliminated as follows:

THEOREM 1:

If a cell between 2 links with strong inference belongs to a continuous simple nice loop, then the cell can only be filled with one of the 2 digits that label the links; thus other candidates in the cell can be eliminated.

For example, due to the continuous nice loop below, a 3 in r4c6, a 3 in r8c6 and an 8 in r8c1 can be eliminated.

Nice loop notation (see explanation for nice loop notation below):

-[r4c2]=1=[r4c6]=6=[r8c6]=2=[r8c1]=1=[r6c1]-1-[r4c2]=

implies r4c6<>3, a r8c6<>3, and r8c1<>8

THEOREM 2:

If a link with weak inference straddling 2 cells belongs to a continuous simple nice loop ,then the digit labeling it must be placed at one of the 2 cells; thus this digit can be eliminated from any other cells that lie in the same row, column or box housing the link.

For example, due to the continuous nice loop below, 7 in r4c1, 24 in r9c7 and 7 in r4c9 can be eliminated.

Nice loop notation (see explanation for nice loop notation below):

-[r1c7]-9-[r3c9]-1-[r3c3]-3-[r4c3]-7-[r4c5]-4-[r6c5]-7-[r6c7]-4-[r7c7]-2-[r1c7]-

implies r4c1<>7, r9c7<>2, r9c7<>4, and r4c9<>7

A discontinuous nice loop has link inferences that obey the set of propagation rules except at one of the nodes known as a discontinuity. This allows a candidate to be fixed or eliminated in the node as follows:

THEOREM 3:

At the discontinuity of a simple nice loop where 2 links with strong inference of same labels meet, the digit that labels the links can be fixed in the cell between the links.

THEOREM 4:

At the discontinuity of a simple nice loop where 2 links with weak inference of same labels meet, the digit that labels the links can be eliminated from the cell between the links.

THEOREM 5:

At the discontinuity of a simple nice loop where a link with strong inference and a link with weak inference meet, the digit that labels the broken line can be eliminated from the cell between the links.

For example, due to the discontinuous nice loop below, 8 in r9c6 can be fixed as per Theorem 3:

Nice loop notation (see explanation for nice loop notation below):

[r9c6]=8=[r9c7]=5=[r8c8]-5-[r3c8]=5=[r3c5]=8=[r3c2]-8-[r1c3]=8=[r8c3]-8-[r8c6]=8=[r9c6] => r9c6=8

For example, due to the discontinuous nice loop below, 1 in r7c2 can be eliminated as per Theorem 4:

Nice loop notation (see explanation for nice loop notation below):

[r7c2]-1-[r2c2]=1=[r2c7]=2=[r3c9]-2-[r3c6]-4-[r7c6]-1-[r7c2] => r7c2<>1

For example, due to the discontinuous nice loop below, 8 in r3c6 can be eliminated as per Theorem 5:

Nice loop notation (see explanation for nice loop notation below):

[r3c6]=6=[r3c5]=5=[r3c8]-5-[r8c8]=5=[r9c7]=8=[r9c6]-8-[r3c6] => r3c6<>8

Double implication chains identified via the b/b plot can be expressed in a nice loop notation format where the inferences and deduction(s) can be easily observed. In the notation, '=x=' represents a link with strong inference and '-x-' represents a link with weak inference, with label x:

Nice loop notation for continuous nice loops:

1) Strong Inference Loop (loop with pure strong inferences, eg. strong ring):

=[Node 1]=a=[Node 2]=b=[Node 3]=c=[Node 4]......[Node N]=n=[Node 1]=

2) Weak Inference Loop (loop with pure weak inferences, also known as xy-chain):

-[Node 1]-a-[Node 2]-b-[Node 3]-c-[Node 4]......[Node N]-n-[Node 1]-

3) Alternating Inference Loop (loop with alternate strong and weak inferences, also known as x-cycle, eg. x-wing):

=[Node 1]-x-[Node 2]=x=[Node 3]-x-[Node 4]=x=[............]-x-[Node N]=x=[Node 1]-

4) Mixed Inference Loop (loop consists of mixed inferences):

=[Node 1]-a-[Node 2]-b-[Node 3]=c=[Node 4]=d=[Node 5]......[Node N]=n=[Node 1]-

where: all inferences (including links a and n) obey the nice loop propagation rules and candidates are to be eliminated in accordance with Theorem 1 and 2.

Nice loop notation for discontinuous nice loops:

1) Strong Inference Loop (loop with pure strong inferences, eg. strong wing):

[Node 1]=a=[Node 2]=b=[Node 3]=c=[Node 4]......[Node N]=n=[Node 1] => Node 1=a, where a=n

2) Weak Inference Loop (loop with pure weak inferences, also known as xy-chain):

[Node 1]-a-[Node 2]-b-[Node 3]-c-[Node 4]......[Node N]-n-[Node 1] => Node 1<>a, where a=n

3) Alternating Inference Loop (loop with alternate strong and weak inferences, also known as x-cycle):

[Node 1]-x-[Node 2]=x=[Node 3]-x-[Node 4]=x=[Node 5]-x-[............]=x=[Node N]-x-[Node 1] => Node 1<>x

[Node 1]=x=[Node 2]-x-[Node 3]=x=[Node 4]-x-[Node 5]=x=[............]-x-[Node N]=x=[Node 1] => Node 1=x

4) Mixed Inference Loop (loop consists of mixed inferences):

[Node 1]=a=[Node 2]-b-[Node 3]=c=[Node 4]=d=[Node 5]......[Node N]=n=[Node 1] => Node 1=a, where a=n

[Node 1]-a-[Node 2]-b-[Node 3]=c=[Node 4]=d=[Node 5]......[Node N]-n-[Node 1] => Node 1<>a, where a=n

[Node 1]=a=[Node 2]-b-[Node 3]=c=[Node 4]=d=[Node 5]......[Node N]-n-[Node 1] => Node 1<>a, where a<>n

As an exercise, you may like to try out this technique on the following grid. Initially, 5 simple nice loops can be identified before this grid has to be updated. It would finally require between 9 to15 nice loops to solve this grid.