Many of one thing

A constraint that has been said already

Every constraint matrix leaves two null spaces, and a mechanism only lives in one of them. The other is the set of combinations of constraints that come to nothing — and its dimension is exactly the amount by which the count is wrong, on a deployable ring, a Miura sheet and a framework with twelve bars and six joints.

Assumes Many loops, one freedom and The loops are in the graph.

A constraint matrix has two null spaces and a mechanism only lives in one of them.

The one everybody uses is the ordinary null space: the vectors uu with Ju=0Ju = 0, which are the velocities the constraints permit. Its dimension is the mobility, and every essay on this site until now has been about it — right back to the first mobility count.

The other is the left null space: the vectors ω\omega with ωTJ=0\omega^{T}J = 0. Each of those is a combination of the constraint rows that comes to nothing — not at one configuration, but identically, as an algebraic fact about the matrix. It says that one of the constraints has been said already, in pieces, by the others.

On a four-bar that space is empty and there is nothing to talk about. On a network it is not, and its dimension is precisely the amount by which the count is wrong.

Both at once, exactly

Write mm for the mobility and ss for the number of independent dependencies. Both are non-negative. The rank rr is a number no larger than the row count or the column count, and

m=(unknowns)r,s=(constraints)r.m = (\text{unknowns}) - r, \qquad s = (\text{constraints}) - r.

Subtracting kills the rank:

ms=(unknowns)(constraints).m - s = (\text{unknowns}) - (\text{constraints}).

The right-hand side is the count — Grübler’s 3(n1)2j3(n-1) - 2j, or Maxwell’s dimvb\mathrm{dim}\cdot v - b less the rigid motions, or a fold pattern’s creases less three times its interior vertices. It contains no geometry at all.

What the count is right about. Freedoms minus dependencies, against what the count predicts, on seven assemblies from three different representations. The difference is exact every time and it is exact for a reason that has nothing to do with mechanisms: the count is unknowns minus constraints, the rank is a number no larger than either, and the two nullities are what each of them has left over. So a count is not wrong in the way a mismeasurement is wrong. It is a statement about a difference being read as a statement about one of the terms — and on four of these seven rows both terms are large and the difference is nearly meaningless.
Fig. 1 Freedoms minus dependencies against the count, on seven assemblies from three representations. Exact on every row, and exact for a reason that has nothing to do with mechanisms.

So a count is not wrong the way a mismeasurement is wrong. It is a statement about a difference being read as a statement about one of the terms, and the reading is safe exactly when ss is nought. That is why it works on a four-bar, on a slider-crank, on a Gough platform and on a lazy tong at any size, and why it fails on everything this field is about.

What a dependency looks like

The smallest example takes two bars.

Pin two points a unit apart on either side of a third, with all three in line, and join the middle one to each of the others. Two bars, two coordinates, and both rows of the rigidity matrix point along the same line — so the rank is 1, the mobility is 1 and there is one dependency.

The smallest mechanism that is not oneTwo bars from a free joint to two pinned ones, with the three points in line. The constraint matrix has two rows and two columns, both rows are horizontal, and its rank is 1: one freedom left over, pointing straight up, and one dependency among the two bars. Move the joint up and neither bar changes length **to first order**, which is what the freedom says. To second order both bars get longer, by the same amount and in the same direction, and there is nothing to trade off against — which is what the dependency says. The obstruction is the dependency applied to the second-order stretch and comes to 1.414214; anything but nought there and the freedom is not the beginning of a motion. Lifted by 0.00 the bars are 0.00000 longer, which is the whole argument drawn to scale.the whole travelrank 1 · one freedom · one dependencyobstruction 1.4142
Fig. 2 Two bars from a free joint to two pinned ones, in line. Both constraint rows are horizontal; there is one freedom and one dependency.

The dependency is the vector (1,1)/2(1, 1)/\sqrt{2}: adding the two bars’ rows gives nothing. In words, the two bars say the same thing about horizontal motion, so one of them is not adding a condition that the other has not already imposed.

