Turing Reducibility and Turing Degrees #
This file defines Turing reducibility and Turing equivalence in terms of oracle computability, as well as the notion of Turing degrees as equivalence classes under mutual reducibility.
Main Definitions #
TuringReducible f g: The functionfis Turing reducible togiffis recursive in the singleton set{g}.TuringEquivalent f g: Functionsfandgare Turing equivalent if they are mutually Turing reducible.TuringDegree: The type of Turing degrees, given by the quotient ofℕ →. ℕunderTuringEquivalent.
Notation #
f ≤ᵀ g:fis Turing reducible tog.f ≡ᵀ g:fis Turing equivalent tog.
Implementation Notes #
We define TuringDegree as the Antisymmetrization of the preorder of partial functions under
Turing reducibility. This gives a concrete representation of degrees as equivalence classes.
References #
- [Odifreddi1989] Odifreddi, Piergiorgio. Classical Recursion Theory: The Theory of Functions and Sets of Natural Numbers, Vol. I.
Tags #
Computability, Turing Degrees, Reducibility, Equivalence Relation
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
f is Turing reducible to g if f is partial recursive given access to the oracle g
Equations
- Computability.«term_≤ᵀ_» = Lean.ParserDescr.trailingNode `Computability.«term_≤ᵀ_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≤ᵀ ") (Lean.ParserDescr.cat `term 51))
Instances For
f is Turing equivalent to g if f is reducible to g and g is reducible to f.
Equations
- Computability.«term_≡ᵀ_» = Lean.ParserDescr.trailingNode `Computability.«term_≡ᵀ_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡ᵀ ") (Lean.ParserDescr.cat `term 51))
Instances For
Instance declaring that RecursiveIn is a preorder.
Turing degrees are the equivalence classes of partial functions under Turing equivalence.
Instances For
Turing join on partial functions #
We define the join (f ⊕ g) by coding answers from f as even numbers and answers from g as odd
numbers:
The Turing join f ⊕ g: answers from f are coded as even numbers and answers from g as
odd numbers.
Equations
- Computability.«term_⊕_» = Lean.ParserDescr.trailingNode `Computability.«term_⊕_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊕ ") (Lean.ParserDescr.cat `term 51))
Instances For
The equality test on pairs: returns 0 if the two components are equal and 1 otherwise.
Equations
- Computability.eq01 p = Part.some (if (Nat.unpair p).1 = (Nat.unpair p).2 then 0 else 1)
Instances For
Semilattice Structure on Turing Degrees #
We show that turingJoin respects Turing equivalence and lifts to a supremum operation
on TuringDegree, making it a SemilatticeSup.
The Turing join respects Turing reducibility: if f ≤ᵀ f' and g ≤ᵀ g',
then f ⊕ g ≤ᵀ f' ⊕ g'.
The Turing join respects Turing equivalence.
The supremum operation on Turing degrees, induced by the Turing join.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
The sup on Turing degrees agrees with the Turing join on representatives.