Langlib

Langlib.Classes.Recursive.Decidability.Emptiness

Undecidability of emptiness for promised recursive deciders #

Recursive-language membership is uniformly decidable when a raw program code is promised to halt on every word. Emptiness is not. The reduction below maps an arbitrary source program c to an always-halting decider which, on a word of length k, accepts exactly when c halts on input 0 within bounded-evaluation budget k.

Every generated target code satisfies RecursiveDeciderCode.Valid, independently of whether the source computation halts. Over a nonempty alphabet there are words of every length, so its language is empty exactly when the source does not halt. This would turn a promise algorithm for emptiness into a decider for the halting problem.

The nonempty-alphabet assumption is necessary: over an empty alphabet the only word is [], and emptiness of a valid decider is a single membership query.

The total bounded-halting test used in the emptiness reduction. The word length supplies the finite evaluation budget.

Equations
Instances For

    The bounded-halting test is computable jointly in the source code and word.

    Effectively compile the bounded-halting test into a raw recursive-language decider code.

    Equations
    Instances For

      The reduction from source codes to bounded-halting deciders is computable.

      Every code produced by the reduction is valid, whether or not the source program halts.

      Membership in the reduced language is precisely bounded halting.

      Over a nonempty alphabet, the reduced valid language is empty exactly when the source program does not halt on input zero.

      A valid raw code denoting the empty language exists over every computably encoded alphabet.

      Emptiness is not computable even under the semantic promise that the raw program code is an always-halting word decider.

      There is no computable emptiness test for the promised raw-code presentation of the class of recursive languages.