What can move

The count was right and the name was wrong

The constraint field has checked Grübler's count against a Jacobian rank since the foundation, and the two disagree only where the geometry is special. Here is an assembly where they agree, where both are correct, and where the mechanism does not have the number of links it is described as having.

Assumes Counting and measuring mobility and The mechanism Grübler says cannot move.

The constraint field’s foundational move is that a count and a rank are two routes to one number, computed from disjoint inputs. Grübler’s rule reads two integers; the rank of the constraint Jacobian reads a matrix of positions. When they agree, the agreement means something.

The failure the field is built around is a mechanism the count says cannot move: three parallel bars, five links, six pins, a count of nought and a working linkage. It happens because the lengths are special, it is caught by the rank immediately, and it is the reason the site computes both.

Three parallel bars, and a formula that says this cannot moveFive links and six pin joints, so Grübler's criterion gives 3(5−1) − 2(6) = 0 and calls it a structure. The Jacobian has rank 5 against 6 free coordinates, so it measures one degree of freedom — and the sweep assembles 59 of 60 positions, which settles the matter. The third bar removes no freedom because its constraint is already implied by the other two, and a formula that counts joints cannot notice that they happen to be parallel. Mechanisms of exactly this kind carry drafting machines, anglepoise lamps and locomotive coupling rods, where the redundant bar is there for load sharing and for keeping the linkage out of its change point.the redundant oneGrübler: 3(5−1) − 2(6) = 0Jacobian: 6 − rank 5 = 1
Fig. 1 The known failure. Special lengths, a count of nought, a mechanism that moves through fifty-nine of sixty sampled positions, and a rank that catches it at once.

There is a second failure. It happens at generic dimensions, it cannot be repaired by moving anything, and the rank does not catch it.

An assembly where both routes agree and both are wrong about the description

Take six links and seven pins — the arrangement Watt and Stephenson both have — but with three of the links forming a triangle.

3 of these 6 links never move relative to one another. A graph that passes every arithmetic test and is not a mechanism of 6 links. The shaded links are a subchain that is already a structure: 3 links held by 3 pins, whose own count is 3 × 2 − 2 × 3 = 0. Grübler cannot see it, because the formula reads two totals for the whole graph and this is a statement about a subset. Neither can the rank. A rigid triangle removes exactly the freedoms the count says it does, so the constraint Jacobian is not deficient, the measured mobility is 1, and the two routes this site checks everything with agree — with each other and with the wrong answer. The assembly moves, and it moves as a mechanism with 4 links, one of which happens to be welded out of 3 pieces.
Fig. 2 Six links, seven pins, one degree of freedom by the count. Three of the links are shaded and they never move relative to one another.

Grübler’s rule says 3×52×7=13 \times 5 - 2 \times 7 = 1. The rank of the constraint Jacobian at a generic placement says the mobility is one. Assemble it and drive it and it moves with one input, exactly as advertised.

And it is not a six-link mechanism. Three of its links are pinned into a triangle, a triangle does not bend, and those three move as one part. It is a four-link mechanism in which one of the links happens to be welded out of three pieces.

Five graphs pass the count at six links and two are mechanisms. The whole six-link census, chains and rejects together. The two on the left are Watt's chain and Stephenson's. The three on the right satisfy Grübler's rule exactly — six links, seven pins, one degree of freedom — and every one of them contains a triangle, shaded, so every one of them is a five-link mechanism with a welded three-piece link. The gap between five and two is the smallest instance of the gap between 1,878 and 230, and it is small enough to check with a finger.
Fig. 3 The whole six-link census. The two on the left are mechanisms of six links; the three on the right are five-link mechanisms with a triangle in them.

Nothing is wrong with either number. What is wrong is the sentence this is a six-link mechanism of one degree of freedom, and neither instrument the field has can tell that it is wrong.

Why the rank is silent

The instinct that the rank must see something is strong, so it is worth going through the arithmetic.

Three planar bodies carry nine coordinates. Three pins impose six equations, which is what the joint table says a pin is worth. At a generic placement those six are independent, so the rank is six and three coordinates remain — which are the position and orientation of the triangle as a whole, exactly the freedoms one rigid body has.

The triangle therefore removes precisely the freedoms the count says it removes. Nothing is redundant, so the Jacobian is not deficient. Nothing is missing, so the mobility is not too small. There is no rank defect for a rank test to find.

That is the difference between this and the parallel-bar case. There, three bars between two links impose more conditions than they need to and one of them repeats another, so the rank drops and the mobility measured is larger than the count. Here nothing repeats.

