Fixing a nondeterministic branch #
An NTM's transition function is a Bool away from a TM's, so fixing the
Bool turns it into a deterministic machine. Unlike NTM.choiceTM, which reads
one choice bit per step off a tape and therefore runs a whole path, branchTM
fixes the same choice for every step: it is the one-step successor operator of
the configuration graph, not a path.
That is what a search of the configuration graph needs. Deterministic machinery
— the encoded step Complexity.Cobham.stepFn of Cobham's algebra above all —
applies to a TM and not to an NTM, so an edge of the graph is taken by one
of the two branchTMs (Complexity.NTM.succ_iff, where the graph is
defined).
Main definitions #
NTM.branchTM— the deterministic machine that always takes branchb
Main results #
NTM.branchTM_stepCfg— its step is the branch's stepNTM.branchTM_step,NTM.branchTM_step_of_halted— the step, halted or not