Computation, control and emergence

Multiple realisation without implementation magic

Rajesh Ranjan Mahapatra

A different substrate runs the same computation only when its physically controllable states preserve the abstract machine’s transition structure across the interventions, boundaries and operating conditions that matter, rather than only when one observed trace looks right.

© 2026 Rajesh Ranjan Mahapatra. 29 min read

Multiple realisation without implementation magicAll Human–Machine Convergence

Computation, control and emergence

Multiple realisation without implementation magic

A different substrate runs the same computation only when its physically controllable states preserve the abstract machine’s transition structure across the interventions, boundaries and operating conditions that matter, rather than only when one observed trace looks right.

TLDR

  1. Matching one output sequence shows trace resemblance, not computational identity.
  2. A realiser must support the relevant unrealised branches, not only the history that happened.
  3. The state mapping must track physical difference-makers rather than arbitrary post-hoc labels.
  4. Equivalence is always relative to a declared boundary, abstraction and operating envelope.
  5. Substitute a realiser only at the strongest evidence grade the decision actually requires.

The replay box

At 02:13, a warehouse door controller fails. An engineer connects a spare box, presses the six test buttons used during commissioning, and watches the same lamps flash in the same order. The replacement is approved.

During the morning shift, a pallet blocks the door while an emergency release arrives. The original controller would enter a fault state, inhibit the motor and require a reset. The spare box opens the door. It was not a controller at all. It was a recorder playing back the six outputs that the commissioning script expected.

The first test answered a narrow question: does this device reproduce the observed trace? The operational decision required a stronger one: does this device contain the state-dependent alternatives that make the controller the controller? Those questions coincide only when the tested history exhausts every relevant possibility. Real systems almost never offer that luxury.

The hidden assumption is that a successful run reveals the machine that produced it. It does not. Many mechanisms can traverse the same visible path. The path becomes evidence of a computation only when it is linked to the neighbouring paths the system would take under different states, inputs and disturbances.

A trace is not a machine

Multiple realisation begins with a useful refusal. A function need not be chained to one material recipe. A valve can be brass, ceramic or a flexible membrane. Addition can be carried by silicon transistors, relays, gears or carefully arranged fluid channels. In philosophy of mind, Putnam used variation across possible organisms to challenge the claim that a mental kind must be identical to one neural kind; Fodor extended the anti-reductionist pressure to the special sciences. Putnam 1967; Fodor 1974.

That refusal is not permission to ignore material organisation. A ceramic disc counts as a valve because pressure differences move it in ways that regulate flow. A painted circle on the pipe does not become a valve because an observer can label “open” and “closed” regions on its surface. Substrate independence is independence from irrelevant material detail, not independence from causal detail.

The phrase “same computation” often slides across three different claims. Two devices may calculate the same mathematical function, such as parity, while using different algorithms. They may implement the same stateful algorithm while differing in clock rate, energy use or fault behaviour. They may also be interchangeable in one operating environment. These claims form a ladder. A lookup table and a long-division routine can return the same quotients without traversing the same intermediate states. A cycle-accurate emulator can preserve a processor’s instruction transitions yet miss a hard real-time deadline. This paper focuses on the middle relation, then asks what must be added before replacement is justified.

The abstraction therefore sets the burden. If the target is merely the Boolean function XOR, many gate arrangements qualify. If the target includes hazards between gate changes, fewer qualify. If the target includes the chemistry of a neuron, a silicon circuit may preserve a computational role while failing the biological specification. Asking whether “the substrate matters” before naming the invariant invites a verbal dispute. Multiple realisation is always multiple realisation of a specified organisation.

Toy worked example: parity versus playback

A two-state parity machine records whether the number of 1s seen so far is even or odd. From even, input 1 moves to odd; from odd, input 1 returns to even; input 0 leaves either state unchanged. Feed both a one-bit latch and a four-symbol playback device the sequence 1, 0, 1, 1. Both can display odd, odd, even, odd. Now preserve the first input but change the second from 0 to 1. The latch moves from odd to even because its current state and the new input jointly determine the successor. The player still emits its second stored symbol, odd. One altered input exposes the difference between a transition rule and a recorded path.

This is why the universal-implementation challenge is serious. If state classes may be invented after the whole history is known, almost any sufficiently varied physical trajectory can be redescribed as a run of almost any finite machine. Searle used the apparent ubiquity of such descriptions to question whether computation is intrinsic to physics. The practical answer developed here is not that labels are forbidden. Every measurement uses labels. It is that the labels must be fixed independently enough to survive interventions that the observed history did not dictate. Searle 1990.

The realiser-substitution rig
Two different physical terrains preserve one abstract transition path An abstract triangular state landscape sits above a relay terrain and a fluidic terrain. Vertical mapping lines connect distinct physical states to the same abstract states, while transition paths retain the same branching pattern. Abstract transition structure A B C Relay realiser Fluidic realiser Different material trajectories, one preserved branching relation
The substrate may change radically while the abstract state and branch relations remain. The substitution claim concerns the preserved relation, not visual similarity between the physical mechanisms. Illustrative conceptual figure.