The kind that the rank does see

To be fair to the rank, there is a second family of these and it does catch that one.

If a subchain’s count is not nought but below nought — four links held by six pins, counting 3×32×6=33 \times 3 - 2 \times 6 = -3 — then the surplus pins do repeat conditions, the Jacobian loses rank, and the measured mobility comes out above what the count says.

The rank tracks the sign of the worst subchain, and nothing else. Every graph in the 8-link census, grouped by two numbers: how far below nought its worst proper subchain counts, and what the rank of its constraint Jacobian says its mobility is. There are three cases and no others. Graphs with no rigid subchain measure one, which is what the count says. Graphs whose worst subchain counts to exactly nought also measure one — the rank cannot see them, because a rigid triangle removes precisely the freedoms the count says it does. Graphs whose worst subchain counts below nought measure 2: those pins repeat a condition already imposed, the Jacobian loses rank, and the mobility comes out above the count. The correspondence is exact in both directions and has no exceptions, which is why this is a table of three rows rather than a cloud of points.
Fig. 4 Every graph in the eight-link census, grouped by how far below nought its worst subchain counts and by what the rank measures. Three cases and no others.

The correspondence across the eight-link census is total: all 46 graphs whose worst subchain sits at exactly nought measure mobility 1, and all 9 whose worst subchain sits at 1-1 measure 2. So the rank is a perfect detector of over-constraint and a perfectly blind one for rigidity, and the boundary between them is the boundary between a pin that repeats something and a pin that does its job.

What each instrument returns, on each kind of graph. The 8-link census, three rows, and the same three questions asked of every graph in it. Grübler returns 1 in every row — it has to, because that is what the census selected on. The rank returns 1 in the first two rows and 2 in the third. Only the third column changes across all three rows, and it is the one this site did not have before this field: a mobility computed for every subset of the links rather than for the whole. Read down the middle two columns and the site's standing pair of routes is unanimous about 62 graphs, of which only 16 are what it says they are.
Fig. 5 The three kinds of graph and what each instrument returns. Grübler returns one in every row and the rank returns one in two of the three.

Why this could not have been found from inside the field

There is a reason this failure took twenty-one fields to appear, and it is not that anybody was careless.

Every mechanism this site has ever analysed arrived as a declared topology. A four-bar is declared to have four links; a Gough platform is declared to have its six legs; a scissor chain is declared unit by unit. That is an invariant here — the topology is declared, never inferred — and the reason is a good one: what counts as one link is a modelling decision, and inferring it from geometry once gave a slider-crank minus two degrees of freedom.

A declared topology comes from a mechanism somebody built, and a mechanism somebody built does not have a hidden triangle in it. So the count was never handed a graph that was not already known to be a mechanism, and a rule that is wrong only on graphs it is never given is a rule that never fails.

One, two, sixteen, two hundred and thirty. Every planar chain of mobility one, up to ten links, counted by enumeration rather than quoted. The pins column is forced: a chain of 10 links has one degree of freedom only if it has exactly (3n − 4)/2 pins, which is why no odd link count appears. Pass the count is how many graphs satisfy Grübler's rule, are connected, are simple and give every link at least two pins. Are chains is how many of those survive the fourth condition, that no proper subchain is already a structure — and the gap between the two columns is the whole of this field's first argument: at ten links 1,878 graphs pass a rule that 230 of them deserve. Mechanisms is larger again, because a chain is not a mechanism until a link is held still, and how many different mechanisms that gives is a question about the chain's own symmetry.
Fig. 6 What changes when the graph is the unknown: the count is asked about 1,878 graphs rather than about one, and 1,648 of them are cases it was never tested on.

The topology field inverts that. It generates graphs and asks which are mechanisms, so the count is applied to every candidate rather than to a known answer — and that is the only circumstance under which its second failure is visible at all.

That is a general observation about how a rule gets tested. A necessary condition applied only to things already known to satisfy the sufficient one will never be observed to fail. It is the same shape as the conjugate-action test that parameterised both flanks by the same roll angle and passed on every flank it was given, and the same shape as a spectral isomorphism test that is exact on every census small enough to check by hand.

How much of it there is

This would be a curiosity if the affected graphs were rare. They are the majority.

Of the 1,878 ten-link graphs satisfying Grübler’s rule, 1,648 contain a structure — 1,165 of them a merely rigid one that both routes are silent about, and 483 an over-constrained one the rank catches. Only 230 are what the count says they are.

