The Cloth That Comes Off in Two Pieces

A weaving draft is a grid of over and under, and it looks as though any grid you like would make cloth. It would not. Some drafts weave two entirely separate fabrics, one lying on top of the other, touching nowhere, and the loom gives no sign: the shuttle goes through, the pattern appears, and the piece falls into halves when you cut it off. Weavers use this on purpose and call it double cloth. The test that tells the two cases apart is below, and you can operate it. Then the count, which nobody seems to have run: of the 65,536 four by four drafts, 22,730 are cloth. Of the rest, 144 pass the check this site itself was using, and still come off in two pieces.

4

Click a square to flip which thread goes over

The repeat

warp over weft over

The cloth, and what holds it

What falling apart means

Cloth is held together by nothing but the crossings. A warp thread that always passes over a given weft thread is never caught by it, and if that is true of every crossing between one set of threads and another, then the first set is simply lying on the second. Nothing is holding them. Lift, and they separate.

So write the draft as a grid, one row per pick of the weft, one column per warp end, and put a 1 where the warp passes over. The draft falls apart when you can split the threads into two non-empty groups, an upper and a lower, so that at every crossing between the groups the upper thread passes over. Call the upper warps A and the upper picks B, and the two lower sets C and E, and the condition is exactly two blocks of the grid being constant:

warps A (up)warps C (down)
picks B (up)anythingall 0
picks E (down)all 1anything
An upper weft must ride over every lower warp, which is the all-0 block. An upper warp must ride over every lower weft, which is the all-1 block. What the two groups do among themselves is free, and that freedom is why a double cloth can carry a different pattern on each face.

The instrument above searches every such split. It does not search all 2n × 2n of them, because once you choose the upper warps A each pick has its own answer independent of the others: it can go down if it runs under every warp of A, it can go up if it runs over every warp of C, and if it can do neither then A is ruled out. That drops the search to 2n and is what makes the census below possible at all.

How many drafts are cloth?

The obvious way to count is to walk all 2 grids, and it dies at n = 6, where there are 68,719,476,736 of them. The independence just described rescues it. Carry the set of candidate A that are still alive as you add picks one at a time; two grids with the same alive set have the same future, so they can be counted together. At n = 7 the number of distinct alive sets reached is 567,189, against 562,949,953,421,312 grids.

repeat ndrafts, 2are clothshare

The share climbs. At small repeats most grids are not cloth, and the crossover is between four and five: 34.7% of four by four drafts hang together, 52.3% of five by five, and 88.2% of eight by eight. That direction is the intuitive one once you see it, since a bigger repeat gives more opportunities for some crossing to spoil every possible split, and spoiling every split is all that hanging together means.

The last row is thinner evidence than the others and should be read that way. Everything up to n = 7 is produced twice over, and n = 5 is brute-forced outright. At n = 8 there are 18,446,744,073,709,551,616 drawdowns, so nothing walks them, and the count rests on a single run of the one method, forty-three minutes and 7,876,927 states. It is not left on that alone. Three million uniformly random eight by eight drawdowns, tested by the search rather than by the counting program, give a cloth proportion of 0.882029 with a two-sigma interval of 0.000372, against the 0.882054 the count implies, which is a deviation of 0.16 standard errors. And the count must not exceed A283624 at n = 8, because a constant row or column separates a fabric immediately: it does not, by 234,016,406,913,744. Two consistency checks are not a second enumeration, and this row is flagged rather than trusted equally.

The check we were using, and what it misses

This site already had a weaving layer, Two Threads That Never Disagree, which proves how many shafts a pattern needs and lets you drive a loom in both directions. Its engine carries a function called hangsTogether, and what that function actually tests is whether every thread is tied down at least once: no column and no row entirely constant. A thread that floats over the whole repeat is lying on the surface, so the test is a real and necessary one.

It is not sufficient, and the double cloth preset above is the reason. Every thread in it is tied down. It still comes off in two pieces.

What that cost, measured rather than estimated

Up to a three by three repeat the weaker test is exactly right: all 102 drafts it passes are cloth, and there is no counterexample to find. The first ones appear at four by four, and there are 144 of them. At five by five, 69,600; at six by six, 46,285,200. As a share of the drafts that pass, the error shrinks with n (0.63%, then 0.39%, then 0.099%) while the raw count grows.

The 144 have a closed form, and it is a pleasing one. Every single one is a double cloth of two two by two layers, and both layers are forced to be plain weave: pick 2 of the 4 warps for the upper layer (6 ways), 2 of the 4 picks (6 ways), then the only arrangement of the free upper block that ties its threads down is plain weave (2 ways, being the two phases), and the same below. 6 × 6 × 2 × 2 = 144. The smallest thing that can hide from the tied-down test is two tabbies stacked.

The part that should not be true, and is

Clapham's criterion, in the arithmetic form Rasmussen sets out, reads nothing about the drawdown except how many times each thread passes over. Sort the picks so their counts increase and the warps so theirs decrease, and the fabric falls apart exactly when some prefix of each meets a certain equation at zero. Where the crossings are does not enter it.

Which says something strange about cloth. Take any draft that holds, shuffle the ones around inside it however you like, and so long as every thread still goes over the same number of times as before, it still holds. Take one that separates, and no rearrangement that preserves those counts will save it. Whether cloth holds is a fact about the counts, not about the pattern.

That is a strong enough claim to be worth doubting, so it was tested rather than believed. Group every drawdown by its pick counts and warp counts and ask whether any group contains both a cloth and a separation: at 4×4 there are 221 such groups and not one is split, at 3×5 there are 152 and not one is split. A group that mixed the two answers would have killed it, and none does.

