What the program is doing
Every rectangle may depict one of nine puppet parts, in one of two orientations (proximal end at its top or its bottom). Every overlapping pair may depict a joint. The engine tests each pair against Hinton's zone rules from Appendix 3: each rectangle is cut into six zones (proximal and distal ends, halves and poles), and a knee, say, needs the calf's proximal end to overlap the thigh's distal end while staying clear of the thigh's proximal half.
Each surviving hypothesis gets a supposition value S between 0 and 1, starting at 0. Joints carry a preference of +1, parts carry 0, and your instructions add to these. The best puppet is the consistent set with the largest total preference, so by default it is the one with the most joints.
Logical constraints, as numbers
- A rectangle depicts at most one part:
Σ Sp ≤ 1 over its part hypotheses.
- No part type occurs more often than in a perfect puppet:
Σ Strunk ≤ 1, Σ Sthigh ≤ 2.
- A joint needs both of its parts:
Sj ≤ Sp and Sj ≤ Sq.
- Rival joints of one kind share a slot:
Σ Sj ≤ Sp, or ≤ 2Sp for a trunk's arm and leg slots.
A violated constraint pushes each of its hypotheses back toward the feasible region with a force equal to the normal distance Vj to its plane, signed by the hypothesis's coefficient. This is the force law of the thesis program (functions CEILFORCE and FLOORFORCE). A small preference force pulls the state uphill. The state settles near the best vertex of the feasible polyhedron, and Kh then snaps it to 0 or 1.
The background row in the inspector is the slack 1 − Σ Sp: how far the rectangle is from being read as any part.
Things to try
Load the ambiguous inversion. Both readings score twelve joints, so the values hang near one half, which the thesis shows with question marks (Fig. 2.9b). One small instruction breaks the deadlock. In the dual-rivals scene, switch attention to pull out the second figure. Turn off momentum to see how slowly the state creeps along a shallow ridge.
The engine builds every locally possible hypothesis rather than growing them from nuclei as the 1977 program did. Hinton's nuclei only saved work: the best puppet is the same.