The rock that follows instructions after the fact

Suppose a rock cools through a unique sequence of microstates between noon and one o’clock. After observing the sequence, we divide those microstates into two disjunctive classes and call them A and B. The labels alternate perfectly. Have we discovered a two-state machine?

Thought experiment: change the unobserved branch

Keep the actual cooling history fixed. Now imagine that at 12:17 we could place the rock in a different microstate that our mapping also calls A. The rock then continues to C rather than B. Nothing about the original trace changes. Yet the claim “A causes B” is now false for one of the physical states placed under A. Did the computation disappear although the observed run stayed identical?

The right answer is yes, if the earlier claim was that the rock implemented the A-to-B transition rule. The actual sequence did not carry that rule. We supplied it by choosing labels after seeing the sequence. Chalmers’s response to Putnam’s triviality construction makes this distinction explicit: implementation must support counterfactual transitions and mirror formal transitions that did not happen on the chosen run, rather than only material conditionals along that run. Chalmers 1996.

The same trace, different neighbouring worlds
A replay path and a genuine branching realiser share the same actual trace The left panel shows a single fixed path that ignores alternative inputs. The right panel shows the same highlighted path embedded in a branching transition system whose other input-dependent routes are also physically supported. Replay box Branch-preserving realiser A B C alternative input ignored A B C F dotted routes are unobserved but physically available
The highlighted actual route is identical in both panels. Only the right-hand system carries the counterfactual branches required by the abstract controller. A trace test cannot distinguish them. Illustrative causal-intervention diagram.
Published basis

Counterfactual support is a central response to universal-implementation arguments. Chrisley also stresses embedded inputs, outputs and full causality; Godfrey-Smith argues that avoiding triviality constrains how physical parts and microstates may be grouped. Chrisley 1994; Godfrey-Smith 2009.

This does not make implementation mysterious. It makes it experimental. Ask what variables can be measured, set and perturbed; ask which transitions follow; ask whether the same classification works before and after the intervention. The next step is to say exactly what must commute.

The argument in one pass
Chart · flow
flowchart TD
  A["The replay box"] --> B["A trace is not a machine"]
  B --> C["The relation that must survive"]
  C --> D["Where substitution breaks"]
  D -. "re-test" .-> A
  classDef first fill:#0a1424,stroke:#D95545,stroke-width:2px,color:#e6f3ff
  classDef step fill:#0a1424,stroke:#3f7da0,stroke-width:1px,color:#e6f3ff
  class A first
  class B,C,D step
A structural route through Multiple realisation without implementation magic: from The replay box to Earn substitution with preserved causal…. Reading use: follow the relation, then return to the surrounding argument for evidence and limits.

The relation that must survive

Imagine replacing a relay controller one component at a time. The first relay becomes a transistor circuit. The next becomes an optical switch. Eventually no original material remains. At every step, engineers can place the controller in each relevant state, apply each admissible input and verify the successor state and output. The replacement feels continuous because the tested organisation remains continuous.

Thought experiment: replacement without behavioural drift

Now alter one condition. The optical replacement produces the correct output for every normal input, but its internal “fault” state cannot be set directly. Under a rare sensor conflict, it silently resets instead of latching the fault. Has the same computation survived? The normal behaviour says yes. The missing intervention says the evidence is incomplete precisely where the safety claim depends on it.

The decisive object is not a material part or an output list. It is an intervention-bearing transition structure. We need a mapping from physical states to abstract states, plus evidence that physical evolution respects the abstract rule throughout the relevant test envelope.

Replacement is licensed by an invariant, not by gradualness
Gradual replacement is persuasive only because each step re-establishes the same causal commitments. A slow sequence of untested substitutions supplies no stronger warrant than one abrupt substitution. Illustrative replacement timeline.

The smallest useful formalism

Let the abstract computation be a deterministic transducer. It has abstract states Q, inputs U, outputs Y, a transition rule δ and an output rule λ. The physical candidate has physical states X, physical inputs I, physical evolution F and physical readout G. Three maps connect the levels: φQ classifies physical states, φU classifies physical inputs, and φY decodes physical outputs.

φQ(F(x, i)) = δ(φQ(x), φU(i)) φY(G(x, i)) = λ(φQ(x), φU(i))

Read the first line from left to right. Start with a physical state and input. Let the device evolve. Then classify the resulting physical state. The result should match what the abstract rule predicts after classifying the starting state and input. The second line makes the same demand of the output. The two routes should agree within a declared tolerance when the system is noisy or analogue. Horsman and colleagues express a related idea through commuting physical and abstract evolutions; Stepney and Kendon make the representation relation and tolerated error explicit. Horsman et al. 2014; Stepney and Kendon 2021.

Small numerical pass through the equation

Take a physical latch at 0.7 volts. The state map classifies 0.0 to 1.0 volts as A. A high input is classified as 1. The measured evolution settles at 2.2 volts, which the map classifies as B. The abstract table says δ(A, 1) = B, so the state route commutes. Suppose the physical output is 0.08 milliamps, decoded as 0, and λ(A, 1) also equals 0. That branch passes. The claim remains incomplete until the other five state-input pairs pass under the same predeclared voltage bands.

