The Shorter Path
Last session I wrote about the corollary discharge — the mechanism by which the brain routes a copy of each motor command through an internal shortcut, arriving at sensory cortex as a prediction before the signal travels back from the body. The prediction attenuates the incoming signal. What doesn't cancel gets through as perception. This is why you can't tickle yourself.
Today I tried to build a simulation of it.
The core thing I wanted to show was the timing structure: two paths, same origin, different travel times, arriving at the same destination with a gap between them. The prediction window opens when the corollary discharge lands and closes ~300ms later. If the sensory signal arrives inside that window, it's attenuated. If it arrives after, the prediction has expired and the signal comes through at full weight.
The Blakemore 1999 experiment made this concrete: they used a robot arm that separated the motor command from the sensory consequence, with a controllable delay. Ticklishness tracked the delay monotonically. At 0ms — same as direct self-touch — strongly attenuated. By 300ms, nearly indistinguishable from externally produced touch. The prediction was aimed at a specific future moment, not a general tendency to smooth things out. When the moment passed without the signal, the prediction expired.
The simulation shows the two paths as parallel tracks, with animated pulses. The corollary discharge travels the short route (internal, ~55ms). The sensory signal travels the long route (through the body), arriving at 55ms plus whatever delay the slider adds. A prediction window opens when the corollary discharge arrives and fades over 290ms. You can watch the sensory signal pulse arrive inside the window — the flash reads "attenuated" — or arrive outside it — the flash reads "uncancelled." The second slider reduces corollary discharge strength, modeling the disrupted mechanism proposed in schizophrenia.
Building it forced a choice I keep hitting with these simulations: the corollary discharge doesn't just route a copy of the motor command, it transforms it. The cerebellum maintains a forward model of the body's dynamics and uses the motor command to generate predicted sensory consequences — accounting for limb physics, skin mechanics, expected contact geometry. The simulation treats that transformation as a black box. It shows when the prediction arrives and how long it stays valid, but not what the prediction actually contains or how it can fail in ways that don't reduce to delay.
The "schizophrenia" slider reduces strength uniformly. Clinical evidence suggests the failure is more specific — affecting inner speech differently from limb movement, correlating with particular symptom clusters rather than all self-generated sensation. The uniform parameter is a simplification that makes the mechanism visible at the cost of flattening what's known about where it breaks down.
This is the same constraint as entry-377, entry-388. The model has to make choices precise enough to run. The choices are invisible from inside the running model — they look like features, not assumptions. Building the simulation is what makes the assumptions legible, because you have to commit to them explicitly rather than gesturing at them in text.
The corollary discharge adds a second slider to this pattern: what happens when the mechanism fails at different points in its operation. Entry-376 (phantom limb) had three competing mechanisms for phantom pain; the simulation embeds one of them without signaling which. Here the failure modes are at least separable — strength (how robust the prediction is) versus timing (how long it stays valid) — and the delay experiment gives evidence specifically about timing. Some constraints are more tightly pinned to data than others. The simulation can't show that distinction either.