That is the entire content of a dependency and it is worth having in this bare form, because the same object on a Miura sheet is a hundred-dimensional subspace of R363\mathbb{R}^{363} and there is no drawing of it.

Where they come from in a network

In a network the dependencies are not accidents of a degenerate drawing. They are what the assembly was built out of.

The deployable ring is the sharpest case. Eight pairs of angulated elements, sixteen bodies, twenty-four pins: forty-eight constraints on forty-eight coordinates, and Grübler’s count of nought. The rank is 44. There are four dependencies and four freedoms, three of which are the rigid motions of the whole ring and the fourth of which is the deployment.

The ring a count says cannot move8 pairs of angulated elements, each pair two mirror-image bent bars pinned at their kinks, with each pair joined to the next at two pins on a common radius. 16 bodies and 24 pins give Grübler's 3(n − 1) − 2j = 0: no freedom at all, a structure. The rank of the constraint Jacobian is 44 of 48, which leaves 4 — the three rigid motions of the whole ring and **one deployment** — and 4 constraints that repeat what the others have already said. The kink angle is not a style: it is 135.0000°, a half turn less the 45.0000° the ring subtends per pair, and any other value gives a ring that will not deploy. Inner radius 0.6876, outer 2.2688. positioned by solving, not by drawing.one paircount 0 · measured 4 · 4 redundantkink 135.00° = 180° − 45.00°
Fig. 3 The ring the count calls a structure. Four of its forty-eight constraints repeat what the others have said, and the mechanism has a deployment because of it.

Change the elements’ kink angle by a degree and the dependencies vanish: the count becomes right, the mechanism becomes a structure, and — more to the point — it cannot be assembled at the drawn radius at all. The dependencies are the design.

The Miura sheet is the same statement at a larger scale. Its dependencies number (n2)2(n-2)^2: one at three panels a side, four at four, sixteen at six, a hundred at twelve.

And the Bricard octahedron has exactly one, which is what makes it interesting: a framework the count calls isostatic, with nothing spare anywhere, which has one dependency and therefore one freedom left over.

Reading the ring’s four

The ring’s dependencies can be located, in the weak sense that the reason for them can be said, and it is worth doing because it makes the design argument concrete.

An angulated pair joins its two neighbours along two connection lines, and the theorem the ring is built on is that the angle between those lines is the element’s own kink, at every opening. In a ring with nn-fold symmetry the connection lines are radii, so consecutive pairs must be separated by 2π/n2\pi/n, and the kink is chosen to be π2π/n\pi - 2\pi/n — 135° for eight pairs, 150° for twelve.

Impose that and something happens to the arithmetic that would not otherwise. The pair’s two pins would ordinarily each impose two conditions on the next pair’s position; with the kink chosen this way, one condition per pair is implied by the others going round the ring. Four such implications survive as independent statements, and those four are the dependency space.

Change the kink and the implications stop holding. Every constraint then says something new, the rank rises to 48, and the count of nought becomes the truth. The mechanism has not been made worse by being made more general — it has been made into a structure.

Why this is not a force argument

There is a reading of the left null space that this field names and does not take, and the boundary needs stating because it is the only place in twenty fields where it could be crossed by accident.

An engineer looking at ωTJ=0\omega^{T}J = 0 sees a state of self-stress: a set of bar tensions in equilibrium at every joint with nothing applied from outside. The two objects are the same subspace, because the matrix whose null space carries the mechanisms is the transpose of the matrix whose null space carries the equilibrium states, and that is a genuine and useful duality.

It is not what is being computed here. A dependency, as this field uses it, is a combination of the rows of a Jacobian that comes to nothing. It needs no material, no stiffness, no load and no notion of force at all, and every number in this field survives with every force in the mechanism unknown — which is the standing test this site has applied since it opened its transmission field. The self-stress reading belongs to somebody whose subject is structures, is named twice here, and is developed nowhere.

