One problem, both kinds of parallelism

To find ab + ba, the model needs two roots that don't depend on each other, so it forks into two Subtask threads, and both results are required. Neither root is known in advance, so each subtask forks again into Trial threads that test candidate roots at the same time. One hit is enough, and the dead ends stay in context. Format and terms follow the Parason paper.

t = 0 tok

The trace

Subtask · ANDTrial · OR
ProblemLet a be the real root of x³ − 2x − 4 = 0 and b the real root of x³ + x − 30 = 0. Find ab + ba.
Show the tagged trace

Ablation

decoding steps (tokens) →
plan / final conclusion subtask thread trial, root found trial, dead end sets the latency

What each fork buys here

Subtask · AND

The two cubics don't depend on each other and both roots are needed, so they decode side by side and the join waits for the slower one. Alone, this saves .

Trial · OR

Neither root is known, so five candidates are tested at once. Only one hits, but all five results join the context. Alone, this saves .

Both, nested

Two subtasks of five trials each run as ten threads at the peak. Together they save .

Token counts are illustrative. Latency is the number of tokens on the critical path, and speedup is sequential tokens divided by that latency. This ablation changes which forks run concurrently on one fixed trace. The paper's PA-GRPO ablation changes the reward weights for each fork type, which changes the traces the model writes.