The deterministic equation assumes that the same mapped state and input lead to the same successor within tolerance. Remove that assumption and the object of comparison must change. A noisy device may need transition distributions rather than single successors. An adaptive device may require a state that includes its update rule or parameter version. A concurrent device may perform several invisible internal steps before an observable event, so a strict step-for-step comparison becomes too strong. Formalism clarifies the choice only after the modeller decides which physical variations count as noise, hidden state or part of the computation.

The equations compress the claim, but they do not choose the right variables. A mischievous analyst can still invent φ after observing the device. Three additional disciplines make the mapping evidential rather than decorative.

Coverage, causality and factorisation

Coverage asks whether every abstract state and input relevant to the claim has a physical representative inside the declared envelope. A controller does not implement a four-state specification merely because two visited states map cleanly. Unreached states may be tested by direct state setting, carefully constructed histories or a validated lower-level model. If none is possible, the claim must remain at a weaker grade.

Causal relevance asks whether mapped variables make the predicted difference. If two physical states are both labelled B, perturbing irrelevant dust on the casing should not count as setting B. Conversely, if changing a voltage band changes the next mapped state exactly where δ says it should, the voltage is more than correlated with the computation. It participates in the transition.

Factorisation matters when the abstract state contains several variables. Suppose a controller state is a pair [door, alarm]. The formal model permits the door bit to vary while the alarm bit stays fixed. If the physical mapping represents each pair by an indivisible, post-hoc class with no corresponding independent variation, the realiser may match the flat state table while failing the compositional claim. Chalmers introduced combinatorial-state automata partly to block arbitrary whole-state mappings; Godfrey-Smith similarly presses for physically grounded parts and groupings. The adequacy of any exact independence requirement remains debated, especially for integrated analogue systems.

Worked example: a three-state latch

Consider an abstract latch with states A, B and C, and binary input. A relay version uses three stable voltage regions: low, mid and high. We map low to A, mid to B and high to C. From low, input 1 drives mid; from mid, input 0 drives high; from high, input 0 drives mid. Other entries complete the table. The material voltages need not resemble letters. What matters is that setting a region and applying an input produces the mapped successor and output.

One abstract latch, one physically testable mapping
The mapping is justified by controllable voltage regions and input-dependent transitions, not by a visual resemblance between voltage and symbolic state. The voltage ranges are synthetic. Illustrative annotated worked example.

How much testing changes the answer

The difference between a trace and a transition structure can be counted. Take every deterministic three-state, two-input Mealy machine with a binary output. There are 66 = 46,656 possible tables because each of six state-input pairs can choose one of three successor states and one of two outputs. Pick one target machine and test candidates only through outputs from the initial state.

Computational worked example: eliminate the lookalikes

One six-input trace leaves 3,852 tables, about 8.26 per cent of the entire space. Requiring the correct outputs for every tested input history to depth two leaves 810. Depth three leaves 116; depth four leaves 8; depth five leaves 2. The evidence does not improve because the test is longer in the abstract. It improves because each added history opens branches that a playback device or a wrong transition table cannot fake. The last two candidates differ only by swapping the names B and C while preserving every transition and output relation.

Branch coverage collapses false candidates
Log-scale bar chart of candidate machines surviving increasingly deep tests Out of 46,656 possible three-state machines, 3,852 match one output trace, 810 match all input histories up to depth two, 116 to depth three, 8 to depth four, and 2 to depth five. The two survivors differ only by a state relabelling that preserves the initial state. surviving candidates, logarithmic scale 10,0001,000100101 3,852 810 116 8 2 one observedoutput trace all historiesto depth 2 all historiesto depth 3 all historiesto depth 4 all historiesto depth 5 The final two are the same transition structure under a permitted relabelling of B and C.
Enumerating all 46,656 tables shows how rapidly branch tests remove lookalikes. The test correctly leaves two state-renamed implementations rather than forcing literal label identity. Computed synthetic example; reproducible in the executable artefact.

The remaining pair matters. One table uses the internal labels B and C in the opposite order, but the mapping swaps them back. Every transition and output relation is preserved. A test that demanded literal state names would reject a genuine multiple realisation. Good implementation tests are strict about relations and permissive about representation.

Mechanism in one sentence

A physical candidate warrants the same-computation claim when encode, evolve and decode agree with the abstract transition rule across the relevant counterfactual branches, using state classes that are physically measurable, causally relevant and appropriately compositional.

Where substitution breaks

The formal condition still leaves three practical choices exposed: where the system ends, which physical grouping is privileged, and what the word “same” excludes. These are not editorial details. They determine whether a replacement is a realiser, a dependent component or merely a convenient model.

The memory outside the box

Thought experiment: move the state across the boundary

A thin terminal appears to implement the three-state latch. Open the casing and there is no persistent state. Every input is sent to a cloud service that stores the current state and returns the next output. Move the network cable and the local device becomes stateless. Does the terminal realise the computation?