It also sharpens the 144. Among the 22,874 drawdowns with every thread tied down there is exactly one failing profile, four picks going over 1, 1, 3 and 3 times against four warps going over 3, 3, 1 and 1 times, and every drawdown with that profile falls apart. Three descriptions, one set: two stacked tabbies, 6 × 6 × 2 × 2, and a single arithmetic signature.

The check

Recomputed in your browser, now

running…

Everything on this page comes out of research/hang-together/, and none of it rests on a single implementation. The separation test is written twice here: once as a plainly correct search over all 2n × 2m splits of warps and picks, and once as the fast search over A alone that the page and the census use. They agree on every drawdown up to four by four across eight shapes, 74,386 in all. The census is then a third implementation, the alive-set count, and brute force reproduces it exactly at n = 5 over all 33,554,432 drafts: 17,564,070 cloth, 17,633,670 passing the weaker test, 69,600 in the gap between them.

Three checks we did not write

Three implementations agreeing is worth less than it looks when one directory wrote all three, so the test is also run against work that is not ours.

Clapham's criterion in arithmetic. Rasmussen states it as a function E(s,t) of the sorted pick and warp counts, never negative, and zero exactly when the fabric separates. It shares no code and no idea with our search, and it returns our answer on every drawdown up to four by four, 70,160 of them. Her paper also prints two 4×4 examples side by side, one that holds and one that does not, and says which is which and where the second one splits. Our search agrees with her on both, and finds the separation exactly where her text says it is, at the first two picks and the first two warps. Those two matrices are fixtures in the verifier.

Clapham's own procedure. His decision method is not a subset search at all. Rank the rows and the columns by how many warp-over cells they carry, sort by rank, and then look for an all-warp block and an all-weft block meeting at their corners. It sorts and scans where ours enumerates, so a shared bug is unlikely. Across every drawdown up to four by four, 70,160 grids, it returns our answer every time. Griswold adds that equal-ranked lines may be broken in any order, which is a claim and so was tested too: three different tie orders, all 65,536 four by four grids, no case where the order changed the verdict.

Clapham's theorem. A second paper of his gives a condition that never decides a fabric and only ever certifies one, quoted here as Griswold prints it: if every weft thread passes both over and under more than one quarter of the warp threads, and if every warp thread passes both over and under more than one quarter of the weft threads, then the fabric hangs together. That is an outside constraint our search must never violate. Over the 4×4, 5×5 and 4×6 drawdowns, 405,200 of them satisfy the condition and not one is called fallen-apart by us. The control can also fail in the other direction, which matters: it is strictly weaker, missing 17,179,990 genuine cloths at 5×5, and the five-end satin above is the example Griswold himself names.

That check can be pushed much further than enumerating drawdowns allows, because both halves of it turn out to be facts about the counts alone. The theorem's condition already is one, since a weft passing over more than a quarter of the warps and under more than a quarter is just its count sitting strictly inside a band, and by the paragraph above the verdict is one too. So sweeping degree profiles rather than drawdowns settles the theorem for every fabric of a given order, not only the small ones. 752,750 profiles satisfy the condition at orders 2 through 12, and not one of them falls apart. Profiles that no matrix could realise are left in the sweep on purpose: they only make it harder to pass.

A discrepancy in the source, left as we found it

Griswold prints a table of the over-and-under counts his quoted theorem requires. For 9 of its 13 rows the table asks for one more thread than the words do: at 5 threads the words give 2 and the table says 3, at 9 they give 3 and it says 4, at 13 they give 4 and it says 5. The table is ceil(n/4) + 1; the sentence is the least integer greater than n/4.

The profile sweep above resolves half of this and not the other half, and the two halves are worth keeping apart. It resolves the mathematics: the sentence is enough, at every order to 12, so the table asks for more than the theorem needs. It says nothing at all about the transcription, because we have not read Clapham 1985 and cannot know whether Griswold's sentence is Clapham's. So the page states the discrepancy and does not choose, and the control uses the sentence, being the weaker requirement and therefore the harder test to pass. (An aside that puzzled us until we did the arithmetic: the sweep is far smaller at orders 4, 8 and 12 than at 7 or 11, because when four divides the order the strict bounds exclude a whole value at each end.)

Where this sits in the record

The two questions the census answers turn out to have different histories. The weaker count, drawdowns with no constant row or column, is already published: it is OEIS A283624, with a closed form, and its terms are 1, 0, 2, 102, 22874, 17633670, 46959933962, which match the middle column of our gap table exactly at every n we computed. That is a useful thing to find, because it is an outside check on our enumeration that we did not have to arrange.

The hang-together count does not appear to be there. Searching the OEIS for the terms, and for the vocabulary (hangs together, falls apart, prefabric, isonemal, Clapham, Enns), returns nothing that counts it; the prefix 0, 2, 102 does return A283624, which is how you know the search reaches this neighbourhood, and the two sequences part company at n = 4, 22,730 against 22,874. The OEIS does hold the neighbouring weaving work, including A005441 for isonemal fabrics of period exactly n, but isonemal fabrics are those with a transitive symmetry group on the threads, a far smaller and differently-chosen family. A published enumeration of all n by n drawdowns that hang together is something we looked for and did not find, in the OEIS or outside it. That is a statement about our search.

The assumption that needed its own control

The draft is one repeat of an infinite fabric, so warp j and warp j + n are different threads that happen to cross identically. A split of the real fabric is a split of infinitely many threads and need not respect the repeat at all, while everything above searches only splits that do. That is a real gap in the argument, so it was tested rather than waved through: tile each draft into 2, 3 and 4 repeats, which lets threads of the same class land on opposite sides, and search again. Across every draft up to four by four the unrolled search found no separation the single repeat had missed, and lost none either. That is evidence at these sizes, not a proof at all sizes, and it is stated that way on purpose.

What this page does not claim

Sources