One techique for finding forcing chains is to identify a collection of nodes and edges that could be in a chain, then piece them together in a way that makes a useful deduction. This thread presents a method of labelling edges that helps to construct and recognize forcing chains, and discusses the common deductions.

In any forcing chain, two nodes A and B connected by an edge will share some common candidate (x, say). We will label the edge as "x", "-x", or "-x*", and give rules for when two labels from a node form part of a forcing chain. The form of label to use isn't uniquely determined by the edge, but depends on the larger context in which a forcing chain is being assembled. When the nodes share multiple common candidates, the candidate to use for labelling the edge also depends on the chain context.

Label "x" on an edge connecting nodes A and B represents the logical condition "A=x or B=x, but not both". Label "-x*" on the edge represents condition "A<>x or B<>x or both". Label "-x" represents condition "A<>x or B<>x, but not both".

Consider two edges, from nodes A to B and nodes B to C.

There are just 3 cases where edges entering and leaving B propagate a forcing chain implication. We write A=xy* to mean node A definitely has candidates x and y, and optionally has other candidates *.

Case 1: A=x*, B=xy, C=y*, AB label = -x*, BC label = -y*. This 2 edge chain guarantees condition "A<>x or C <>y or both". There are implications in both directions:

A=x -> B<>x -> B=y -> C<>y

and

C=y -> B<>y -> B=x -> A<>x.

Both implications are captured by condition "A<>x or C <>y or both".

Case 2: A=x*, B=xy*, C=y*, AB label = x, BC label = y (two strong edges). This chain guarantees condition "A=x or C=y or both", which also captures implications in both directions.

Case 3: A=x*, B=x*, C=x*, AB label = x, BC label = -x*. This chain guarantees condition "A=x or C<>x or both"

In all cases above, the * is optional in both nodes and edges. An edge A-B labelled -x* is a possibly weak edge -- i.e., the unit (row/column/box) containing A and B might have other nodes with candidate x. If there are no other x candidates in A-B's unit we can change weak edge labelled -x* to strong edge labelled -x. All deductions that work for -x* edges work just as well for -x edges.

If we extend Case 1 using only nodes with 2 candidates each, we get xy-chains. tso gave some excellent examples of how to find xy-chains here, and I first described (in this forum) an edge labelling idea for tracking which edges form a useful chain.

xy-chains (Case 1) are composed of weak edges and strong (doubleton) nodes. Case 2 is a sort of dual to case 1. If we extend case 2 we get chains where all the edges are strong, the nodes can be weak (have 3 or more candidates), and adjacent edges use different numbers.

Case 3 includes color chains, where all edges use the same number and weak negative edges are allowed. If we restrict case 3 to only strong negative edges we get simple coloring.

For any chain connecting nodes A-B- ... - Y-Z, if initial edge label is x, final edge label is y, and all interior node labels match one of the 3 cases above, then we have two implications "A<>x -> Z=y" and "Z<>y -> A=x", and both implications are captured by "A=x or Z=y or both".

There are two types of deductions commonly drawn from forcing chains. The first deduction requires a forcing chain that starts and ends with the same node A, and has the same initial and final label. If the label is x we can deduce A=x (this follows from the forcing chain constraint A=x or Z=x, where Z=A in this case). If the label is -x* (or -x) we can deduce A<>x from "A<>x or Z<>x with Z=a". Although this path might look like a loop, no implications cross node A, they just start and end at node A. So I consider this case a forcing chain whose end nodes happen to be the same node. This has been called a "double implication chain" if the implication is started in the middle of the chain and propagated both directions to the chain ends.

The second type of deduction requires a full closed loop of nodes and edges where all edge labels are from the above 3 cases. Such a loop contains many forcing chains, including chains that start and end at one node or that omit just one edge of the loop. These implications let us deduce that all weak edges in the loop must actually be strong edges in a sudoku solution, so we can eliminate extra candidates from units containing a weak edge in a closed forcing loop. X-wing is one example of this deduction using color chains (case 3 edge combinations). Naked pairs and xy-chain triples are this deduction using case 1 edge combinations. We can also eliminate extra candidates from connecting node B in case 2 edge combinations, since the forcing chain starting and ending at node B enforces "B=x or B=y". Hidden pairs is an example fo this deduction for case 2 edge combinations.

This message has gotten long and the hour is late, so I'll stop for now. I hope this edge labelling idea helps gel the various forcing chain notions for you. For me, it's a very useful bookkeeping technique for locally showing the relations forcing chains force, and combining this information in a standard format for every forcing chain (start node relation 1 or end node relation 2 or both).