The answer depends on the candidate boundary. The terminal alone does not preserve the state transition because its next response is not determined by a local state. The coupled terminal-service system may do so. Calling the terminal a “computer” in ordinary speech is harmless; claiming local computational equivalence for safety certification is not. State, clock, input transduction and output effect must sit somewhere in the declared realiser.

Boundary choice changes the proposition, not the physical events. Under the local boundary, unplugging the cable is an intervention on the environment and the terminal has no successor-state rule of its own. Under the coupled boundary, the same unplugging is an internal link failure that the larger candidate must model. A third boundary might include the door motor and its position sensor because the controller’s next state depends on a completed physical effect. Each boundary can be legitimate for a different question. What is illegitimate is beginning with the terminal, discovering the missing state, and silently expanding the candidate until the test passes.

A useful boundary dossier names four items before testing: where persistent state resides, which clock orders transitions, where inputs become typed symbols, and where outputs become effects. It also records external dependencies whose failure can change the abstract transition. This turns the familiar claim “the cloud service is part of the system” into a testable statement about state and causal closure rather than an architectural slogan.

One computation, two candidate boundaries
A local controller boundary excludes the remote state store, while a coupled boundary includes both Sensors feed a thin terminal which calls a remote state service before driving an actuator. A coral local boundary surrounds only the terminal and fails to contain state. A teal coupled boundary surrounds terminal, service and communication path and can be assessed as the realiser. Sensorsinput Thin terminalno persistent state Remote state serviceA / B / C Door motoroutput effect local boundary: state missing coupled boundary: state, transition path and effect included
The same hardware can fail or pass depending on the claimed system boundary. Boundary choice is legitimate when declared and justified; silently moving it after a failure is not. Illustrative configured-system view.
Realistic configured-system example

A synthetic door interlock has states locked, release-pending, open and fault. Inputs include badge result, door sensor, emergency release and watchdog. Outputs include motor enable, alarm and a reset requirement. A PLC replacement matches normal badge-open-close traces. It fails the same-computation claim for the safety controller if its watchdog resets to locked instead of latching fault, even when no production trace has yet exercised the conflict. The fault branch is part of what the controller is.

The revealing test begins in release-pending, not at power-on. Set the door sensor to “open” while the motor feedback still says “not moved”, then expire the watchdog. The specification enters fault, disables the motor, raises the alarm and ignores badges until an authorised reset. The replacement returns to locked, where the next valid badge can energise the motor. One state-setting intervention produces a concrete witness: the mapped successor, outputs and reset semantics all diverge. Normal trace coverage could never certify the missing fault latch.

The grouping problem

Even counterfactual transitions do not uniquely select a computational description. A physical gate with three voltage bands can sometimes be coarse-grained in more than one way. Under one partition it behaves like AND; under another it behaves like OR or NAND. Shagrir uses constructions of this kind to argue that a physical system may simultaneously implement distinct automata under different groupings, even when each grouping respects causal transitions. Shagrir 2012.

This is a genuine boundary on any simple mapping theory. The practical response is not to pretend that one grouping is written into nature in capital letters. It is to expose the warrant for the grouping. Circuit theory may privilege voltage thresholds because they are engineered noise margins and because downstream components respond to them. A biological model may privilege ion-channel states, population rates or spike timing for different explanatory tasks. Piccinini adds the organised function of producing strings according to a general rule; Horsman’s framework adds a representation relation and a compute cycle. Piccinini 2007; Horsman et al. 2014.

The audit therefore freezes the grouping before the outcome is known and asks whether it remains stable under nearby conditions. Do the same voltage bands predict transitions on another unit, after mild noise, and under a different input order? Do downstream components respond to those bands as the model assumes? Could a rival partition pass the same tests while supporting a materially different claim? A mapping that survives replication and perturbation has more warrant than one tailored to a single run, even though no finite test proves that it is the only possible description.

Contested scientific and philosophical interpretation

There is no consensus that counterfactual causal structure alone fully individuates physical computation. Mechanistic, semantic, representational and use-relative accounts add different constraints. The instrument in this paper therefore assesses a specific engineering claim: preservation of a declared abstract transition system. It does not settle the complete metaphysics of computation.

Evidence grades for four apparent replacements
“Same computation” and “safe replacement” can diverge. The slow emulator may preserve the abstract transducer while failing an operational specification in which timing is constitutive. Practitioner synthesis; synthetic candidates.

Time, noise and the abstraction envelope

Thought experiment: slow the clock

Two controllers have isomorphic state graphs. One completes every transition in 2 milliseconds; the other takes 2 seconds. For a calculator, both may realise the same untimed computation. For an anti-collision interlock with a 50-millisecond deadline, the second does not realise the specified control process. Which property changed: computation or implementation quality?

The answer follows the specification. If time is absent from the abstract machine, both realise the same untimed transition system, while only one is operationally substitutable. If deadlines, synchronisation or rates are part of the formal object, the slow device fails the computation claim itself. The same applies to stochastic transitions, tolerated analogue error, resource bounds and irreversible side effects. Equivalence is indexed to what the abstraction says must be preserved.

