The reduction into the register channel #
DescriptiveComplexity.Problems.Wide.Reduce assembles the reduction into
DescriptiveComplexity.WideAccept: the record, the interpretation, the
transport and the hardness statement. This file does the same at the register
channel – the same record, the same doubling, the same transport, and one
change: the interpretation writes down the handed program
(nexInterpHandedPad), whose channel writes for the argument elements and the one
below them, and the problem it lands in is
DescriptiveComplexity.WideRegAccept.
The transport is unchanged because it never reads which problem is being asked
about (wideRegProblem_wideRegInterp_iff is wideProblem_wideInterp_iff at the
other interpretation), so this half of the reduction is free. What is not free
is the machine's correctness, which is the run of
DescriptiveComplexity.Draw.Data.wideRegAccept_regLaid_of_rules on the
yes-side and DescriptiveComplexity.Problems.Wide.DrawNo on the no-side.
The interpretation the reduction emits #
The handed machine of a source, written down over the doubled universe:
DescriptiveComplexity.Draw.dblWideInterp with the clocked program that is
handed its file, and the channel that writes for the argument elements and the
element below them. The program carries n junk rule names, which is what buys
its clock the room the count asks for (PadRules.lean); at n = 0 it is the
plain program with its sites relabeled.
Equations
Instances For
Dependency graph
The handed machine of a source, written down in the instance: the machine over the doubled universe, composed with the doubling.
Equations
Instances For
Dependency graph
The composite's universe is the machine's #
The composite interpretation's universe is the machine's over the doubled universe, at the handed machine: the composition equivalence followed by the order extension's, exactly as at the laid one.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The interpreted structure reads the handed program's table #
The two orders the run layer wants on the handed program's rule names and phases: an arbitrary one on each, the same one the interpretation compares tags with.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Equations
Instances For
Dependency graph
The interpreted structure reads the handed program's table – srcReads
at the program a reduction into DescriptiveComplexity.WideRegAccept
emits.
Dependency graph
The machine decides the fixed point #
The emitted machine accepts exactly when some stage satisfies the
kernel, read over the doubled universe and at the order the encoding pulls
back. This is dwideAcceptSpace_srcEnv_iff at the handed machine: the record's
own facts – its table is read (srcRegReads), its payload fits, its dimension
has slack, its channel marks the argument elements – plus the two the source side
owes, that every guessed variable has an argument and that the padded rule names
outnumber the constant the clock is measured against.
Dependency graph
The handed machine decides the kernel, at the doubled universe: the
record's correctness (wideRegAccept_srcEnv_iff) read through
NexKernel.holds_iff_structure₁, which is the same proposition spelled the
kernel's way. This is hmach's content, with the two obligations the source
side owes still in front of it.
Dependency graph
The emitted instance is a yes-instance exactly when the source is, for
any problem about wide machines: the composite's universe is the machine's
over the doubled universe (wideRegInterpEquiv), the caller says what the
machine decides there, and the relativized expansion's points are the
original's. Which problem PW is, the transport never asks – which is why the
register channel costs nothing here.
Dependency graph
The emitted instance is a yes-instance of acceptance on a clock at the register channel exactly when the source is, given the handed machine's own correctness at the doubled universe.
Dependency graph
The reduction, and NEXPTIME-hardness #
Every NEXPTIME source problem reduces to acceptance on a clock at the
register channel. The drawing is the EXPSPACE reduction's at the kernel's own
step definition; only the program written down and the channel it is handed
change. Two paddings make it unconditional: the kernel's variables gain an
argument (NexKernel.withArg), which the machine needs to address a stage on its
tape, and the program gains as many junk rule names as the clock's count asks for
(PadRules.lean), which costs the drawing nothing and buys its budget outright.
Dependency graph
Acceptance on a clock at the register channel is NEXPTIME-hard.
Dependency graph
Acceptance on a clock at the register channel is NEXPTIME-complete. The
membership half is DescriptiveComplexity.wideRegAccept_mem_NEXPTIME.