Rewynth

A STATE TRANSITION LESSON

Same return.
Different next state.

Drop one state update from a recovered PCG32 model. The first return still matches. Run the next call and see what that test missed.

Runs the exported C models in your browser. Fresh ARM64 recovery and solver queries require the local app.

Loading models

Recovered model

State update kept
Returned value
—
State after the call · memory[0]
—
Increment · memory[1]
—

Lost-update edit

Old state kept
Returned value
—
State after the call · memory[0]
—
Increment · memory[1]
—
Loading the two compiled exports…
THE ONLY EDITmemory[0] = x0Keep the initial state word. Leave the return expression and increment unchanged.

Try different initial words

Use decimal or hexadecimal unsigned 64-bit values. Applying them starts both models again at call one.

Compare the calls
Returns from the recovered model and the lost-update edit
CallRecovered returnEdited returnPost-state

WHAT THIS SHOWS

The return is only
one observation.

PCG32 computes its return from the old state, then stores the state for the next call. Dropping that store can pass a return-only test while changing what happens next.

Rewynth compares the return and every declared state word. The included solver record finds a difference in memory[0] while both immediate returns agree. This is our intentional edit, not a demonstrated bug in PCG.

Exports, evidence and limits

The two modules are compiled from Rewynth’s actual recovered and edited C exports. The controls above run those models locally with exact 64-bit inputs. They do not execute the original ARM64 instructions or make a fresh solver query.

The recorded equality result applies to the implemented instruction model, declared two-word memory region and input domain. The finite native controls do not prove universal CPU equivalence or random-generator quality.

Recover and edit your own function in the local workbench