The count was right and the name was wrong
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.
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.
Grübler’s rule says . 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.
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 — then the surplus pins do repeat conditions, the Jacobian loses rank, and the measured mobility comes out above what the count says.
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 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.
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.
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.
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 of the links with three or more members and fewer than all of them, count the pins whose both ends are in , and evaluate . 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.
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 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.
- A roller is not a slider constraint · degrees of freedom · grübler's criterion · mobility · overconstraint · rank
- A constraint that has been said already grübler's criterion · mobility · overconstraint · rank · redundant constraint
- Bennett, and the condition that moves it constraint · mobility · overconstraint · rank · redundant constraint
- Nine bars that ought to be rigid degrees of freedom · grübler's criterion · mobility · overconstraint · redundant constraint
- One freedom and four hundred links degrees of freedom · grübler's criterion · mobility · overconstraint · redundant constraint
- Six freedoms, not three constraint · degrees of freedom · mobility · overconstraint · rank
What links here
Essays that link to this one from their own argument.
- The right angle as a tolerance What can move
- Two to the power of the dyads How many answers
The objects this essay names
Each one links to every other essay that touches it.
ConstraintDegenerate chainDegrees of freedomGrübler's criterionKinematic chainMobilityOverconstraintRankRedundant constraintStructure