Some more thoughts about it. I looked at Daj's first chain eliminating 3 from r7c2=3:
[r7c2]=3 => [r7c8]=1 => [r7c9]=9
=> [r6c9]=1 => [r6c2]=2 => [r9c1]=2 => [r9c9]=5 => [r8c8]=3 => [r9]=INVALID
- Code: Select all
*-----------------------------------------------------------------------------*
| 356 4 1356 | 689 1569 1689 | 578 2 567 |
| 9 578 567 | 2468 2456 68 | 1 4568 3 |
| 56 18 2 | 3 14 7 | 9 48 56 |
|-------------------------+-------------------------+-------------------------|
| 23567 23579 3567 | 1 23689 4 | 23578 3568 2567 |
| 8 123579 13567 | 269 2369 369 | 2357 1356 4 |
| 2346 123 1346 | 7 2368 5 | 238 9 126 |
|-------------------------+-------------------------+-------------------------|
| 347 37 8 | 5 13479 2 | 6 13 19 |
| 1 2357 9 | 46 3467 36 | 2345 35 8 |
| 2345 6 345 | 489 1349 1389 | 2345 7 1259 |
*-----------------------------------------------------------------------------*
Added some omitted steps:
r7c2=3 (=> r6c2<>3, r9c3<>3) => r7c8=1 (=> r9c9<>1) => r7c9=9 (=> r9c9<>9) => r6c9=1 => r6c2=2 (=> r8c2<>2) => r9c1=2 (=>
r9c7<>2) => r9c9=5 => (
r9c7<>5, r8c8=3 =>
r9c7<>3) => r9c3=4 =>
r9c7<>4 => r9c7 is empty
This is definitely a proof, that all candidates in r9c7 force r7c2<>3, because "r7c2=3 => r9c7 is empty" is equivalent to "any candidate in r9c7 => r7c2<>3".
It also can be written as quadruple forcing chain without contradiction, where eventually "case distinctions" or nested forcing chains are needed, when the elimination chain uses multiple inferences.
This one is a bit shorter, starting with the candidates in r6c2:
r6c2=3 =>
r7c2<>3
r6c2=1 => r6c9<>1 => r79c9=1 => r6c8=3 =>
r7c2<>3r6c2=2 => r8c2<>2 => r9c1=2 => r8c7=2 (=> r9c9<>2) => r9c7=4 =>
(r9c3=35) {r9c3=3 =>
r7c2<>3} or {r9c3=5 => r79c9=19 => r6c8=3 =>
r7c2<>3}
Now i tried to write it as an AIC:
3[r6c2]=
{ (either r6c2=3 or r6c2=1 or r6c2 = 2)
1[r6c2]-[r6c9]=[r79c9]-[r7c8]=
3[r7c8]OR
2[r6c2]-[r8c2]=[r9c1]-[r9c79]=2[r8c7]-4[r8c7]=[r9c9]-[r9c3]=
{
(either r6c2=3 or r7c8=3 or r9c3=3 or r9c3=5 and r8c7=2 - also on the right side of = )
3[r9c3]OR
2[r8c7]&5[r9c3]-(2v5)[r9c9]=19[r79c9]-1[r7c8]=
3[r7c8]}
}
=> Either r6c2=3 or r7c8=3 or r9c3=3 => r7c2<>3.
So i see much equivalence between elimination chains, forcing nets and AIC's (or NL's). For me elimination chains are easier to find and easier to denote as forcing nets (just to read from left to right), but AIC's (and NL's) provide additional information, which is useful especially for closed chains.