Slices of languages #
A language is the union of its slices, one for each word length. The slice at length n is a
Boolean-valued function of the n letters of a word, so it can be handled by models of
computation with a fixed number of inputs, such as circuits. Conversely, one such function for
each length assembles into a language, and slicing that language recovers the functions.
Membership in an arbitrary language is not decidable, so a slice is defined classically. This is what lets notions defined for Boolean-valued functions, such as circuit complexity, apply to every language rather than only to decidable ones.