Three verdicts, and only one instrument can give all three. Every 10-link graph that satisfies Grübler's count, split by what is actually true of it. 230 are mechanisms with 10 links. 1,165 carry a subchain whose own count is exactly nought — and neither of the two standing routes can see them: the count returns one and the rank returns one, and both are right, because a rigid subchain removes exactly the freedoms it is supposed to. What is false is the description. 483 carry a subchain whose count is below nought, and those the rank does catch: the surplus pins repeat a constraint already imposed, the Jacobian loses rank, and the measured mobility comes out above the count. The third instrument — a count run over every subset of the links — is the only one that answers the question at all.
Fig. 7 The census split by what is actually true of each graph. The middle bar is where both of the field’s routes agree with each other and with the wrong description.

At eight links it is 16 of 71, at six links 2 of 5. The ratio does not improve with size — it worsens, roughly doubling at every step: 1.00 graphs admitted per mechanism at four links, 2.50 at six, 4.44 at eight and 8.17 at ten.

The third instrument

What answers the question is a count of mobility run over every subset of the links, rather than over the whole. For a ten-link graph that is 1,024 small pieces of arithmetic, a few microseconds, and exhaustive — there is nothing to tune and no tolerance to choose.

It has a property neither of the other two has: it says where the problem is. A rank returns a number. The subset scan returns a set of links, which can be shaded in a picture and pointed at.

Two honest limits. It is exponential in the link count, so it is comfortable to ten links and would not be at twelve. And it is a scan over counts, so it inherits the count’s own blind spot — a subchain whose count is one but whose particular lengths make it rigid, which is the parallel-bar case, is not caught here either.

The three instruments do not nest. Each sees something the other two do not, which is an unusual and useful arrangement: the count is blind to structure and to special geometry, the rank sees special geometry and over-constraint, and the subset scan sees structure and over-constraint and not special geometry.

What to do about it in practice

The instrument is cheap enough to run always, and the practical form of it is three lines.

For every subset SS of the links with three or more members and fewer than all of them, count the pins whose both ends are in SS, and evaluate 3(S1)2pS3(|S|-1) - 2 p_S. If any subset comes out at nought or below, the assembly is not a mechanism of the declared link count, and the offending subset is the answer.

On a mechanism a person has drawn, the scan will almost always return nothing, and that is the point of running it: a check that never fires on correct input is exactly the check worth having, provided it has been shown to fire on incorrect input. That refusal is asserted here rather than assumed — a ten-link graph is built deliberately with a triangle in it, and the scan is required both to reject it and to name the triangle as what it found.

The one case worth watching for by eye is the one the scan handles and a person does not. A triangle is visible; 1,501 of the 1,648 rejected ten-link graphs contain one, so the eye is usually enough. A five-link structure means checking 252 subsets, and a seven-link structure inside a ten-link graph means checking 120 subsets in which the remaining three links are what a reader would naturally call the mechanism. Those two cases are 147 of the 1,648, and no amount of looking finds them reliably.

Most of what the count lets through is a triangle. The 1,648 10-link graphs that pass the count and are not chains, by the size of the smallest structure inside them. 1,501 of them — 91 per cent — contain a triangle: three links joined by three pins, the smallest rigid thing there is, whose own count is 3 × 2 − 2 × 3 = 0. The rest hide a five- or seven-link structure, which is the case worth remembering, because a triangle is visible in a drawing and a seven-link structure inside a ten-link graph is not. Only the sizes 3, 5, 7 appear, and every one of them is odd — a rigid planar subchain needs 3(k − 1)/2 pins, so an even number of links cannot make one.
Fig. 8 The distribution of the smallest structure’s size. Every size is odd — a rigid planar subchain of k links needs 3(k−1)/2 pins — and 9 per cent of them are invisible to inspection.

What the scan costs, and when it stops being cheap

The subset scan is described above as cheap enough to run always, and that is true at every size this field enumerates and false not far beyond it. The arithmetic is worth doing, because it decides whether the third instrument is a permanent addition or a temporary one.

The scan visits every subset of the links, so it is exponential in the link count by construction: 1,024 subsets at ten links, a million at twenty, a billion at thirty. Each visit is a count of pins and a comparison, so the constant is tiny and the exponent is the whole story. Ten links is instant, twenty is a second or so, and thirty is out of reach for something meant to run on every mechanism before it is drawn.

Thirty links is not an absurd mechanism. A walking linkage, a loom’s shedding mechanism, a folding structure of the kind the site’s own scissor arrangements are built from — these run to dozens of links, and they are exactly the mechanisms a person is most likely to describe by a graph rather than by a picture, which is the case the scan exists for. So the instrument as written is complete on the sizes where the failure is least likely and unavailable on the sizes where it is most.