This indexing prevents two opposite mistakes. One is substrate chauvinism, which treats every physical difference as computationally decisive. The other is implementation magic, which calls every difference irrelevant once outputs look similar. An explicit envelope says which perturbations, timings and physical variations the claim survives, and which remain outside it.

The adversarial mapper passes by moving the labels
A post-hoc mapper observes outputs, changes its state labels and passes a demonstration but fails when a hidden state is set directly A coral path shows an adversarial mapper receiving the trace before defining state classes. A teal intervention path sets a hidden state first, causing the mapping to predict the wrong successor and exposing the failure. Demo path Observe traceA B C A Choose classesafter seeing path Replay testpasses Approve Intervention path Set hidden statebefore trace Apply input 1counterfactual branch Wrong successormapping breaks Reject pre-register the mapping to block this route
A mapping selected after the trace can absorb almost any history. Pre-registering state classes and testing direct interventions turns the same flexibility into a detectable failure. Illustrative adversarial-path visual.
Strongest boundary

Passing the proposed test does not show that two systems share meaning, mentality or consciousness. It does not show that the physical mechanisms are identical. It shows that, under a declared mapping and envelope, they preserve one abstract transition system to a stated evidence grade. A biological naturalist may still argue that other substrate-specific organisation matters for mind; a semantic account may require content relations; a mechanistic account may require an organised computing function. Those disputes remain live.

How the claim changes under pressure
Chart · state
stateDiagram-v2
  [*] --> Claim
  state "The rock that follows<br/>instructions after the fact" as Claim
  state "The smallest useful formalism" as Test
  state "Coverage, causality and<br/>factorisation" as Revision
  Claim --> Test: expose mechanism
  Test --> Decision: evidence survives
  Test --> Revision: rival survives
  Revision --> Claim: narrow or rebuild
  Decision --> [*]
The revision loop begins with The rock that follows instructions after… and keeps counterexamples inside the reasoning path. Reading use: follow the relation, then return to the surrounding argument for evidence and limits.

The realiser-substitution lab

The practical contribution is an evidence ladder and a test harness. The ladder prevents a weak observation from silently turning into a strong substitution claim. It is not a universal consciousness score or a metaphysical verdict. It is a disciplined answer to a narrower engineering question: what has this candidate demonstrated about the computation it is claimed to realise?

Six grades, one monotonic rule

G0, trace resemblance: one recorded run matches. This licenses regression triage or demonstration, not substitution. G1, input-output conformance: a declared family of input histories yields the expected outputs from the initial condition. This may support black-box compatibility within that family. G2, state-transition conformance: mapped internal states and every relevant state-input branch agree with the abstract table.

G3, intervention-preserving realisation: the candidate states can be set or reached independently enough to test the branch claims, and the mapped variables are causal difference-makers. G4, compositional realisation: any claimed substate structure, concurrency or modular composition also survives the relevant interventions. G5, operational substitutability: boundary, timing, error, reset, resource and side-effect invariants required by the use case are preserved.

The monotonic rule is simple: never make a grade-N decision using grade-(N−1) evidence. A G1 result can be valuable. It becomes dangerous only when translated into a G3 or G5 claim without the missing tests.

Apply the ladder from the decision backwards. A visual demonstration may need only G0. Replacing an API implementation whose contract is deliberately stateless may need G1 plus error semantics. Replacing a persistent controller requires state witnesses, so G2 is the minimum. Claiming that a different physical mechanism realises the same computation requires G3 because the mapped states must be manipulable difference-makers. A modular architecture needs G4 when independent subcomponents and interleavings are part of the claim. Safety or financial execution usually needs G5 because deadlines, duplicate effects, reset behaviour and recovery are not optional decoration.

The smallest useful audit needs one abstract table, one declared boundary, one physical-state map and one intervention per relevant branch. Run it first on a deliberately bad replay candidate. If the replay reaches G2, the test harness is too weak. Then run a known realiser and record every failed assumption. This negative control prevents an impressive interface from becoming evidence of an untested mechanism.

Interactive realiser-substitution audit
Executable lab

Test four candidates against the same abstract latch

Choose a candidate and boundary. The audit runs a demonstration trace, exhausts the transition table, checks whether states are physically settable, and then applies the operational envelope.

Ready

Run the audit to see the highest warranted evidence grade and the first failing witness.

The lab makes the boundary and evidence grade explicit. The remote-memory terminal changes result when the service enters the candidate system; the slow emulator preserves logic but fails the operational deadline. Executable synthetic decision instrument.

What the checker actually tests

The checker encodes an abstract state table, a candidate’s physical states, the physical-to-abstract map, physical transitions, state-settability flags and an operational envelope. It begins with the same fixed trace used by the replay box. It then attempts every abstract state-input pair. Where a candidate provides a physical model, the checker searches for a mapping witness and reports the first mismatch. Finally, it asks whether the declared boundary contains the state and whether the timing budget is met.

