Hi
Robert,
Mauriès Robert wrote:For me AICs are simply the expression in coded language of a string of candidates that one composes by following links. Usually they are chains of contradictions which thus allow one or more eliminations.
I wouldn't call them "chains of contradictions" (unless written as such, i.e. by having a weak link at the start or end or both). A real contradiction chain starts with an assumption and proves it false by encountering a contradiction. The slanderer's original chain is a contradiction chain but neither
eleven's AIC nor your anti-track is one.
Idiomatically written AICs (with a strong link at both ends) are verity chains, and so are anti-tracks,
Denis Berthier's bivalue-chains, and matrices. All or them describe verities (truths) instead of contradictions (falsehoods), which makes them
persistent patterns (I just invented that term) in the sense that they can exist and be recognizable in a grid even if they have nothing to eliminate. If eliminations are available, they're external to the chain (except in the rare case of cannibalistic chains), and thus the pattern itself remains even after the eliminations (though having lost its potency). That's not the case with a contradiction chain (or net) which always starts with the to-be-eliminated assumption and ends with a contradiction (if written as an implication chain; as an AIC it could be either way since it's bidirectional or more accurately non-directional). Once you execute the elimination, the contradiction pattern is also destroyed, thus it's not persistent.
But their correct writing is not always easy, and I have seen very often discussions on this subject on this forum.
In my opinion it is easier to build and express chains by simple implication (->) which is a universal language known to all.
It's true that implication chains are probably the most intuitively understandable and easily written expressions of sudoku logic. Yet they're not perfect, as they typically contain less information (only half of the nodes shown compared to AICs) which makes them harder to follow. Of course they can include all the same information, but that's not the idiomatic way to write them, and it would make them much longer than the corresponding AICs. AICs are thus more space-efficient expressions, and can often be compressed even more if need be (though probably sacrificing readability).
Also, pure implication chains are the easiest to understand if used as contradiction chains. To make them intuitively understandable verity chains, one has to include an extra OR condition (implied in your anti-tracks) which means they're no longer pure implication chains. AICs and Denis' biv-chains don't need such kludges, and neither do matrices, as they prove verities natively.
Of course one can also write pure implication chains that prove verities, but they're less intuitive. For that you have to start with a negation -a -> b, which is equivalent to -b -> a. To understand it as a verity one must mentally convert it into (a | b), which eliminates anything that sees both a and b, just like an AIC. Technically you could replace your anti-track syntax by simply writing the implication chains like that -- no information would be lost.
Here's how I eliminate 9r2c6 with an anti-track:
P'(9r2c8): (-9r2c8) => 1r2c8->1r6c6->7r2c6 => -9r2c6 since 9r2c6 sees both 7r2c6 and 9r2c8
(A typo corrected.) The same as a pure implication chain (i.e. what I said above):
-9r2c8 -> 1r2c8 -> 1r6c6 -> 7r2c6 => -9r2c6
or equivalently:
-7r2c6 -> 7r6c6 -> 1r6c8 -> 9r2c8 => -9r2c6
Either of those proves the verity (7r2c6 OR 9r2c8) and hence the elimination. Thus no real need for the P' syntax if one wants to be a purist and keep the notation as simple and standard as possible. Here's the same as a contradiction chain:
9r2c6 -> 1r2c8 -> 1r6c6 -> 7r2c6 (contradiction) => -9r2c6
This (anti-track) chain, like Eleven's AIC, is here very visibly a chain of contradiction
Like I said, it's not a chain of contradiction the way we normally use that term. It's a verity chain like AICs and Denis' biv-chains, because it doesn't start with an assumption and the elimination is external to it. Rather it proves that either 9r2c8 OR 7r2c6 must be true (verity), hence 9r2c6 can't be true (verity). There's no contradiction within the chain itself, and not explicitly even with the elimination, thus not a contradiction chain. A contradiction chain would start by assuming 9r2c6 and running into a contradiction (an example above), like the original solution. Another difference is that a verity chain can prove multiple eliminations simultaneously (not in this case, though), while a contradiction chain can only prove one (the original assumption). Btw, since I know you use both kinds, what do you call the actual contradiction chains to differentiate them?
Btw, here's how I think it would be written using Denis' system (hope he corrects me if I got something wrong):
- Code: Select all
biv-chain[3]: r2c8{n9 n1} - r6n1{c8 c6} - c6n7{r6 r2} ==> r2c6 ≠ 9; stte
And here's the matrix form, which I think is the most informative and language-agnostic way to express almost any kind of sudoku logic:
- Code: Select all
9r2c8 1r2c8
1r6c8 1r6c6
7r2c6 7r6c6
------------------
-9r2c6
Matrices are also excellent for analyzing and comparing the complexities of different pieces of logic relatively objectively.
--
Edit: typo corrected.