Computable functions and decidable sets #
A function is computable (Turing.MultiTapeTM.IsComputable) when it is computable within some
bounds in the sense of cslib's Turing.MultiTapeTM.ComputableInTimeAndSpace: some machine with a
binary alphabet and finitely many states halts on every encoded input with the encoded value. The
bounds are arbitrary, so this is computability by a total machine
(Turing.MultiTapeTM.isComputable_iff). A set is decidable (Turing.MultiTapeTM.IsDecidable) when
it is decidable within some bounds in the sense of Turing.MultiTapeTM.DecidableInTimeAndSpace,
that is, when its Boolean indicator is computable.
Computable functions compose (Turing.MultiTapeTM.IsComputable.comp): both machines are first put
into the tidy normal form
(Turing.MultiTapeTM.ComputableInTimeAndSpace.exists_computableTidilyInTimeAndSpace), whose
machines compose. Functions computable within bounds in the senses of
Turing.MultiTapeTM.ComputableInTimeAndSpace, Turing.MultiTapeTM.ComputableTidilyInTimeAndSpace,
Turing.MultiTapeTM.ComputableTidilyInO, Turing.MultiTapeTM.ComputableTidilyInDegree and
Turing.MultiTapeTM.ComputableTidilyInPolyTime are computable (their .isComputable lemmas), and
decidable sets are closed under complement.
These are the decidable sets of Sipser, Definition 3.6, for the library's native
multi-tape machines. Mathlib's ComputablePred is the analogous notion for its partial recursive
functions; Turing.MultiTapeTM.IsComputable.computable and
Turing.MultiTapeTM.IsDecidable.computablePred in MultiTape.Halting.Partrec connect the two
models.
Main definitions #
Turing.MultiTapeTM.IsComputable: computability by a total machine.Turing.MultiTapeTM.IsDecidable: decidability by a total machine.
Main results #
Turing.MultiTapeTM.isComputable_iff: computability is the existence of a machine computing the function without bounds.Turing.MultiTapeTM.IsComputable.comp,.prod,Turing.MultiTapeTM.isComputable_id,Turing.MultiTapeTM.IsComputable.of_finite: closure properties.Turing.MultiTapeTM.isDecidable_iff: decidability through any computable Boolean function.Turing.MultiTapeTM.IsDecidable.compl: decidable sets are closed under complement.
References #
Computable functions #
f is computable: some machine with a binary alphabet and finitely many states computes it
with respect to the encodings encIn and encOut within some time and space bounds.
Instances For
Computability is computability by a total machine: some machine with a binary alphabet and finitely many states halts on every encoded input with the encoded value.
Functions computable within bounds are computable.
Functions tidily computable within bounds are computable.
Functions tidily computable up to constants are computable.
Functions tidily computable within bounds of given degrees are computable.
Functions tidily computable in polynomial time are computable.
A computable function is tidily computable within some bounds.
Computable functions compose.
The identity is computable.
Pairs of computable functions are computable.
Decidable sets #
Decidable sets are closed under complement.