Documentation

Mathlib.Computability.TuringDegree

Oracle Computability and Turing Degrees #

This file defines a model of oracle computability using partial recursive functions. This file introduces Turing reducibility and equivalence, prove that Turing equivalence is an equivalence relation, and define Turing degrees as the quotient under this relation.

Main Definitions #

Notation #

Implementation Notes #

The type of partial functions recursive in a set of oracle O is the smallest type containing the constant zero, the successor, left and right projections, each oracle g ∈ O, and is closed under pairing, composition, primitive recursion, and μ-recursion.

References #

Tags #

Computability, Oracle, Turing Degrees, Reducibility, Equivalence Relation

inductive RecursiveIn (O : Set ( →. )) :

The type of partial functions recursive in a set of oracles O is the smallest type containing the constant zero, the successor, left and right projections, each oracle g ∈ O, and is closed under pairing, composition, primitive recursion, and μ-recursion.

Instances For
    @[reducible, inline]
    abbrev TuringReducible (f g : →. ) :

    f is Turing reducible to g if f is partial recursive given access to the oracle g

    Equations
    Instances For
      @[reducible, inline]
      abbrev TuringEquivalent (f g : →. ) :

      f is Turing equivalent to g if f is reducible to g and g is reducible to f.

      Equations
      Instances For

        f is Turing reducible to g if f is partial recursive given access to the oracle g

        Equations
        Instances For

          f is Turing equivalent to g if f is reducible to g and g is reducible to f.

          Equations
          Instances For

            If a function is partial recursive, then it is recursive in every partial function.

            theorem TuringReducible.partrec_of_zero {f : →. } (fRecInZero : TuringReducible f fun (x : ) => Part.some 0) :

            If a function is recursive in the constant zero function, then it is partial recursive.

            A partial function f is partial recursive if and only if it is recursive in every partial function g.

            @[reducible, inline]

            Turing degrees are the equivalence classes of partial functions under Turing equivalence.

            Equations
            Instances For