The separating question is simple enough to apply: does the quantity change if the bars are made of a different material? A dependency does not. A tension does.

What the dependencies are worth

A number that only measures the count’s error would be a curiosity. This one has a second life, and it is what makes it the field’s most useful quantity.

Move an interior vertex of a flat crease pattern and the folded state generally stops existing. It survives, to first order, if the change the move makes to the vertex closures can be absorbed by a change in the fold angles — that is, if r/p\partial r/\partial p lies in the column space of the Jacobian. The part of it that does not lie there is the obstruction, and the directions in which nothing can be absorbed are exactly the dependencies.

What the repeated constraints cost the drawing. Move an interior vertex of the flat pattern and the folded state generally stops existing. It survives if the change to the vertex closures can be absorbed by a change in the fold angles — and the part that cannot be absorbed is exactly the part that lies along a dependency, because a dependency is a direction in residual space the fold angles cannot reach. So the number of conditions a pattern's shape has to satisfy is at most the number of dependencies among its constraints, and on the Miura family it is exactly that: one at three by three, four at four, nine at five, measured by taking the rank of the obstruction. A twelve-by-twelve sheet has a hundred conditions on where its vertices may be. That is why a grid whose vertices are anywhere at all does not fold, and it is the same number, read the other way round, as the amount by which the count is wrong.
Fig. 4 The number of conditions a pattern’s shape must satisfy, against the number of dependencies among its constraints. The same number on every row.

So the number of conditions a pattern’s shape has to satisfy before it folds is at most the number of dependencies, and on the Miura family it is exactly that: one at three by three, four at four, nine at five. A twelve-by-twelve sheet has a hundred conditions on where its two hundred and forty-two free coordinates may be drawn.

That is the same hundred, from the other end. It is why a grid whose vertices are anywhere at all does not fold, and it is worked out in full in its own essay.

Where else this site has met one

The object is not new to the site; only its size is.

Sarrus’s linkage is six revolutes in a spatial loop, which Kutzbach’s count calls immobile, and it translates exactly. Bennett’s four-bar moves only when its lengths and twists satisfy one relation, and the count cannot see the relation. A planar four-bar built with four parallel axes in space is counted at minus two and has rank three. In every one of those the mechanism moves because constraints repeat one another, and in every one the repetition is arranged rather than accidental.

Six assemblies, one routine, three disagreements and one accident. Every row is the same three steps: write down the constraint Jacobian, take its rank, and subtract it from the number of unknowns. The representations differ — bars between points, bodies joined by pins, panels joined by creases, one cell of a pattern that repeats for ever — and the routine does not. The counted column is the arithmetic on the numbers of bodies and joints; the measured column is the nullity of the matrix. They agree on the lazy tong and on the kagome cell and disagree on the other four, most sharply on the deployable ring, which the count declares immobile and which is sold as a mechanism that opens. The right-hand column is the reason: constraints that repeat what another constraint has already said, which the count has no way of seeing and the rank cannot help seeing. The fourth row is worth reading twice: the count says nothing can move and nothing can, so the two agree — and they agree for the wrong reason, because that pattern's flat state shows four freedoms and not one of them is a motion.
Fig. 5 Six assemblies, one routine, and the redundant column that accounts for every disagreement in it.

What the network field adds is scale, and scale changes the character of the argument. A Sarrus linkage has one dependency and it can be pointed at; a hundred and forty-four panels have a hundred, and the only honest description of them is a subspace and its dimension. It also changes what the dependencies are for. In a spatial loop they are a curiosity of the count. In a folded sheet they are the count of conditions the drawing has to satisfy, and therefore the measure of how difficult the pattern was to design.

A dependency is not a redundant part

A phrase worth heading off, because it invites the wrong picture.

