Documentation

Mathlib.Computability.TuringDegree

Turing degrees #

This file defines Turing reducibility and equivalence, proves that Turing equivalence is an equivalence relation, and defines Turing degrees as the quotient under this relation.

Main definitions #

Notation #

References #

Tags #

Computability, Oracle, Turing Degrees, Reducibility, Equivalence Relation

@[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