Neither part comes out first
Assumes Which way it comes out.
The previous rung asked which directions a part can be translated in, treating everything else as fixed. That is the right question when everything else is fixed, and it is a different question when the other parts can move too.
The arrangement
Two pieces, each an S laid on its side, filling a rectangular tray between them: piece A occupies the lower left and the upper right, piece B the lower right and the upper left. Each has a step lying over the other’s.
Their common boundary is three segments. A horizontal one where A’s lower block is under B’s upper block, with the normal into A pointing down. A second horizontal one where A’s upper block is over B’s lower block, normal into A pointing up. And a vertical one at the middle, in two pieces, with A on the left below the step and on the right above it — so normals into A pointing left and right.
Four normals at four points of the compass. Positively spanning the plane with room to spare, and the free set is empty: piece A cannot be translated in any direction at all, blocked entirely by piece B, with the tray contributing nothing to the argument.
By symmetry the same is true of B. Neither piece is free, and the blocking is mutual rather than hierarchical: there is no order in which the two can be taken out one at a time.
And the pair moves
Take the two together as one object and ask the same question. Its contacts are now only those with parts outside the set — the tray’s floor and two walls, six of them — and the four contacts between A and B have dropped out of the question entirely, because they are internal.
Floor, left wall, right wall. Free directions: up, and only up. The pair comes out.
Nothing moved between those three computations. The geometry is identical, the contacts are identical, and what changed is which contacts count — which is a property of the subset rather than of the parts.
The four contacts, one at a time
It is worth going through A’s four contacts individually, because the arrangement is small enough to check by hand and the checking is the argument.
A’s lower block sits under B’s upper block along a horizontal face. The normal into A points down: A may move down away from that face and may not move up into it. A’s upper block sits over B’s lower block along a second horizontal face, and the normal into A points up. Those two together already forbid every vertical motion in both senses — which no single contact can do, and which two opposed contacts do trivially.
Then the vertical face at the middle. Below the step A is on the left of it, so the normal into A points left; above the step A is on the right, so the normal points right. Two more opposed normals, forbidding every horizontal motion.
Four contacts in two opposed pairs, and every direction has a negative component along one of the four. There is nothing left, and the reason is that the interlock is two opposed pairs rather than one — a single opposed pair blocks a line of directions and leaves a whole half-plane on each side.
Compare that with the slot from the previous rung, which has three faces and one opposed pair — the two walls — plus a floor. The floor forbids downward and nothing forbids upward, so one direction survives. The difference between a slot and this is one face.
The consequence for a search
That single observation changes what a disassembly problem is.
If a part could always be removed alone when the assembly can be taken apart at all, disassembly would be a search over parts: try each in turn, remove the one that is free, repeat. There are things to try at each step and the whole thing is cheap.
It cannot be. The unit of removal is a subset, and there are of them. For the interlock that is four subsets and two of them are trivial; for an assembly of twenty parts it is a million, and the number is the reason this problem is hard rather than tedious.
There is one saving and it is worth having, and it is the same saving the network field gets from its own routine: the question for a subset is exactly the same computation as the question for a part. Collect the contacts between the subset and its complement, with normals pointing into the subset, and enumerate the cone. Nothing new is needed and nothing is approximated. What is expensive is the number of times it has to be run, not any one run.
Assembly is the same question backwards, and it is not symmetric
If the pair comes out together it goes in together, and it is worth checking whether either piece could have gone in alone — because the answer is not what the removal computation says.
Piece A alone, lowered into the empty tray, fits: its lower-left block travels down through a region nothing occupies, and its upper-right block travels down to its place. So A can be inserted first. Then B cannot be inserted at all, because B’s lower-right block would have to pass down through the space A’s upper-right block is now occupying.
So the assembly has a state — A in, B out — that is reachable from the empty tray and from which the finished assembly is not reachable. That is a dead end, and it is the thing an assembly sequence has to avoid.
Which makes the assembly and disassembly questions genuinely different rather than time-reversed. Disassembly from the finished state is decided by the contacts that exist there. Assembly is decided by contacts that exist at every intermediate state, and there are many of those and the parts are not touching in most of them.
What the site already knew about assembly
There is one other essay here about an assembly that could not be assembled, and the two failures are worth setting side by side because neither is the other.
A planetary gearset with the wrong tooth counts cannot be built: the planets do not mesh with both the sun and the ring at the spacing they are meant to sit at, and the condition is an integer relation between the tooth counts. That obstruction holds at every position of everything; there is no order and no direction that gets round it, and no clearance small enough to matter.
The interlock’s is directional and order-dependent. Every piece fits, every pair of surfaces is compatible, and the assembly exists — it merely cannot be reached by a sequence of single-part motions.
Both are cases where a drawing of the finished object is correct and the object cannot be made, which is the same shape as a linkage whose synthesis is exact and whose branches make it unbuildable — a family of failures this site keeps meeting from new directions, in which the finished thing is fine and the route to it does not exist.
Where the cone stops being enough
The interlock is a clean case because the two pieces move together along one direction and every contact is maintained or broken cleanly. Two things it does not show are worth naming.
A subset need not move rigidly. Two parts can come apart by moving in different directions at once — a situation the parallel field met from the other side, where several actuated members move together and the useful question is about the set rather than any member — one up and one sideways — and the cone computed for the pair, which asks for a single translation of both, cannot see that. The right question there is whether the two directions are jointly admissible, which is a cone in four dimensions rather than two, and enumerating it needs the same machinery in a bigger space.
And a motion need not be a translation. Every cone in this rung drops the rotation. A pair that cannot be translated apart may come apart by turning, which is a common enough thing to do to a stuck assembly that it has a name in every workshop.
Neither of those changes the rung’s claim, which is about subsets rather than about which motions are allowed. Adding rotations and independent motions makes the search larger and leaves the structure alone: the unit is still a subset, and the removal cone of a set is still not built from the cones of its members.
The tray is doing less than it looks
One more reading, because the tray is drawn and it is easy to assume it is holding something.
Take the tray away entirely and repeat the three computations. Piece A alone: still blocked in every direction, because all four of its blocking contacts are with B. Piece B alone: the same. The pair: now free in every direction, since nothing is touching it.
So the tray contributes nothing to the two single-part answers and everything to the pair’s. It is not holding the pieces; it is holding the pair, and it holds it in the weakest possible way — three faces leaving one direction, which is a slot.
That is worth extracting because it is what makes the arrangement an interlock rather than a fixture. The pieces are held by each other and not by the frame, and the frame’s only job is to stop the pair sliding apart sideways, which the pieces cannot prevent between themselves.
A reader who wants the sharpest version of the rung can take the tray away and note that the answers for A and B do not change at all. Two pieces floating in space, each unable to translate in any direction, and the pair able to go anywhere.
Two is the smallest number that does this
It is worth checking that the situation needs two parts rather than being a fact about one, because a single part blocked in every direction is an ordinary thing and has nothing surprising in it.
One part blocked by a frame is a dovetail: its removal cone is empty and the frame is not going anywhere either, so the assembly is simply not separable in the plane. Nothing about that is a statement about order.
Two parts is the smallest case in which the blocking can be mutual, and mutual blocking is what makes the ordering question have no answer. And it is worth noting that both parts are blocked by contacts with each other rather than with the frame: take the tray away entirely and the two single-part answers do not change at all.
Three parts admit a case this rung does not build: an assembly in which every pair is blocked as well, so that no two come out together and all three must move at once. That is a real configuration and constructing one is a puzzle rather than a computation; what the machinery here would say about it is exactly what it says about two, one subset at a time.
Why the blocking is mutual and not circular
One clarification, because the situation is often described as a cycle and it is not one here.
A blocking graph has an edge from A to B when A stops B from moving in a given direction. In a given direction, the interlock’s graph is a pair of edges in opposite senses — A blocks B upward because A’s step is over B’s, and B blocks A upward because B’s step is over A’s — which is a two-cycle, and a cycle in a blocking graph means no member of it can move in that direction.
What makes this rung’s case sharper than an ordinary cycle is that the blocking holds in every direction, not just in the one being tried. There is no direction in which the graph is acyclic, so no single-part motion works anywhere, and the phrase which part comes out first has no referent rather than an inconvenient one.
Reading it as a configuration space
There is a way of putting the whole rung in one sentence, and it is the language the algebra field built rather than anything new.
The assembly’s configuration space is four-dimensional — two translations for each piece — cut down by the inequalities that say no two pieces overlap. The finished assembly is one point of it. Removing A alone is a motion along a two-dimensional slice through that point with B held fixed; removing both is a motion along the diagonal.
The free space near the finished point is a cone in four dimensions, and its intersection with the slice where B is fixed is trivial, and its intersection with the diagonal is not. So the rung’s claim is a statement about a cone and a family of subspaces: a cone can be non-trivial and meet a subspace only at the origin, which surprises nobody who has written it down and surprises everybody who has looked at the assembly.
And it explains why the search is over subsets rather than over parts without any appeal to intuition. The subsets are exactly the coordinate subspaces along which the search is looking, and there are of them because that is how many ways there are to choose which parts move.
The subset changes which rows there are
The removal cone of a set is not built from its members’ cones is the rung’s headline, and the mechanism behind it is worth stating exactly, because it turns a surprise into an accounting rule.
A part’s removal cone is built from the contacts between that part and everything it touches. Take a subset and move it as one rigid unit, and the contacts inside the subset stop being constraints — the two pieces are not moving relative to one another, so nothing about their mutual faces can be violated. Only the contacts crossing the boundary remain.
So the pair’s cone is not computed from the same rows as either member’s. A alone has seven rows: four to B and three to the tray. B alone has the same. The pair has three — the tray’s — because the four mutual contacts have been deleted, and the deletion is what lets the pair lift straight out.
That is the whole phenomenon, and it makes the earlier failure predictable rather than paradoxical. The four contacts that block A are the four contacts A shares with B, and they are exactly the ones that vanish when B comes along for the ride. A part is blocked by its neighbour and a part plus its neighbour is not blocked by anything they share.
Which gives the search its proper shape. A subset’s constraint list is determined by the cut between the subset and its complement, so the object being searched over is not a set of parts but a partition — and the cost of a subset is the size of its cut rather than its own size. A subset with a small cut is cheap to check and likely to move; one with a large cut is neither.
That is a better-shaped search than try every subset, even though it is the same exponential set. It says which subsets to try first — the ones whose boundary with the rest of the assembly is smallest — and it explains why real disassembly sequences come apart into loosely-coupled groups rather than one part at a time. The rows follow the cut, and the cut is the thing to look at.
What it is for
Two things, and the second is why the rung sits in this field rather than in a book about robots.
It says which assemblies are makeable. An assembly whose only removable subsets are large is one that has to be built with fixtures holding several pieces at once, which is a cost that shows up long before anything is machined and does not show up in any drawing of the finished part. That is the same kind of hidden cost a synthesis with a branch defect carries: the answer is exact and the thing cannot be got to.
And it is where a hold and a joint meet. A subset that cannot be moved is held by its complement, in the exact sense of this field: the contacts positively span, the cone is trivial, and the margin is positive. So the interlock’s pieces hold each other — mutually, with no frame involved — and the tray is what stops the pair from being held by nothing at all.
That is the last thing the field’s machinery does before it turns to tolerances, and it is worth stating plainly: a hold is not a relation between a part and the ground. It is a relation between a set and its complement, and the ground is one of the parts.
About the same objects
Not linked from either essay — found by the objects both name.
- The escape is a place contact normal · enumeration · fixture · form closure · unilateral constraint
- A constraint that only pushes contact normal · form closure · unilateral constraint
- Four in the plane and seven in space fixture · form closure · unilateral constraint
- The contact that is free not to touch fixture · form closure · unilateral constraint
- The hold is in the corners fixture · form closure · unilateral constraint
- What one contact forbids contact normal · form closure · unilateral constraint
What links here
Essays that link to this one from their own argument.
- Six things a hold is not Drawn wrongly
The objects this essay names
Each one links to every other essay that touches it.
Assembly conditionBlockingContact normalDisassemblyEnumerationFixtureForm closureRemoval coneUnilateral constraint