Tabling has been described

here.

It is a further generalization of simple forcing chains, more powerful because it can concatenate them.

E.g. a multiple forcing chain applied to this puzzle would be:

- Code: Select all
`r6c2=1 => r1c2<>1 => r1c2=2 => r3c3<>2`

r6c2=2 => r7c2<>2 => r7c3=2 => r3c3<>2

r6c2=9 => r3c2<>9 => r3c3=9 => r3c3<>2

From any possible starting point you can get to the same conclusion, so the conclusion must be true. However, to reach that conclusion, simple forcing chains are used--a succession of strong and weak links where each statement is implied by the one preceding it.

Tabling can draw more conclusions from forcing chains.

For example, let's say that r1c1 can be 1, 2, 3 or 4.

If r1c1=1 or 2, then r2c2=4.

However, if r1c1=3, we don't know what r2c2 will be.

Now let's say that r4c4 can be either 7 or 8.

If r4c4=7, then r1c1<>3.

If r4c4=8, then r2c4=4.

Simple forcing chains will not be able to do anything with the above data, because .

Tabling, however, will. It will conclude that r2c4=4 no matter what you put in r4c4.

At least, that's my understanding, since the details of the algorithm haven't been published yet.