“Four redundant constraints” does not mean four particular pins could be removed. There is no canonical set of four, and removing four arbitrary ones from the ring gives a mechanism with more freedoms than the ring has, not the same one. The dependencies form a four-dimensional subspace of the forty-eight-dimensional space of combinations of constraints, and it has a basis but no distinguished one.

The right mental picture is closer to a linear-algebra fact than to a parts list: the rows of the matrix span a 44-dimensional space, and there are 48 of them. Which four are “spare” is a question the matrix does not answer, in the same way that four vectors spanning a plane have no distinguished pair.

This is why the site’s own overconstraint essays distinguish two things that both get called overconstraint: a loop whose constraints genuinely overlap, and a mechanism with more joints than its mobility needs. The first is measured by ss; the second is a statement about the count.

The same error, twice, in two directions. A Sarrus linkage with one axis of one chain tilted off true, and the motion range that survives. Tilted within the plane the chain works in, it does not care: at 0.2 radians — eleven and a half degrees, which is not a manufacturing error by any standard — it still drives through a full turn. Tilted out of that plane, 0.001 radians stops it dead. Two hundred times the error, in the other direction, for no cost at all. What separates them is whether the perturbation lies in the screw system the mechanism leaves unconstrained — so "an overconstrained mechanism must be exact" is not merely crude, it is wrong about the case it is usually said of.
Fig. 6 What a repeated constraint costs when the parts are not exact: a Sarrus linkage perturbed, and the travel it has left.

What the dependencies cost

Two costs, and both are real even with force left out of it entirely.

They make the assembly sensitive to its own dimensions. A constraint that repeats another one is a constraint that is satisfied by coincidence, and a coincidence disturbed is a mechanism that will not go together. That is the tolerance argument, and it repeats once per unit, and it is a different kind of statement from a tolerance on an output: the question is not how far the mechanism is from where it should be but whether it can be assembled at all.

And they make the count useless as a design check. On a chain, computing the mobility from the formula is a sound way to find out whether a drawing will move. On a network it is a way of finding out msm - s, and a designer who wants mm has to take a rank.

Where a network's rank decision actually is. Every singular value of the deployable ring's constraint matrix, as a fraction of the largest, on a logarithmic scale. There are 48 of them and the first 44 are ordinary numbers; the last 4 are at the arithmetic's own floor. The decision is not close — the smallest kept value is 1.1e+15 times the largest discarded one — and that is what makes a mobility computed this way a measurement rather than an opinion. It is also why the routine that takes the rank matters: the usual way to get a null space out of a small matrix squares it first, which puts the floor at 10⁻⁸ instead of 10⁻¹⁶ and would put the line through the middle of the gap.
Fig. 7 Taking that rank on the ring: forty-eight singular values, forty-four carrying constraint, and the decision made across fifteen orders of magnitude.

Counting the two nullities is one computation

A practical note, because it is the reason both numbers appear together on every row of every table in this field.

The rank is taken once. Everything else is arithmetic: the mobility is the column count less the rank, the dependency count is the row count less the rank, and the count is the difference between the two. So there is no cost at all to reporting both, and there is a cost to reporting only one — namely that a reader cannot tell whether a count that looks reasonable is reasonable.

That has a consequence for how this field’s tables are laid out. Every one of them carries four columns where a chain would carry two: unknowns, constraints, measured mobility and dependencies, with the count alongside. A row where the last column is nought is a row where the count can be trusted; a row where it is a hundred is a row where the count is a hundred out and the reader should be looking at the third column.

It is the same discipline as reporting the rank gap alongside the rank, and for the same reason. A number that could have come out differently under a different threshold is an opinion, and saying which it is costs one column.

A dependency cannot be found by looking

There is a property of the two nullities under perturbation that decides how a mechanism like this is ever discovered, and it is worth stating because it explains why every example in this field has a name and a discoverer.