A positive G3 result permits the claim that the candidate realises this finite-state transducer under the tested mapping and envelope. A positive G5 result permits operational substitution for the listed invariants. A negative result does not show that the device computes nothing. It may show that the candidate implements a different computation, that the boundary is wrong, that the state abstraction is too coarse, or that the evidence cannot support the requested grade.

The browser lab uses synthetic transition tables so that the logic remains inspectable. To apply the instrument to hardware or software, replace the table lookup with an adapter that can initialise a physical state, deliver one typed input, observe the successor state, capture the output and read back the outcome through a path independent of the command. Freeze firmware, model, configuration and mapping versions in the result. When a state cannot be set directly, document the input history used to reach it and the assumptions that make that history a valid surrogate intervention.

Run the audit under nominal conditions first, then widen one envelope dimension at a time. Add timing jitter, sensor noise, process restart, network loss or a competing input. The first failed branch is more useful than an aggregate percentage because it identifies which claimed relation broke. Repeating the same happy path thousands of times can estimate reliability on that path, but it cannot manufacture evidence for an unvisited fault state.

The instrument cannot decide whether the chosen abstraction is scientifically privileged. It can expose its cost. A finer abstraction demands more states, interventions and boundary commitments; a coarser one may hide precisely the failure that matters. The smallest defensible implementation is therefore not the most detailed model available. It is the least detailed model whose omitted distinctions cannot change the decision under review.

Decision rule

Record the abstract specification, physical boundary, state and input maps, intervention set, tolerance and operating envelope before testing. Freeze them. Run the branch tests. Treat any later remapping as a new claim that requires a new audit.

Python · realiser_substitution_audit.py
from __future__ import annotations

from dataclasses import dataclass, replace
from itertools import product
from typing import Dict, Mapping, Sequence, Tuple

AbstractState = str
PhysicalState = str
Input = int
Output = int
Transition = Tuple[PhysicalState, Output]


@dataclass(frozen=True)
class AbstractMachine:
    states: Tuple[AbstractState, ...]
    inputs: Tuple[Input, ...]
    initial: AbstractState
    table: Mapping[
        Tuple[AbstractState, Input],
        Tuple[AbstractState, Output],
    ]


@dataclass(frozen=True)
class Candidate:
    physical_states: Tuple[PhysicalState, ...]
    initial: PhysicalState
    mapping: Mapping[PhysicalState, AbstractState]
    table: Mapping[Tuple[PhysicalState, Input], Transition]
    settable: frozenset[PhysicalState]
    boundary_complete: bool
    latency_ms: int
    compositional_verified: bool = True


def audit(
    abstract: AbstractMachine,
    candidate: Candidate,
    deadline_ms: int,
) -> Tuple[str, Tuple[str, ...]]:
    """Return the highest warranted grade and its supporting witnesses."""
    notes: list[str] = []

    mapped = set(candidate.mapping.values())
    if mapped != set(abstract.states):
        missing = sorted(set(abstract.states) - mapped)
        return "G1", (f"State coverage is incomplete: {missing}.",)

    for p_state, a_state in candidate.mapping.items():
        for inp in abstract.inputs:
            key = (p_state, inp)
            if key not in candidate.table:
                return "G1", (f"Missing physical branch {key!r}.",)

            physical_next, physical_out = candidate.table[key]
            if physical_next not in candidate.mapping:
                return "G1", (
                    f"Successor {physical_next!r} has no abstract mapping.",
                )

            actual = (candidate.mapping[physical_next], physical_out)
            expected = abstract.table[(a_state, inp)]
            if actual != expected:
                return "G1", (
                    f"Witness: {p_state!r} mapped to {a_state!r}, "
                    f"input {inp} produced {actual}, expected {expected}.",
                )

    notes.append("G2: every mapped state-input branch commutes.")

    unsettable = set(candidate.physical_states) - set(candidate.settable)
    if unsettable:
        return "G2", tuple(
            notes + [f"Unsettable mapped states: {sorted(unsettable)}."]
        )
    notes.append("G3: every mapped state is intervention-accessible.")

    if not candidate.compositional_verified:
        return "G3", tuple(
            notes + ["Claimed substate composition is not verified."]
        )
    notes.append("G4: composition is verified, or no non-trivial composition is claimed.")

    if not candidate.boundary_complete:
        return "G4", tuple(
            notes + ["The declared boundary omits required state or control."]
        )
    if candidate.latency_ms > deadline_ms:
        return "G4", tuple(
            notes
            + [
                f"Latency {candidate.latency_ms} ms exceeds "
                f"the {deadline_ms} ms deadline."
            ]
        )

    return "G5", tuple(
        notes + ["G5: boundary and operational deadline pass."]
    )


def enumerate_trace_lookalikes(
    target: AbstractMachine,
    trace: Sequence[Input],
) -> int:
    """Count all 3-state, 2-input, binary-output tables matching one trace."""
    choices = tuple(product(target.states, (0, 1)))
    pairs = tuple(product(target.states, target.inputs))

    def outputs(
        table: Dict[Tuple[str, int], Tuple[str, int]],
    ) -> Tuple[int, ...]:
        state = target.initial
        result: list[int] = []
        for inp in trace:
            state, out = table[(state, inp)]
            result.append(out)
        return tuple(result)

    expected = outputs(dict(target.table))
    survivors = 0
    for assignments in product(choices, repeat=len(pairs)):
        table = dict(zip(pairs, assignments))
        survivors += outputs(table) == expected
    return survivors


