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

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.

    Instances For
      def Computability.«term_≤ᵀ_» :
      Lean.TrailingParserDescr

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

      Instances For
        def Computability.«term_≡ᵀ_» :
        Lean.TrailingParserDescr

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

        Instances For
          theorem Nat.Partrec.turingReducible {f g : →. } (pF : Nat.Partrec f) :

          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.

          theorem partrec_iff_forall_turingReducible {f : →. } :
          Nat.Partrec f ∀ (g : →. ), TuringReducible f g

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

          theorem TuringEquivalent.trans (f g h : →. ) (h₁ : TuringEquivalent f g) (h₂ : TuringEquivalent g h) :
          @[reducible, inline]

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

          Instances For