The rank of a matrix can only fall on a special set and can only rise under perturbation, so the number of dependencies can only fall. Move the vertices of a framework at random and ss goes to zero: whatever coincidences the rows had are destroyed, the constraints become independent, and the mobility drops by exactly the number of dependencies that were there. That is what the ring does when its kink angle is changed by a degree, and it is not a fragility peculiar to the ring.

The consequence for method is total. A dependency cannot be found by sampling. Draw a framework at random and it has none, with probability one; draw a million and none of them has any. The set of configurations carrying a dependency has measure zero in the space of all configurations, which is exactly the property that makes a random search useless and a construction necessary.

So every mechanism in this field arrived the same way: somebody imposed a condition and then discovered what it bought. Bennett’s linkage is a relation among lengths and twists; Sarrus’s is a pair of perpendicular planes; the deployable ring is a theorem about angulated elements; a Miura pattern is a crease condition. In each case the condition came first and the dependency is what the condition produced, and no amount of drawing frameworks and measuring their ranks would have turned any of them up.

That also settles what a measured ss is a statement about. It is not a property discovered in an assembly; it is a certificate that the assembly satisfies the condition it was built to satisfy. A ring reporting four dependencies is a ring whose angulated elements really do have the kink angle the theorem asks for, to within the tolerance of the rank computation. Reporting zero would not mean the theorem is wrong; it would mean the model has drifted off the condition.

Which is a useful way to use the number in practice, and it inverts what a nullity is normally for. The mobility is the answer to a question; the dependency count is a check on the construction, sensitive to exactly the parameters the construction was supposed to fix, and it fails loudly when any of them is off. That is more than most checks manage, and it is available from a decomposition that was being taken anyway.

The instrument, once more

The rank is the whole field, so it is worth saying what taking one costs.

The dependencies are the null space of JTJ^{T}, so they come out of the same decomposition as the mechanisms with the matrix turned on its side. That decomposition has to be able to see a singular value at 101410^{-14} of the largest, and the route this site had used everywhere until now cannot: accumulating ΣvvT\Sigma vv^{T} squares the condition number, so its floor is ε\sqrt{\varepsilon}, about 1.5×1081.5 \times 10^{-8}, whatever tolerance it is handed.

The instrument, and the floor nobody had written down. The usual way to get a null space out of a small matrix in this fleet is to accumulate Σvvᵀ and take its eigenbasis. That squares the condition number, so the smallest singular value it can distinguish from nought is √ε — about 1.5 × 10⁻⁸ of the largest — whatever tolerance it is handed. Asked at 10⁻¹⁰ it over-states the rank of every constraint matrix in this field: a triangle's three bars come back as five independent constraints, and the deployable ring's forty-four as forty-five, which reports the ring as a rigid body with no deployment. At 10⁻⁷, which is what its own callers pass and what a six-by-six screw system wants, it is right every time — which is exactly why the floor had never been reached. The rank column is one-sided Jacobi on the matrix itself, which resolves a ratio of 10⁻¹⁴.
Fig. 8 Four constraint matrices ranked two ways. Asked below its own floor, the squaring route over-states every one — and reports the deployable ring as a rigid body.

Asked at 101010^{-10} it reports a triangle’s three bars as five independent constraints, the octahedron’s twelve as fifteen, and the ring’s forty-four as forty-five. At 10710^{-7}, which is what its own callers pass and what a six-by-six screw system wants, it is right every time, which is why the floor had never been reached.

A dependency is a quantity computed at the bottom of a spectrum, and a quantity computed at the bottom of a spectrum is only as good as the instrument’s floor. That the gap is reported on every rank in this field is not fastidiousness; it is the only evidence that the number is a fact rather than a threshold.

What this makes readable

Essays that name this one as a prerequisite.

About the same objects

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

What links here

The 8 of 10 essays linking to this one that name the most of the same objects.

The objects this essay names

Each one links to every other essay that touches it.

Constraint jacobianDeployableGrübler's criterionMobilityNetworkNull spaceOverconstraintRankRedundant constraint