The problem catalog #
Umbrella file importing every decision problem of the library. Each problem
lives in its own file (or directory) under DescriptiveComplexity/Problems/,
containing its vocabulary, its semantic definition, the bundled
DescriptiveComplexity.DecisionProblem, its first-order reductions, and its
completeness theorems.
Job sequencing is in NP but not yet proved NP-hard, so its umbrella carries
only the membership half. Alternating machine acceptance
(DescriptiveComplexity.ATMAccept) is the machine bridge for the polynomial
hierarchy, complete at every level
(DescriptiveComplexity.atmAccept_sigmaP_complete,
DescriptiveComplexity.atmAccept_piP_complete) – see
DescriptiveComplexity.Problems.MachineAlt. The halting problem
(DescriptiveComplexity.HALT, the same machine with the tape unbounded) is
RE-complete (DescriptiveComplexity.halt_RE_complete, hardness being the
machine bridge of DescriptiveComplexity.Problems.Machine.HaltHard); its
membership half alone already gives DescriptiveComplexity.halt_le_finsat,
Trakhtenbrot's theorem in the form it is usually stated. The
halting of a partial recursive code drawn as a syntax tree
(DescriptiveComplexity.CODEHALT) is RE-complete
(DescriptiveComplexity.codehalt_RE_complete), and is the problem the
undecidability of the development goes through: it is undecidable outright
(DescriptiveComplexity.not_computablePred_codehalt), whence
DescriptiveComplexity.finsat_not_computable. Its hardness reduction draws the
instance as the program that runs a semi-decision procedure on it, which is
general enough to identify the class with its machine reading
(DescriptiveComplexity.mem_RE_iff_rePred) and to separate it from its
complement (DescriptiveComplexity.RE_ne_coRE). Post's
correspondence problem (DescriptiveComplexity.PCP) is RE-complete too
(DescriptiveComplexity.pcp_RE_complete): membership invents the slots of
the sequence of dominoes together with a matching between the two parses of
the word it spells, and hardness is the computation-history dominoes from
HALT (DescriptiveComplexity.Problems.Pcp.Hardness), whence the
undecidability of Post's problem
(DescriptiveComplexity.pcp_not_computable).