The good news is that the condition being scanned for is not a new kind of question. Every subset spans no more than its share of pins is a sparsity condition, and conditions of that family are the standard characterisation of rigidity in planar frameworks — where the definition is likewise a statement about all subsets and the algorithm that decides it is emphatically not. The known algorithms are combinatorial, run in low polynomial time, and work by trying to distribute a fixed budget of freedoms over the graph and reporting where the distribution fails; the failure location is the offending subset, which is the property this essay wants from the scan and does not want to lose.

Nothing of that kind is implemented here, and the honest statement of where this rung stands is that the third instrument is correct, complete and exponential, and that the polynomial version is known to exist in a neighbouring subject and has not been brought across. That is a shortfall of the ordinary kind rather than a limit: the scan is right about everything it is run on, and what it cannot do is be run on everything.

There is one mitigation that costs nothing and is worth stating, because it changes the practical picture more than the complexity does. The scan does not have to visit subsets in an arbitrary order. A structure has to be connected — a disconnected subset’s count is the sum of its parts’ counts and cannot be more negative than the worst of them — so only connected subsets need visiting, and connected subsets can be grown outward from each link rather than enumerated as bit patterns. On the sparse graphs a mechanism actually is, where every link carries two or three pins, that is a very much smaller set than 2n2^n and it is the version worth writing when the sizes demand it.

Which leaves the recommendation where the essay left it, with one qualification attached. Run the scan on everything, because on the sizes this field enumerates it is free and it is the only instrument that answers the question. And treat the exponential as a fact about this implementation rather than about the problem, because the same condition is decided in polynomial time elsewhere and a mechanism of thirty links is not an exotic object.

The three instruments do not nest

It is worth setting the three side by side, because the arrangement is unusual and each one is complete about something.

The count reads two integers. It is blind to structure and blind to special geometry, and it is the only one that costs nothing.

The rank reads a matrix of positions at a generic placement. It sees over-constraint — constraints that repeat — and it sees special geometry when the placement is the special one. It is blind to rigidity, exactly and provably, because a rigid subchain is not a rank defect.

The subset scan reads the graph. It sees rigidity and over-constraint, both, and it is blind to special geometry, because it is a scan over counts and a count cannot know that three bars are parallel.

So there is no ordering among them and no one of them subsumes another. The right arrangement is all three, in increasing order of cost, with the understanding that agreement between any two is evidence about a quantity rather than about a mechanism.

What it changes about how this field reads

Three things, and the third is the general one.

The count’s failures are of two kinds and only one was known here, and the second is the whole of what a count cannot see. The first is geometric, direction too few, repaired by moving a length, caught by the rank. The second is combinatorial, direction too many, unrepairable by any dimension, and invisible to both routes.

Every mechanism this site has drawn is fine, and it is worth saying so. The chains here were declared by hand from known mechanisms, and a known mechanism does not have a hidden triangle. What the field lacked was a way to check — and a check nobody could run is exactly the situation where an error would have gone unnoticed had one been made.

And two routes agreeing is evidence about the quantity they both compute. Both of these compute the mobility of the whole assembly. Both are right about it. The question actually being asked — is this a mechanism with this many links — is a different question, and no amount of agreement between two answers to a different question bears on it.

That is not an argument against the habit. It is the boundary of it, and the useful discipline is to ask what quantity a pair of routes agrees about, and whether it is the quantity in the claim.

The name, and why it is the right thing to correct

A last word about vocabulary, because the literature’s name for these graphs is unhelpful.

They are called degenerate chains, which suggests something broken. Nothing here is broken. The assembly moves, it moves smoothly, it has exactly one degree of freedom, and it would be a perfectly serviceable mechanism if anybody built one. A designer who welded three links into a triangle by accident would notice nothing wrong with the machine — only with the parts list.

What is wrong is a description, and the correction is a rename rather than a repair. The graph is a mechanism of fewer links, one of which is made of several pieces. Said that way the condition stops sounding like a pathology and starts sounding like what it is: a modelling error of exactly the kind the site’s declared-topology invariant exists to prevent, arriving from the one direction that invariant does not cover. A declaration cannot be checked against itself, and until this field there was nothing else to check it against.

About the same objects

Not linked from either essay — found by the objects both name.

What links here

Essays that link to this one from their own argument.

The objects this essay names

Each one links to every other essay that touches it.

ConstraintDegenerate chainDegrees of freedomGrübler's criterionKinematic chainMobilityOverconstraintRankRedundant constraintStructure