def enumerate_history_survivors(
    target: AbstractMachine,
    max_depth: int = 5,
) -> Dict[int, int]:
    """Count candidates matching every input history at each exact depth."""
    if max_depth < 1:
        raise ValueError("max_depth must be at least 1")

    choices = tuple(product(target.states, (0, 1)))
    pairs = tuple(product(target.states, target.inputs))

    def outputs(
        table: Dict[Tuple[str, int], Tuple[str, int]],
        history: Tuple[int, ...],
    ) -> Tuple[int, ...]:
        state = target.initial
        result: list[int] = []
        for inp in history:
            state, out = table[(state, inp)]
            result.append(out)
        return tuple(result)

    counts: Dict[int, int] = {}
    for depth in range(1, max_depth + 1):
        histories = tuple(product(target.inputs, repeat=depth))
        expected = {
            history: outputs(dict(target.table), history)
            for history in histories
        }
        survivors = 0
        for assignments in product(choices, repeat=len(pairs)):
            table = dict(zip(pairs, assignments))
            survivors += all(
                outputs(table, history) == target_output
                for history, target_output in expected.items()
            )
        counts[depth] = survivors
    return counts


def example() -> None:
    target = AbstractMachine(
        states=("A", "B", "C"),
        inputs=(0, 1),
        initial="A",
        table={
            ("A", 0): ("A", 0),
            ("A", 1): ("B", 0),
            ("B", 0): ("C", 1),
            ("B", 1): ("A", 0),
            ("C", 0): ("B", 1),
            ("C", 1): ("C", 0),
        },
    )

    relay = Candidate(
        physical_states=("low", "mid", "high"),
        initial="low",
        mapping={"low": "A", "mid": "B", "high": "C"},
        table={
            ("low", 0): ("low", 0),
            ("low", 1): ("mid", 0),
            ("mid", 0): ("high", 1),
            ("mid", 1): ("low", 0),
            ("high", 0): ("mid", 1),
            ("high", 1): ("high", 0),
        },
        settable=frozenset({"low", "mid", "high"}),
        boundary_complete=True,
        latency_ms=8,
    )
    slow_emulator = replace(relay, latency_ms=220)

    for name, candidate in (
        ("relay", relay),
        ("slow emulator", slow_emulator),
    ):
        grade, notes = audit(target, candidate, deadline_ms=100)
        print(f"{name}: {grade}")
        for note in notes:
            print(f"  - {note}")

    trace = (1, 0, 1, 1, 0, 0)
    survivors = enumerate_trace_lookalikes(target, trace)
    print(f"tables matching only the demo trace: {survivors:,}")

    depth_counts = enumerate_history_survivors(target, max_depth=5)
    print(
        "tables matching every history at depths 2 to 5: "
        + ", ".join(
            f"d{depth}={depth_counts[depth]:,}"
            for depth in range(2, 6)
        )
    )


if __name__ == "__main__":
    example()

Choose Download Python checker, then run python3 realiser_substitution_audit.py. The example should report G5 for the relay, G4 for the slow emulator, 3,852 tables matching the demonstration trace, and the depth counts plotted in Figure 5. Change the state table, boundary flags or deadline to audit another synthetic candidate.

The downloadable checker is intentionally small. It assumes deterministic finite-state machines, explicit state mappings and exact outputs. It should not be applied unchanged to continuous dynamics, probabilistic programs, quantum processes, learning systems whose transition law changes during the test, or concurrent systems where internal steps require a weak observational equivalence. Formal methods such as bisimulation provide richer back-and-forth relations for those settings. Hennessy and Milner 1985.

Optional depth: how the enumeration produced Figure 5

The script enumerates all 46,656 transition-output tables. A single six-input output trace leaves 3,852 candidates. Requiring matching outputs for every binary input history to depths two, three, four and five leaves 810, 116, 8 and 2 candidates. The last pair is isomorphic under a state permutation that fixes the initial state. This is the intended stopping point: relation-preserving state renaming is a legitimate implementation difference.

Open research hypothesis

For adaptive and analogue systems, the most useful successor to a binary implementation verdict may be an intervention-preservation profile: a curve showing how mapping error grows as state-setting precision, disturbance size and timescale widen. The idea would be strengthened if such profiles predicted substitution failures better than trace coverage alone. It would be weakened if the profile changed arbitrarily with equally defensible state groupings. A rival explanation is that engineering function and representational use, rather than intervention geometry, supply the predictive advantage.

The evidence conversation
Chart · sequence
sequenceDiagram
  participant Q as Question
  participant M as Mechanism
  participant E as Evidence
  participant D as Decision
  Q->>M: The replay box
  M->>E: The rock that follows instructions after the fact
  E-->>M: compare rival explanations
  E->>D: Earn substitution with preserved causal organisation
  D-->>Q: revise scope or act
Question, mechanism, evidence and decision exchange the burdens developed in Multiple realisation without implementation magic. Reading use: follow the relation, then return to the surrounding argument for evidence and limits.

Earn substitution with preserved causal organisation

When a team asks whether a new substrate, model, emulator or service “does the same thing”, do not begin with material similarity and do not stop at output parity. Begin by naming the abstract transition system whose preservation matters. Then declare the candidate boundary, the state and input mappings, the branches that must be supported, and the disturbances or deadlines inside the claim.

This discipline also sharpens neural-replacement and artificial-mind debates. A successful silicon replacement can support preservation of a declared computational organisation. It cannot, by that result alone, establish preservation of metabolism, biological regulation, meaning or experience. Conversely, pointing to a material difference does not refute functional continuity unless that difference breaks a relation included in the target specification. The useful next experiment manipulates the disputed relation and asks whether the mapped transition, capacity or dependence survives. Material sameness and functional sameness become separate evidential questions rather than rival slogans.

Keep two records during substitution: the invariants demonstrated and the properties deliberately left outside the claim. The first justifies action; the second prevents later readers from treating a bounded result as universal equivalence. When the omitted property becomes decision-relevant, the correct response is not to stretch the old grade. It is to enlarge the abstraction and rerun the audit.

For a demo, G0 may be enough. For protocol compatibility, G1 may be enough. For replacing a stateful component, require at least G2. For a causal or scientific claim about implementation, require G3 and expose the grouping assumptions. For modular or concurrent architecture, require G4. For a consequential production substitution, require G5, because logic that arrives late, loses state during partition, or changes irreversible effects is not an acceptable replacement even when its state graph looks elegant.

Multiple realisation is earned by preserved causal organisation, not granted by substrate difference or output resemblance. This protects the useful insight that computation can travel across matter while blocking the magical inference that any matter can be made to compute anything through a clever description.

The practical consequence is a change in burden of proof. The advocate of substitution must supply the mapping, the counterfactual tests and the envelope. The sceptic must identify a broken relation, an omitted boundary or a relevant property outside the abstraction. Both sides can now disagree about a visible test rather than trade intuitions about whether the device “really” computes.

Substitute only at the demonstrated grade: a matching trace licenses another trace; a preserved intervention structure licenses a computation claim; a preserved operational envelope licenses replacement.

Glossary

Abstract machine
A formal set of states, inputs, outputs and transition rules used as the comparison target.
Counterfactual closure
Support for relevant transitions that were not traversed in the observed run but would occur under admissible state and input changes.
Implementation mapping
A relation that classifies physical states, inputs and outputs as elements of the abstract machine.
Intervention-preserving realisation
The practitioner synthesis proposed here: the mapping continues to commute when mapped physical variables are set or perturbed across the declared envelope.
Multiple realisation
The possibility that materially different systems preserve the same relevant higher-level organisation.
Operational envelope
The declared range of timing, noise, disturbance, resource, reset and boundary conditions covered by the claim.
Trace
One sequence of states, inputs or outputs produced during a particular run.

References

  1. Putnam, Hilary. “The Nature of Mental States.” Originally published as “Psychological Predicates” in Art, Mind, and Religion, 1967. Bibliographic record.
  2. Fodor, Jerry A. “Special Sciences (Or: The Disunity of Science as a Working Hypothesis).” Synthese 28, 1974, pp. 97–115. Authoritative archive record.
  3. Searle, John R. “Is the Brain a Digital Computer?” Proceedings and Addresses of the American Philosophical Association 64(3), 1990, pp. 21–37. Accessible paper.
  4. Chrisley, Ronald L. “Why Everything Doesn’t Realize Every Computation.” Minds and Machines 4, 1994, pp. 403–420. DOI.
  5. Chalmers, David J. “Does a Rock Implement Every Finite-State Automaton?” Synthese 108, 1996, pp. 309–333. Author’s full text; DOI.
  6. Piccinini, Gualtiero. “Computing Mechanisms.” Philosophy of Science 74(4), 2007, pp. 501–526. DOI.
  7. Godfrey-Smith, Peter. “Triviality Arguments against Functionalism.” Philosophical Studies 145, 2009, pp. 273–295. Bibliographic record and abstract.
  8. Hennessy, Matthew, and Robin Milner. “Algebraic Laws for Nondeterminism and Concurrency.” Journal of the ACM 32(1), 1985, pp. 137–161. DOI.
  9. Shagrir, Oron. “Computation, Implementation, Cognition.” Minds and Machines 22(2), 2012, pp. 137–148. Author’s paper; DOI.
  10. Horsman, Clare, Susan Stepney, Rob C. Wagner, and Viv Kendon. “When Does a Physical System Compute?” Proceedings of the Royal Society A 470, 2014, 20140182. Open preprint; DOI.
  11. Stepney, Susan, and Viv Kendon. “The Representational Entity in Physical Computing.” Natural Computing 20, 2021, pp. 233–242. DOI.