Computability on the integers

Laurent Bienvenu ( LIAFA, CNRS & Université de Paris 7 )

EJCIM 2011 Amiens, France 30 mars 2011 1. Basic objects of computability The formalization and study of the notion of is what is about.

As opposed to complexity theory, we do not care about efficiency, just about feasibility.

Computable. functions

What does it means for a function f : N → N to be computable?

1. Basic objects of computability 3/79 As opposed to complexity theory, we do not care about efficiency, just about feasibility.

Computable. functions

What does it means for a function f : N → N to be computable?

The formalization and study of the notion of computable function is what computability theory is about.

1. Basic objects of computability 3/79 Computable. functions

What does it means for a function f : N → N to be computable?

The formalization and study of the notion of computable function is what computability theory is about.

As opposed to complexity theory, we do not care about efficiency, just about feasibility.

1. Basic objects of computability 3/79 But for us, it is now obvious that computable = realizable by a program / .

Surprisingly, the first acceptable formalization (Turing machines) is still one of the best (if not the best) we know today.

The. intuition

At the time these questions were first considered (1930’s), computers did not exist (at least in the modern sense).

1. Basic objects of computability 4/79 Surprisingly, the first acceptable formalization (Turing machines) is still one of the best (if not the best) we know today.

The. intuition

At the time these questions were first considered (1930’s), computers did not exist (at least in the modern sense).

But for us, it is now obvious that computable = realizable by a program / algorithm.

1. Basic objects of computability 4/79 The. intuition

At the time these questions were first considered (1930’s), computers did not exist (at least in the modern sense).

But for us, it is now obvious that computable = realizable by a program / algorithm.

Surprisingly, the first acceptable formalization (Turing machines) is still one of the best (if not the best) we know today.

1. Basic objects of computability 4/79 • A read-write head, which can write on the cells symbols from a finite alphabet (usually {0, 1}), and a special “symbol”, blank.

The head can be in one of finitely many states q0, q1, q2,..., with

two particular states qi and qf, respectively initial and final state. The head comes with a transition table which tells it, given the symbol of the cell it is reading and its current state, which action it should perform (write a new symbol or not, change its state or not, move or not).

⇒ → ⇒ E.g. (0, q4) (0, q5, ); (1, q2) (0, qf, −)

A. formalization: Turing machines (1)

A Turing machine consists in:

• A computation tape, made of infinitely many cells

C0, C1, C2,..., which is “read/write”.

1. Basic objects of computability 5/79 The head can be in one of finitely many states q0, q1, q2,..., with

two particular states qi and qf, respectively initial and final state. The head comes with a transition table which tells it, given the symbol of the cell it is reading and its current state, which action it should perform (write a new symbol or not, change its state or not, move or not).

⇒ → ⇒ E.g. (0, q4) (0, q5, ); (1, q2) (0, qf, −)

A. formalization: Turing machines (1)

A Turing machine consists in:

• A computation tape, made of infinitely many cells

C0, C1, C2,..., which is “read/write”. • A read-write head, which can write on the cells symbols from a finite alphabet (usually {0, 1}), and a special “symbol”, blank.

1. Basic objects of computability 5/79 ⇒ → ⇒ E.g. (0, q4) (0, q5, ); (1, q2) (0, qf, −)

A. formalization: Turing machines (1)

A Turing machine consists in:

• A computation tape, made of infinitely many cells

C0, C1, C2,..., which is “read/write”. • A read-write head, which can write on the cells symbols from a finite alphabet (usually {0, 1}), and a special “symbol”, blank.

The head can be in one of finitely many states q0, q1, q2,..., with

two particular states qi and qf, respectively initial and final state. The head comes with a transition table which tells it, given the symbol of the cell it is reading and its current state, which action it should perform (write a new symbol or not, change its state or not, move or not).

1. Basic objects of computability 5/79 A. formalization: Turing machines (1)

A Turing machine consists in:

• A computation tape, made of infinitely many cells

C0, C1, C2,..., which is “read/write”. • A read-write head, which can write on the cells symbols from a finite alphabet (usually {0, 1}), and a special “symbol”, blank.

The head can be in one of finitely many states q0, q1, q2,..., with

two particular states qi and qf, respectively initial and final state. The head comes with a transition table which tells it, given the symbol of the cell it is reading and its current state, which action it should perform (write a new symbol or not, change its state or not, move or not).

⇒ → ⇒ E.g. (0, q4) (0, q5, ); (1, q2) (0, qf, −)

1. Basic objects of computability 5/79 Then we run the machine, until at some point the state qf is reached by the head. Then the output is the string of 0 and 1 present on the tape (after removing blank symbols) at that point.

Caveat: the computation may never halt!!

A. formalization: Turing machines (2)

The input n is initially placed on the tape (written as string of 0’s and

1’s) starting from cell C0 and in a contiguous way. The rest is blank.

1. Basic objects of computability 6/79 Caveat: the computation may never halt!!

A. formalization: Turing machines (2)

The input n is initially placed on the tape (written as string of 0’s and

1’s) starting from cell C0 and in a contiguous way. The rest is blank.

Then we run the machine, until at some point the state qf is reached by the head. Then the output is the string of 0 and 1 present on the tape (after removing blank symbols) at that point.

1. Basic objects of computability 6/79 A. formalization: Turing machines (2)

The input n is initially placed on the tape (written as string of 0’s and

1’s) starting from cell C0 and in a contiguous way. The rest is blank.

Then we run the machine, until at some point the state qf is reached by the head. Then the output is the string of 0 and 1 present on the tape (after removing blank symbols) at that point.

Caveat: the computation may never halt!!

1. Basic objects of computability 6/79 A. formalization: Turing machines (3)

qi

work 0 1 0 0 1 tape (R/W)

1. Basic objects of computability 7/79 A. formalization: Turing machines (3)

q3

work 1 1 0 0 1 tape (R/W)

1. Basic objects of computability 7/79 A. formalization: Turing machines (3)

q7

work 1 0 0 0 1 tape (R/W)

1. Basic objects of computability 7/79 A. formalization: Turing machines (3)

q2

work 1 0 0 0 1 tape (R/W)

1. Basic objects of computability 7/79 A. formalization: Turing machines (3)

q1

work 1 0 0 1 1 tape (R/W)

1. Basic objects of computability 7/79 A. formalization: Turing machines (3)

q9

work 1 0 0 1 1 tape (R/W)

1. Basic objects of computability 7/79 A. formalization: Turing machines (3)

q2

work 1 0 0 1 1 tape (R/W)

1. Basic objects of computability 7/79 A. formalization: Turing machines (3)

qf

work 1 0 0 1 1 0 tape (R/W)

1. Basic objects of computability 7/79 Since Turing machines may not halt, we in general deal with partial functions (= may not be defined for some input).

The model is robust: we would get the same notion if we defined computability via RAM machines, lambda-calculus, Abstract State Machines, C++, etc).

Turing-Church thesis: What is effectively calculable is computable

A. robust notion (1)

Now we can define: computable = computable by a Turing machine

1. Basic objects of computability 8/79 The model is robust: we would get the same notion if we defined computability via RAM machines, lambda-calculus, Abstract State Machines, C++, etc).

Turing-Church thesis: What is effectively calculable is computable

A. robust notion (1)

Now we can define: computable = computable by a Turing machine

Since Turing machines may not halt, we in general deal with partial functions (= may not be defined for some input).

1. Basic objects of computability 8/79 Turing-Church thesis: What is effectively calculable is computable

A. robust notion (1)

Now we can define: computable = computable by a Turing machine

Since Turing machines may not halt, we in general deal with partial functions (= may not be defined for some input).

The model is robust: we would get the same notion if we defined computability via RAM machines, lambda-calculus, Abstract State Machines, C++, etc).

1. Basic objects of computability 8/79 A. robust notion (1)

Now we can define: computable = computable by a Turing machine

Since Turing machines may not halt, we in general deal with partial functions (= may not be defined for some input).

The model is robust: we would get the same notion if we defined computability via RAM machines, lambda-calculus, Abstract State Machines, C++, etc).

Turing-Church thesis: What is effectively calculable is computable

1. Basic objects of computability 8/79 E.g. the function f : N × Mn(Z) → Mn(Z) defined by f(k, M) = M k − k · M is computable.

How about computation on infinite objects (e.g. real numbers)? see Mathieu Hoyrup’s talk!

A. robust notion (2)

Also a robust notion w.r.t. objects we compute. If X and Y are sets that can be encoded with the set of binary strings (finite graphs, matrices over Z, pairs of integers, etc), then it makes sense to call a function f : X → Y computable if from a code ⟨x⟩ of x ∈ X we can compute a code ⟨f(x)⟩ of f(x).

1. Basic objects of computability 9/79 How about computation on infinite objects (e.g. real numbers)? see Mathieu Hoyrup’s talk!

A. robust notion (2)

Also a robust notion w.r.t. objects we compute. If X and Y are sets that can be encoded with the set of binary strings (finite graphs, matrices over Z, pairs of integers, etc), then it makes sense to call a function f : X → Y computable if from a code ⟨x⟩ of x ∈ X we can compute a code ⟨f(x)⟩ of f(x).

E.g. the function f : N × Mn(Z) → Mn(Z) defined by f(k, M) = M k − k · M is computable.

1. Basic objects of computability 9/79 see Mathieu Hoyrup’s talk!

A. robust notion (2)

Also a robust notion w.r.t. objects we compute. If X and Y are sets that can be encoded with the set of binary strings (finite graphs, matrices over Z, pairs of integers, etc), then it makes sense to call a function f : X → Y computable if from a code ⟨x⟩ of x ∈ X we can compute a code ⟨f(x)⟩ of f(x).

E.g. the function f : N × Mn(Z) → Mn(Z) defined by f(k, M) = M k − k · M is computable.

How about computation on infinite objects (e.g. real numbers)?

1. Basic objects of computability 9/79 A. robust notion (2)

Also a robust notion w.r.t. objects we compute. If X and Y are sets that can be encoded with the set of binary strings (finite graphs, matrices over Z, pairs of integers, etc), then it makes sense to call a function f : X → Y computable if from a code ⟨x⟩ of x ∈ X we can compute a code ⟨f(x)⟩ of f(x).

E.g. the function f : N × Mn(Z) → Mn(Z) defined by f(k, M) = M k − k · M is computable.

How about computation on infinite objects (e.g. real numbers)? see Mathieu Hoyrup’s talk!

1. Basic objects of computability 9/79 Notation.

Turing machines themselves can be encoded by a binary string (hence integer).

We denote by φn the function computed by the Turing machine of

code n. If on some input x, φn(x) is undefined, we write φn(x) ↑.

We write φn(x) ↓ if it does halt.

1. Basic objects of computability 10/79 Universality.

An fundamental result: there exists a , i.e., a

machine φu such that

φu(⟨n, x⟩) = φn(x)

1. Basic objects of computability 11/79 A set X ⊆ N is computable (or decidable) if there is a total computable function f such that { 0 if n ∈/ X f(n) = 1 if n ∈ X

E.g. Even numbers, prime numbers, numbers that are the sum of two

primes, etc.

Computable. sets

A lot of computability theory deals with the computability of subsets of N, i.e. decision problems.

1. Basic objects of computability 12/79 E.g. Even numbers, prime numbers, numbers that are the sum of two

primes, etc.

Computable. sets

A lot of computability theory deals with the computability of subsets of N, i.e. decision problems.

A set X ⊆ N is computable (or decidable) if there is a total computable function f such that { 0 if n ∈/ X f(n) = 1 if n ∈ X

1. Basic objects of computability 12/79 Computable. sets

A lot of computability theory deals with the computability of subsets of N, i.e. decision problems.

A set X ⊆ N is computable (or decidable) if there is a total computable function f such that { 0 if n ∈/ X f(n) = 1 if n ∈ X

E.g. Even numbers, prime numbers, numbers that are the sum of two

primes, etc.

1. Basic objects of computability 12/79 This is equivalent to say that there is a total function ￿g enumerating X (not necessarily in order), i.e. { } X = g(0), g(1), g(2),...

(indeed run all computations f(n) in parallel, and let g(k) be at stage k the last n found such that f(n) ↓).

Computably. enumerable sets

A set X ⊆ N is (or semi-decidable) if there exists a partial computable function f such that { ↑ if n ∈/ X f(n) = ↓ if n ∈ X

1. Basic objects of computability 13/79 Computably. enumerable sets

A set X ⊆ N is computably enumerable (or semi-decidable) if there exists a partial computable function f such that { ↑ if n ∈/ X f(n) = ↓ if n ∈ X

This is equivalent to say that there is a total function ￿g enumerating X (not necessarily in order), i.e. { } X = g(0), g(1), g(2),...

(indeed run all computations f(n) in parallel, and let g(k) be at stage k the last n found such that f(n) ↓).

1. Basic objects of computability 13/79 Conversely, if a set X is both c.e. and co-c.e. and we want to know whether n is in X it suffices to enumerate X and its complement, and return 1 if n appears in the enumeration of X, 0 if it appears in the enumeration of the complement.

Computable. vs computably enumerable

A set is co-c.e. if it is the complement of a c.e. set. Proposition A set X ⊆ N is computable if and only if it is c.e. and co-c.e. Indeed, if a set is computable, its complement is too, so it is c.e. and co-c.e.

1. Basic objects of computability 14/79 Computable. vs computably enumerable

A set is co-c.e. if it is the complement of a c.e. set. Proposition A set X ⊆ N is computable if and only if it is c.e. and co-c.e. Indeed, if a set is computable, its complement is too, so it is c.e. and co-c.e.

Conversely, if a set X is both c.e. and co-c.e. and we want to know whether n is in X it suffices to enumerate X and its complement, and return 1 if n appears in the enumeration of X, 0 if it appears in the enumeration of the complement.

1. Basic objects of computability 14/79 Theorem (Turing, 1936) The halting set is c.e. but not computable.

The fact that it is a c.e. set follows from the existence of a universal machine.

The. (1)

An example of c.e. set which is not computable: the halting set (or halting problem when we identify a set and the corresponding ):

K = {⟨e, x⟩ | φe(x) ↓}

1. Basic objects of computability 15/79 The. halting problem (1)

An example of c.e. set which is not computable: the halting set (or halting problem when we identify a set and the corresponding decision problem):

K = {⟨e, x⟩ | φe(x) ↓}

Theorem (Turing, 1936) The halting set is c.e. but not computable.

The fact that it is a c.e. set follows from the existence of a universal machine.

1. Basic objects of computability 15/79 Clearly f is (partial) computable as φe(e) ↓⇔ ⟨e, e⟩ ∈ K. So

f = φa for some a.

Now φa(a) ↓ if and only if φa(a) ↑, a contradiction.

The. halting problem (2)

The proof that K is not computable is a nice diagonal argument. Suppose K is computable. Then consider the function { 1 if φ (e) ↑ f(e) = e ↑ if φe(e) ↓

1. Basic objects of computability 16/79 Now φa(a) ↓ if and only if φa(a) ↑, a contradiction.

The. halting problem (2)

The proof that K is not computable is a nice diagonal argument. Suppose K is computable. Then consider the function { 1 if φ (e) ↑ f(e) = e ↑ if φe(e) ↓

Clearly f is (partial) computable as φe(e) ↓⇔ ⟨e, e⟩ ∈ K. So

f = φa for some a.

1. Basic objects of computability 16/79 The. halting problem (2)

The proof that K is not computable is a nice diagonal argument. Suppose K is computable. Then consider the function { 1 if φ (e) ↑ f(e) = e ↑ if φe(e) ↓

Clearly f is (partial) computable as φe(e) ↓⇔ ⟨e, e⟩ ∈ K. So

f = φa for some a.

Now φa(a) ↓ if and only if φa(a) ↑, a contradiction.

1. Basic objects of computability 16/79 Indeed, let X be a c.e. set. We know that X is the domain of a partial

computable function φe. Therefore:

n ∈ X ⇔ ⟨e, n⟩ ∈ K

Completeness. of the halting problem

Among c.e. sets, the halting problem is special: if we could compute it, then we could compute any c.e. set.

1. Basic objects of computability 17/79 Completeness. of the halting problem

Among c.e. sets, the halting problem is special: if we could compute it, then we could compute any c.e. set.

Indeed, let X be a c.e. set. We know that X is the domain of a partial

computable function φe. Therefore:

n ∈ X ⇔ ⟨e, n⟩ ∈ K

1. Basic objects of computability 17/79 In logic: fix a finite/countable signature L. The set of formulas over L can be coded by integers. Let then T be a logical theory (set axioms) which is computable. Now, the set:

{ξ | T ⊢ ξ}

is a c.e. set (try all possible proofs in parallel until one is found), but it is in general not computable.

Other. undecidable c.e. sets (1)

There are many other examples of c.e. sets that are non-computable.

1. Basic objects of computability 18/79 Other. undecidable c.e. sets (1)

There are many other examples of c.e. sets that are non-computable.

In logic: fix a finite/countable signature L. The set of formulas over L can be coded by integers. Let then T be a logical theory (set axioms) which is computable. Now, the set:

{ξ | T ⊢ ξ}

is a c.e. set (try all possible proofs in parallel until one is found), but it is in general not computable.

1. Basic objects of computability 18/79 We already know it is c.e. If PA were complete, then the complement of V would be {ξ | PA ⊢ ¬ξ}

which is also c.e. Therefore V would be computable.

Other. undecidable c.e. sets (2)

Indeed, consider the signature L = {0, 1, +, ×}, let PA be the axioms of Peano arithmetic. Gödel’s incompleteness theorem states that there is a formula ξ such that PA 0 ξ and PA 0 ¬ξ (i.e. PA is incomplete). We can sketch a proof of this using the halting problem. First, consider the set:

V = {ξ | PA ⊢ ξ}

1. Basic objects of computability 19/79 Other. undecidable c.e. sets (2)

Indeed, consider the signature L = {0, 1, +, ×}, let PA be the axioms of Peano arithmetic. Gödel’s incompleteness theorem states that there is a formula ξ such that PA 0 ξ and PA 0 ¬ξ (i.e. PA is incomplete). We can sketch a proof of this using the halting problem. First, consider the set:

V = {ξ | PA ⊢ ξ}

We already know it is c.e. If PA were complete, then the complement of V would be {ξ | PA ⊢ ¬ξ}

which is also c.e. Therefore V would be computable.

1. Basic objects of computability 19/79 Therefore for all e, x, the formula

θ(e, x) = “the machine of code e halts on x”

is true if and only if it can be proven in PA. If V were computable, it would then suffice to check whether θ(e, x) is in V. This technique would make then the halting problem computable. Therefore, V is not computable: it is at least as hard as the halting problem.

Other. undecidable c.e. sets (3)

Now, take a pair (e, x). If φe(x) halts, it can be proven: just exhibit the full computation (the difficult part: all of this this can be coded in arithmetic).

1. Basic objects of computability 20/79 Other. undecidable c.e. sets (3)

Now, take a pair (e, x). If φe(x) halts, it can be proven: just exhibit the full computation (the difficult part: all of this this can be coded in arithmetic). Therefore for all e, x, the formula

θ(e, x) = “the machine of code e halts on x”

is true if and only if it can be proven in PA. If V were computable, it would then suffice to check whether θ(e, x) is in V. This technique would make then the halting problem computable. Therefore, V is not computable: it is at least as hard as the halting problem.

1. Basic objects of computability 20/79 Other. undecidable c.e. sets (4)

Diophantine equation: polynomial equation with integer coefficients, e.g. a2b3 − 4b5cd2 + a3c3 = 0

for which we are looking for an integer-valued solution.

1. Basic objects of computability 21/79 Theorem (Davis, Putnam, Robinson, Matiyasevitch, 1950-1970) For every c.e. set X of integers, there exists a polynomial

P(x, y1,..., yk) such that ∈ ⇔ n X P(n, y1,..., yk) has a solution (in yi’s).

Therefore the set of solvable diophantine equations is at least as hard as any c.e. set, in particular the halting problem.

Other. undecidable c.e. sets (5)

Hilbert 10th problem: is there a method (algorithm) to decide whether a given equation has a solution?

1. Basic objects of computability 22/79 Therefore the set of solvable diophantine equations is at least as hard as any c.e. set, in particular the halting problem.

Other. undecidable c.e. sets (5)

Hilbert 10th problem: is there a method (algorithm) to decide whether a given equation has a solution?

Theorem (Davis, Putnam, Robinson, Matiyasevitch, 1950-1970) For every c.e. set X of integers, there exists a polynomial

P(x, y1,..., yk) such that ∈ ⇔ n X P(n, y1,..., yk) has a solution (in yi’s).

1. Basic objects of computability 22/79 Other. undecidable c.e. sets (5)

Hilbert 10th problem: is there a method (algorithm) to decide whether a given equation has a solution?

Theorem (Davis, Putnam, Robinson, Matiyasevitch, 1950-1970) For every c.e. set X of integers, there exists a polynomial

P(x, y1,..., yk) such that ∈ ⇔ n X P(n, y1,..., yk) has a solution (in yi’s).

Therefore the set of solvable diophantine equations is at least as hard as any c.e. set, in particular the halting problem.

1. Basic objects of computability 22/79 Other. undecidable c.e. sets (6) Tiling problem: given a finite set of tiles (squares with colors on edges), can we tile the plane with them (two adjacent tiles should have the same color on the side they share)?

1. Basic objects of computability 23/79 Other. undecidable c.e. sets (6) Tiling problem: given a finite set of tiles (squares with colors on edges), can we tile the plane with them (two adjacent tiles should have the same color on the side they share)?

1. Basic objects of computability 23/79 Other. undecidable c.e. sets (6) Tiling problem: given a finite set of tiles (squares with colors on edges), can we tile the plane with them (two adjacent tiles should have the same color on the side they share)?

1. Basic objects of computability 23/79 Proof: Turing machines can be encoded into tilesets (hard).

Other. undecidable c.e. sets (7)

The set of valid tilesets is co-c.e.: we can design a program that tries all tilesets in parallel and enumerate those that get blocked (indeed, if a tileset does not tile the plane, then for some n it cannot even tile an n × n square). Theorem (Berger) Deciding whether a tileset tiles the plane is at least as hard as the halting problem

1. Basic objects of computability 24/79 Other. undecidable c.e. sets (7)

The set of valid tilesets is co-c.e.: we can design a program that tries all tilesets in parallel and enumerate those that get blocked (indeed, if a tileset does not tile the plane, then for some n it cannot even tile an n × n square). Theorem (Berger) Deciding whether a tileset tiles the plane is at least as hard as the halting problem Proof: Turing machines can be encoded into tilesets (hard).

1. Basic objects of computability 24/79 We will come back to this in a moment...

Two. questions

• What did we actually mean by “the halting problem is at least as hard as any c.e. set”? • So far, we have seen that in the c.e. sets, there are some computable ones, and there are “maximally difficult” ones. Are there sets in between? Post problem, 1950’s

1. Basic objects of computability 25/79 Two. questions

• What did we actually mean by “the halting problem is at least as hard as any c.e. set”? • So far, we have seen that in the c.e. sets, there are some computable ones, and there are “maximally difficult” ones. Are there sets in between? Post problem, 1950’s

We will come back to this in a moment...

1. Basic objects of computability 25/79 This means that “most sets” are not computable and not even c.e. (for example one can get one with probability 1 by flipping a coin infinitely many times)

An example of a set that is not c.e.

{ | } Tot = i φi is total

Beyond. c.e. sets

Of course, since there are countably many Turing machines, there are only countable many c.e. sets.

1. Basic objects of computability 26/79 An example of a set that is not c.e.

{ | } Tot = i φi is total

Beyond. c.e. sets

Of course, since there are countably many Turing machines, there are only countable many c.e. sets.

This means that “most sets” are not computable and not even c.e. (for example one can get one with probability 1 by flipping a coin infinitely many times)

1. Basic objects of computability 26/79 Beyond. c.e. sets

Of course, since there are countably many Turing machines, there are only countable many c.e. sets.

This means that “most sets” are not computable and not even c.e. (for example one can get one with probability 1 by flipping a coin infinitely many times)

An example of a set that is not c.e.

{ | } Tot = i φi is total

1. Basic objects of computability 26/79 Rice’s theorem informally states that we cannot, looking at a Turing machine (or Java program, etc), make sure it has a given property. Theorem Let F be a subset of the partial computable functions from N to N. Then, either F is trivial (is empty or contains every function) or

{i | φi ∈ F} is not computable

Rice’s. theorem

One last important theorem for computable functions: Rice’s theorem.

1. Basic objects of computability 27/79 Theorem Let F be a subset of the partial computable functions from N to N. Then, either F is trivial (is empty or contains every function) or

{i | φi ∈ F} is not computable

Rice’s. theorem

One last important theorem for computable functions: Rice’s theorem.

Rice’s theorem informally states that we cannot, looking at a Turing machine (or Java program, etc), make sure it has a given property.

1. Basic objects of computability 27/79 Rice’s. theorem

One last important theorem for computable functions: Rice’s theorem.

Rice’s theorem informally states that we cannot, looking at a Turing machine (or Java program, etc), make sure it has a given property. Theorem Let F be a subset of the partial computable functions from N to N. Then, either F is trivial (is empty or contains every function) or

{i | φi ∈ F} is not computable

1. Basic objects of computability 27/79 2. Oracles, Turing reductions, Turing degrees The. Turing order

Intuition: we want to define an order on sets, where

A ≤ B

means that B has at least as much computational power as A, i.e. if we somehow could compute B we could also compute A.

2. Oracles, Turing reductions, Turing degrees 29/79 Oracle. An oracle Turing machine is a Turing machine which, on top of its working tape has access to a second tape containing an infinite information (sequence of bits). It can use this information to compute things.

oracle 1 1 1 0 0 1 1 0 1 0 0 1 0 tape (R)

q0

work 0 1 0 0 1 tape (R/W)

2. Oracles, Turing reductions, Turing degrees 30/79 Oracle. An oracle Turing machine is a Turing machine which, on top of its working tape has access to a second tape containing an infinite information (sequence of bits). It can use this information to compute things.

oracle 1 1 1 0 0 1 1 0 1 0 0 1 0 tape (R)

q0

work 0 1 0 0 1 tape (R/W)

2. Oracles, Turing reductions, Turing degrees 30/79 Oracle. An oracle Turing machine is a Turing machine which, on top of its working tape has access to a second tape containing an infinite information (sequence of bits). It can use this information to compute things.

oracle 1 1 1 0 0 1 1 0 1 0 0 1 0 tape (R)

q6

work 0 1 0 0 1 tape (R/W)

2. Oracles, Turing reductions, Turing degrees 30/79 Oracle. An oracle Turing machine is a Turing machine which, on top of its working tape has access to a second tape containing an infinite information (sequence of bits). It can use this information to compute things.

oracle 1 1 1 0 0 1 1 0 1 0 0 1 0 tape (R)

q7

work 0 0 0 0 1 tape (R/W)

2. Oracles, Turing reductions, Turing degrees 30/79 Oracle. An oracle Turing machine is a Turing machine which, on top of its working tape has access to a second tape containing an infinite information (sequence of bits). It can use this information to compute things.

oracle 1 1 1 0 0 1 1 0 1 0 0 1 0 tape (R)

q4

work 0 0 0 0 1 tape (R/W)

2. Oracles, Turing reductions, Turing degrees 30/79 Notation,. bis

A We denote by φi the function computed by the oracle Turing machine of code i when the sequence placed on the oracle tape is A.

2. Oracles, Turing reductions, Turing degrees 31/79 Universality,. bis

In this context, we still have universality: there is a single oracle

machine φu such that, for all e, x, A

A ⟨ ⟩ A φu ( e, x ) = φe (x)

2. Oracles, Turing reductions, Turing degrees 32/79 Turing.

We can now formalize “B is a least as strong as A” as follows.

Definition We say that a set A ⊆ N is Turing-reducible to a set B ⊆ N, noted B A ≤T B if there is an oracle function φ such that φ (n) = A(n) for all n.

2. Oracles, Turing reductions, Turing degrees 33/79 oracle 1 1 1 0 0 1 1 0 1 0 0 1 0 tape (R)

(no final state) q5

work 0 0 0 0 1 tape (R/W)

output (W) 0 0 1 0 1 tape

The. “output tape” viewpoint A slightly different (and more direct) way to look at Turing reductions:

identify sets with infinite binary sequences. Then A ≤T B if there is a Turing machine which, with A as an oracle, print B on some output tape (here the computation is infinite, no final state of the head; the work tape is just there for intermediate computations).

2. Oracles, Turing reductions, Turing degrees 34/79 The. “output tape” viewpoint A slightly different (and more direct) way to look at Turing reductions:

identify sets with infinite binary sequences. Then A ≤T B if there is a Turing machine which, with A as an oracle, print B on some output tape (here the computation is infinite, no final state of the head; the work tape is just there for intermediate computations).

oracle 1 1 1 0 0 1 1 0 1 0 0 1 0 tape (R)

(no final state) q5

work 0 0 0 0 1 tape (R/W)

output (W) 0 0 1 0 1 tape

2. Oracles, Turing reductions, Turing degrees 34/79 The. finite use property

An easy but fundamental property of oracle computations: suppose φA(n) is defined for some n. Then at the time the oracle Turing machine outputs φA(n), it has only read a finite initial segment A. Therefore any other extension C of this initial segment would have given the same result: φA(n) = φC(n). We call the length of this initial segment the use of the computation.

2. Oracles, Turing reductions, Turing degrees 35/79 Here, take the set Comp of computable sets (which is closed by Turing functions), add some non-computable element A, and take the closure Comp[A] under Turing functions (=everything that can ≤ ∈ be computed using A). Now X T A if and only if X Comp[A].

An. “algebraic closure” viewpoint

Yet another way to look at things: in algebra, take some ring/field R, add some external element α, and consider R[α] the closure (= everything that can be obtained from R and α) by standard operations +, ×.

2. Oracles, Turing reductions, Turing degrees 36/79 An. “algebraic closure” viewpoint

Yet another way to look at things: in algebra, take some ring/field R, add some external element α, and consider R[α] the closure (= everything that can be obtained from R and α) by standard operations +, ×.

Here, take the set Comp of computable sets (which is closed by Turing functions), add some non-computable element A, and take the closure Comp[A] under Turing functions (=everything that can ≤ ∈ be computed using A). Now X T A if and only if X Comp[A].

2. Oracles, Turing reductions, Turing degrees 36/79 • it is reflexive: A ≤T A

• it is transitive: A ≤T B and B ≤T C imply A ≤T C

• it is not anti-symmetric: one can have A ≠ B and yet A ≤T B

and B ≤T A (for example, take any non-empty A and remove only one element, then we get B ≠ A but with the same computing power).

≤ Elementary. properties of T

The Turing reduction is a partial pre-order, i.e.

2. Oracles, Turing reductions, Turing degrees 37/79 • it is transitive: A ≤T B and B ≤T C imply A ≤T C

• it is not anti-symmetric: one can have A ≠ B and yet A ≤T B

and B ≤T A (for example, take any non-empty A and remove only one element, then we get B ≠ A but with the same computing power).

≤ Elementary. properties of T

The Turing reduction is a partial pre-order, i.e.

• it is reflexive: A ≤T A

2. Oracles, Turing reductions, Turing degrees 37/79 • it is not anti-symmetric: one can have A ≠ B and yet A ≤T B

and B ≤T A (for example, take any non-empty A and remove only one element, then we get B ≠ A but with the same computing power).

≤ Elementary. properties of T

The Turing reduction is a partial pre-order, i.e.

• it is reflexive: A ≤T A

• it is transitive: A ≤T B and B ≤T C imply A ≤T C

2. Oracles, Turing reductions, Turing degrees 37/79 ≤ Elementary. properties of T

The Turing reduction is a partial pre-order, i.e.

• it is reflexive: A ≤T A

• it is transitive: A ≤T B and B ≤T C imply A ≤T C

• it is not anti-symmetric: one can have A ≠ B and yet A ≤T B

and B ≤T A (for example, take any non-empty A and remove only one element, then we get B ≠ A but with the same computing power).

2. Oracles, Turing reductions, Turing degrees 37/79 The of a set A is its equivalence class under ≡T. Denote P(N) D = ≡T the set of Turing degrees.

Now ≤T induces an order on D.

Turing. degrees

We say that A and B are Turing-equivalent if A ≤T B and B ≤T A,

which we denote A ≡T B.

2. Oracles, Turing reductions, Turing degrees 38/79 Denote P(N) D = ≡T the set of Turing degrees.

Now ≤T induces an order on D.

Turing. degrees

We say that A and B are Turing-equivalent if A ≤T B and B ≤T A,

which we denote A ≡T B.

The Turing degree of a set A is its equivalence class under ≡T.

2. Oracles, Turing reductions, Turing degrees 38/79 Now ≤T induces an order on D.

Turing. degrees

We say that A and B are Turing-equivalent if A ≤T B and B ≤T A,

which we denote A ≡T B.

The Turing degree of a set A is its equivalence class under ≡T. Denote P(N) D = ≡T the set of Turing degrees.

2. Oracles, Turing reductions, Turing degrees 38/79 Turing. degrees

We say that A and B are Turing-equivalent if A ≤T B and B ≤T A,

which we denote A ≡T B.

The Turing degree of a set A is its equivalence class under ≡T. Denote P(N) D = ≡T the set of Turing degrees.

Now ≤T induces an order on D.

2. Oracles, Turing reductions, Turing degrees 38/79 C.e.. Turing degrees

One can also look at the restriction of ≤T to c.e. sets. We denote

{X | X c.e. set} E = ≡T

the set of c.e. Turing degrees.

2. Oracles, Turing reductions, Turing degrees 39/79 Structure. of the Turing degrees

One of the main research topics of computability is the study of

(D, ≤T) and (E, ≤T). In the rest of this talk, we shall explore some of their fundamental properties.

2. Oracles, Turing reductions, Turing degrees 40/79 On the other hand, there are only countably many c.e. sets, so E is at best countable, possibly even finite (it would be 2 if Post’s conjecture were false). In fact, we will see that

Card(E) = ℵ0

≤ ≤ How. large are (D, T) and (E, T)?

Remember: there are only countably many Turing machines, so for a

given set X, there are only countably many Y ≤T X, and a fortiori

countably many elements Y ≡T X. Therefore:

ℵ Card(D) = 2 0

2. Oracles, Turing reductions, Turing degrees 41/79 ≤ ≤ How. large are (D, T) and (E, T)?

Remember: there are only countably many Turing machines, so for a

given set X, there are only countably many Y ≤T X, and a fortiori

countably many elements Y ≡T X. Therefore:

ℵ Card(D) = 2 0

On the other hand, there are only countably many c.e. sets, so E is at best countable, possibly even finite (it would be 2 if Post’s conjecture were false). In fact, we will see that

Card(E) = ℵ0

2. Oracles, Turing reductions, Turing degrees 41/79 The. zero element

An easy remark: if a set A is computable, it is computable with the help of any oracle (it suffices to ignore the oracle!), so for all X,

A ≤T X. This shows: • All computable sets have the same degree, sometimes noted 0

• Their degree is the minimum element of (D, ≤T) and (E, ≤T).

2. Oracles, Turing reductions, Turing degrees 42/79 ∗ Example: The positive integers N , with the divisibility order. The join is the lcm and the meet is the gcd.

D. and E are upper-semilattices (1)

Recall that a lattice is an ordered set (L, ≤) such that for any x, y, there exists a least upper bound (or join) of x and y,noted x ∨ y, and a greatest lower bound (or meet) noted x ∧ y.

2. Oracles, Turing reductions, Turing degrees 43/79 D. and E are upper-semilattices (1)

Recall that a lattice is an ordered set (L, ≤) such that for any x, y, there exists a least upper bound (or join) of x and y,noted x ∨ y, and a greatest lower bound (or meet) noted x ∧ y.

∗ Example: The positive integers N , with the divisibility order. The join is the lcm and the meet is the gcd.

2. Oracles, Turing reductions, Turing degrees 43/79 1 0 1 0 1 1 0 1 1 1 1 0 A

0 0 0 1 1 0 1 1 1 0 0 0 B

1 0 0 0 1 0 0 1 1 1 1 0 A∨B

The join is easy to visualize:

D. and E are upper-semilattices (2)

Proposition For every pair A, B of sets, A and B have a join A ∨ B. They might not have a meet. We say that they are upper-semilattice.

2. Oracles, Turing reductions, Turing degrees 44/79 1 0 1 0 1 1 0 1 1 1 1 0 A

0 0 0 1 1 0 1 1 1 0 0 0 B

1 0 0 0 1 0 0 1 1 1 1 0 A∨B

D. and E are upper-semilattices (2)

Proposition For every pair A, B of sets, A and B have a join A ∨ B. They might not have a meet. We say that they are upper-semilattice.

The join is easy to visualize:

2. Oracles, Turing reductions, Turing degrees 44/79 D. and E are upper-semilattices (2)

Proposition For every pair A, B of sets, A and B have a join A ∨ B. They might not have a meet. We say that they are upper-semilattice.

The join is easy to visualize:

1 0 1 0 1 1 0 1 1 1 1 0 A

0 0 0 1 1 0 1 1 1 0 0 0 B

1 0 0 0 1 0 0 1 1 1 1 0 A∨B

2. Oracles, Turing reductions, Turing degrees 44/79 Therefore, it makes sense to talk about the jump of a degree.

Relativizing. the halting problem (1)

Having fixed a set A, we can relativize the halting problem to A, i.e. consider the set { } ⟨i, x⟩ | φA(i, x) ↓

′ We denote this set by A and call it the jump of A.

′ The jump operator A 7→ A is order-preserving: if A ≤T B then ′ ′ ′ ′ A ≤ B . A fortiori, if A ≡T B, then A ≡T B .

2. Oracles, Turing reductions, Turing degrees 45/79 Relativizing. the halting problem (1)

Having fixed a set A, we can relativize the halting problem to A, i.e. consider the set { } ⟨i, x⟩ | φA(i, x) ↓

′ We denote this set by A and call it the jump of A.

′ The jump operator A 7→ A is order-preserving: if A ≤T B then ′ ′ ′ ′ A ≤ B . A fortiori, if A ≡T B, then A ≡T B .

Therefore, it makes sense to talk about the jump of a degree.

2. Oracles, Turing reductions, Turing degrees 45/79 Relativizing. the halting problem (2)

The jump always gives a higher degree:

Proposition ′ For every set A, we have A

Proof. ′ To see that A ≤T A , use the machine that on input n asks the oracle ′ whether it contains n. Then the proof that A ̸≥T A is the same as before.

2. Oracles, Turing reductions, Turing degrees 46/79 Relativizing. the halting problem (3)

Corollary

(D, ≤T) has no largest element. ′ Note: (E, ≤T) does have a largest element: 0 .

2. Oracles, Turing reductions, Turing degrees 47/79 We can then iterate it:

′ ′′ (n) ∅

(n) We say that A is arithmetical if A ≤T ∅ for some n

The. (1)

′ Using this new notation: ∅ is the halting problem.

2. Oracles, Turing reductions, Turing degrees 48/79 (n) We say that A is arithmetical if A ≤T ∅ for some n

The. arithmetical hierarchy (1)

′ Using this new notation: ∅ is the halting problem.

We can then iterate it:

′ ′′ (n) ∅

2. Oracles, Turing reductions, Turing degrees 48/79 The. arithmetical hierarchy (1)

′ Using this new notation: ∅ is the halting problem.

We can then iterate it:

′ ′′ (n) ∅

(n) We say that A is arithmetical if A ≤T ∅ for some n

2. Oracles, Turing reductions, Turing degrees 48/79 0 A set A is Πn if it is of type { }

A = y | ∀x1∃x2∀x3 ... Qxn θ(x1, x2,..., xn, y)

with n alternations of quantifiers and θ a computable predicate.

0 0 Fact: c-e. = Σ1 and co-c.e. = Π1.

The. arithmetical hierarchy (2)

The logical interpretation: 0 A set A is Σn if it is of type { }

A = y | ∃x1∀x2∃x3 ... Qxn θ(x1, x2,..., xn, y)

with n alternations of quantifiers and θ a computable predicate.

2. Oracles, Turing reductions, Turing degrees 49/79 0 0 Fact: c-e. = Σ1 and co-c.e. = Π1.

The. arithmetical hierarchy (2)

The logical interpretation: 0 A set A is Σn if it is of type { }

A = y | ∃x1∀x2∃x3 ... Qxn θ(x1, x2,..., xn, y)

with n alternations of quantifiers and θ a computable predicate.

0 A set A is Πn if it is of type { }

A = y | ∀x1∃x2∀x3 ... Qxn θ(x1, x2,..., xn, y)

with n alternations of quantifiers and θ a computable predicate.

2. Oracles, Turing reductions, Turing degrees 49/79 The. arithmetical hierarchy (2)

The logical interpretation: 0 A set A is Σn if it is of type { }

A = y | ∃x1∀x2∃x3 ... Qxn θ(x1, x2,..., xn, y)

with n alternations of quantifiers and θ a computable predicate.

0 A set A is Πn if it is of type { }

A = y | ∀x1∃x2∀x3 ... Qxn θ(x1, x2,..., xn, y)

with n alternations of quantifiers and θ a computable predicate.

0 0 Fact: c-e. = Σ1 and co-c.e. = Π1.

2. Oracles, Turing reductions, Turing degrees 49/79 Corollary ∪ ∪ 0 0 ARITH = n Σn = n Πn

The. arithmetical hierarchy (3)

Proposition ≤ ∅(n) 0 0 A set is T if and only if it is both Σn+1 and Πn+1.

2. Oracles, Turing reductions, Turing degrees 50/79 The. arithmetical hierarchy (3)

Proposition ≤ ∅(n) 0 0 A set is T if and only if it is both Σn+1 and Πn+1.

Corollary ∪ ∪ 0 0 ARITH = n Σn = n Πn

2. Oracles, Turing reductions, Turing degrees 50/79 ∅(ω) = {⟨i, n⟩ | i ∈ ∅(n)}

( )′ ( )′ ∅(ω+1) = ∅ω ; ∅(ω+2) = ∅(ω+1) ;…

· ∅(ω 2) = {⟨i, n⟩ | i ∈ ∅(ω+n)}

2 · ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω n)}

ω n ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω )}

1 etc etc. We can keep going until ωCK (smallest non-computable ordinal): this is the hyperarithmetical hierarchy.

The. hyperarithmetical hierarchy

We can actually keep going:

2. Oracles, Turing reductions, Turing degrees 51/79 ( )′ ( )′ ∅(ω+1) = ∅ω ; ∅(ω+2) = ∅(ω+1) ;…

· ∅(ω 2) = {⟨i, n⟩ | i ∈ ∅(ω+n)}

2 · ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω n)}

ω n ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω )}

1 etc etc. We can keep going until ωCK (smallest non-computable ordinal): this is the hyperarithmetical hierarchy.

The. hyperarithmetical hierarchy

We can actually keep going:

∅(ω) = {⟨i, n⟩ | i ∈ ∅(n)}

2. Oracles, Turing reductions, Turing degrees 51/79 · ∅(ω 2) = {⟨i, n⟩ | i ∈ ∅(ω+n)}

2 · ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω n)}

ω n ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω )}

1 etc etc. We can keep going until ωCK (smallest non-computable ordinal): this is the hyperarithmetical hierarchy.

The. hyperarithmetical hierarchy

We can actually keep going:

∅(ω) = {⟨i, n⟩ | i ∈ ∅(n)}

( )′ ( )′ ∅(ω+1) = ∅ω ; ∅(ω+2) = ∅(ω+1) ;…

2. Oracles, Turing reductions, Turing degrees 51/79 2 · ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω n)}

ω n ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω )}

1 etc etc. We can keep going until ωCK (smallest non-computable ordinal): this is the hyperarithmetical hierarchy.

The. hyperarithmetical hierarchy

We can actually keep going:

∅(ω) = {⟨i, n⟩ | i ∈ ∅(n)}

( )′ ( )′ ∅(ω+1) = ∅ω ; ∅(ω+2) = ∅(ω+1) ;…

· ∅(ω 2) = {⟨i, n⟩ | i ∈ ∅(ω+n)}

2. Oracles, Turing reductions, Turing degrees 51/79 ω n ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω )}

1 etc etc. We can keep going until ωCK (smallest non-computable ordinal): this is the hyperarithmetical hierarchy.

The. hyperarithmetical hierarchy

We can actually keep going:

∅(ω) = {⟨i, n⟩ | i ∈ ∅(n)}

( )′ ( )′ ∅(ω+1) = ∅ω ; ∅(ω+2) = ∅(ω+1) ;…

· ∅(ω 2) = {⟨i, n⟩ | i ∈ ∅(ω+n)}

2 · ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω n)}

2. Oracles, Turing reductions, Turing degrees 51/79 1 etc etc. We can keep going until ωCK (smallest non-computable ordinal): this is the hyperarithmetical hierarchy.

The. hyperarithmetical hierarchy

We can actually keep going:

∅(ω) = {⟨i, n⟩ | i ∈ ∅(n)}

( )′ ( )′ ∅(ω+1) = ∅ω ; ∅(ω+2) = ∅(ω+1) ;…

· ∅(ω 2) = {⟨i, n⟩ | i ∈ ∅(ω+n)}

2 · ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω n)}

ω n ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω )}

2. Oracles, Turing reductions, Turing degrees 51/79 The. hyperarithmetical hierarchy

We can actually keep going:

∅(ω) = {⟨i, n⟩ | i ∈ ∅(n)}

( )′ ( )′ ∅(ω+1) = ∅ω ; ∅(ω+2) = ∅(ω+1) ;…

· ∅(ω 2) = {⟨i, n⟩ | i ∈ ∅(ω+n)}

2 · ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω n)}

ω n ∅(ω ) = {⟨i, n⟩ | i ∈ ∅(ω )}

1 etc etc. We can keep going until ωCK (smallest non-computable ordinal): this is the hyperarithmetical hierarchy.

2. Oracles, Turing reductions, Turing degrees 51/79 More. on the jump operator (1)

Theorem (jump inversion) The following are equivalent: ′ (i) A ≥T ∅ ′ (ii) A ≡T B for some B.

2. Oracles, Turing reductions, Turing degrees 52/79 More. on the jump operator (2)

Theorem

The jump operator is not strictly increasing: one can have A T ∅ such that A ≡T ∅ ′ ′ ′′ (ii) There is A

2. Oracles, Turing reductions, Turing degrees 53/79 Theorem (Friedberg-Muchnik) There is a pair of such c.e. degrees A, B.

The proof is difficult and involves a priority argument.

Incomparable. Turing degrees

Recall Post’s problem: are there incomparable c.e. degrees? (= c.e.

degrees A, B such that A ̸≤T B and B ̸≤T A).

2. Oracles, Turing reductions, Turing degrees 54/79 The proof is difficult and involves a priority argument.

Incomparable. Turing degrees

Recall Post’s problem: are there incomparable c.e. degrees? (= c.e.

degrees A, B such that A ̸≤T B and B ̸≤T A).

Theorem (Friedberg-Muchnik) There is a pair of such c.e. degrees A, B.

2. Oracles, Turing reductions, Turing degrees 54/79 Incomparable. Turing degrees

Recall Post’s problem: are there incomparable c.e. degrees? (= c.e.

degrees A, B such that A ̸≤T B and B ̸≤T A).

Theorem (Friedberg-Muchnik) There is a pair of such c.e. degrees A, B.

The proof is difficult and involves a priority argument.

2. Oracles, Turing reductions, Turing degrees 54/79 We proceed by diagonalization. We have infinitely many requirements to satisfy: for all i,

R A ̸ R′ B ̸ i : φi = B i : φi = A

Note: there are two ways one can satisfy a requirement. For R A example, i is satisfied if for some n, φi (n) is defined but different A from B(n) or if φi (n) is undefined for some n.

Incomparable. degrees (1)

If we only want to construct incomparable degrees (not necessarily c.e.), the proof becomes easier.

2. Oracles, Turing reductions, Turing degrees 55/79 Note: there are two ways one can satisfy a requirement. For R A example, i is satisfied if for some n, φi (n) is defined but different A from B(n) or if φi (n) is undefined for some n.

Incomparable. degrees (1)

If we only want to construct incomparable degrees (not necessarily c.e.), the proof becomes easier. We proceed by diagonalization. We have infinitely many requirements to satisfy: for all i,

R A ̸ R′ B ̸ i : φi = B i : φi = A

2. Oracles, Turing reductions, Turing degrees 55/79 Incomparable. degrees (1)

If we only want to construct incomparable degrees (not necessarily c.e.), the proof becomes easier. We proceed by diagonalization. We have infinitely many requirements to satisfy: for all i,

R A ̸ R′ B ̸ i : φi = B i : φi = A

Note: there are two ways one can satisfy a requirement. For R A example, i is satisfied if for some n, φi (n) is defined but different A from B(n) or if φi (n) is undefined for some n.

2. Oracles, Turing reductions, Turing degrees 55/79 Incomparable. degrees (2)

We now construct A, B incomparable by induction. We see A and B as infinite binary sequences and construct them by starting with the empty string and adding some finite number of bits at each stage. Suppose we have already constructed a finite initial segment σ of A R A ̸ and τ of B, and we now want to satisfy a requirement i : φi = B.

2. Oracles, Turing reductions, Turing degrees 56/79 ′ ′ Case 1: There exists an extension σ of σ such that φσ (n) is defined. ′ ′ Now extend σ to σ . Then, if φσ (n) = 0, set B(n) = 1 (i.e. ′ extend τ with a 1) and if φσ (n) = 1, set B(n) = 0 (i.e. extend τ with a 0). We have ensure that φA(n) ≠ B(n) no matter how we extend σ and τ in the rest of the construction.

Case 2: There is no such extension. Then there is nothing to worry about! No matter how we extend σ to A, we will have φA(n) ↑. Then extend σ and τ by, say, one bit.

Incomparable. degrees (3)

Let n be the position of the first bit of B not defined yet. There are two cases:

2. Oracles, Turing reductions, Turing degrees 57/79 Case 2: There is no such extension. Then there is nothing to worry about! No matter how we extend σ to A, we will have φA(n) ↑. Then extend σ and τ by, say, one bit.

Incomparable. degrees (3)

Let n be the position of the first bit of B not defined yet. There are two cases: ′ ′ Case 1: There exists an extension σ of σ such that φσ (n) is defined. ′ ′ Now extend σ to σ . Then, if φσ (n) = 0, set B(n) = 1 (i.e. ′ extend τ with a 1) and if φσ (n) = 1, set B(n) = 0 (i.e. extend τ with a 0). We have ensure that φA(n) ≠ B(n) no matter how we extend σ and τ in the rest of the construction.

2. Oracles, Turing reductions, Turing degrees 57/79 Incomparable. degrees (3)

Let n be the position of the first bit of B not defined yet. There are two cases: ′ ′ Case 1: There exists an extension σ of σ such that φσ (n) is defined. ′ ′ Now extend σ to σ . Then, if φσ (n) = 0, set B(n) = 1 (i.e. ′ extend τ with a 1) and if φσ (n) = 1, set B(n) = 0 (i.e. extend τ with a 0). We have ensure that φA(n) ≠ B(n) no matter how we extend σ and τ in the rest of the construction.

Case 2: There is no such extension. Then there is nothing to worry about! No matter how we extend σ to A, we will have φA(n) ↑. Then extend σ and τ by, say, one bit.

2. Oracles, Turing reductions, Turing degrees 57/79 Incomparable. degrees (4)

1 0 0 1 A

0 1 B

Case (2)

2. Oracles, Turing reductions, Turing degrees 58/79 Incomparable. degrees (4)

1 0 0 1 A

φA i

?

We want these to be ≠

0 1 ? B

Case (2)

2. Oracles, Turing reductions, Turing degrees 58/79 Incomparable. degrees (4)

1 0 0 1 0 1 0 0 1 1 1 A

φA i

0

0 1 1 B

Case (1)

2. Oracles, Turing reductions, Turing degrees 58/79 Incomparable. degrees (4)

1 0 0 1 0 * * * * * * * A

φA i

!

0 1 0 B

Case (2)

2. Oracles, Turing reductions, Turing degrees 58/79 This allows us to perform a diagonalization, ensuring the R R′ requirements i and i for all i.

Incomparable. degrees (5)

And we can do the same in the other direction: try to find an ′ τ′ ↓ extension τ of τ and such that φj (m) and then pick this extension, and extend σ by one bit.

2. Oracles, Turing reductions, Turing degrees 59/79 Incomparable. degrees (5)

And we can do the same in the other direction: try to find an ′ τ′ ↓ extension τ of τ and such that φj (m) and then pick this extension, and extend σ by one bit.

This allows us to perform a diagonalization, ensuring the R R′ requirements i and i for all i.

2. Oracles, Turing reductions, Turing degrees 59/79 Incomparable. degrees (6)

In fact, in this particular construction (without asking that A and B be c.e.), we could have taken a fixed (non-computable) A, and only construct B. Therefore, we have proven:

Theorem For every non- A, there is a set B whose Turing degree is incomparable with that of A.

2. Oracles, Turing reductions, Turing degrees 60/79 The rest of the construction is a “dynamical version” of the proof we just saw. Indeed, one cannot computably distinguish between case (1) and case (2). We cannot afford to wait for functions to converge.

Therefore, we try to satisfy all requirements in parallel, giving a priority order to requirements, e.g.:

R R′ R R′ 0 > 0 > 1 > 1 > . . .

Incomparable. degrees (7)

For the construction of incomparable c.e. set, we cannot fix A or B ′ (at this point, we only know the existence of two degrees, 0 and 0 ). And these are comparable with every c.e. degree.

2. Oracles, Turing reductions, Turing degrees 61/79 Therefore, we try to satisfy all requirements in parallel, giving a priority order to requirements, e.g.:

R R′ R R′ 0 > 0 > 1 > 1 > . . .

Incomparable. degrees (7)

For the construction of incomparable c.e. set, we cannot fix A or B ′ (at this point, we only know the existence of two degrees, 0 and 0 ). And these are comparable with every c.e. degree.

The rest of the construction is a “dynamical version” of the proof we just saw. Indeed, one cannot computably distinguish between case (1) and case (2). We cannot afford to wait for functions to converge.

2. Oracles, Turing reductions, Turing degrees 61/79 Incomparable. degrees (7)

For the construction of incomparable c.e. set, we cannot fix A or B ′ (at this point, we only know the existence of two degrees, 0 and 0 ). And these are comparable with every c.e. degree.

The rest of the construction is a “dynamical version” of the proof we just saw. Indeed, one cannot computably distinguish between case (1) and case (2). We cannot afford to wait for functions to converge.

Therefore, we try to satisfy all requirements in parallel, giving a priority order to requirements, e.g.:

R R′ R R′ 0 > 0 > 1 > 1 > . . .

2. Oracles, Turing reductions, Turing degrees 61/79 We then give priority to the action that satisfy the most important requirement, and restart the procedure for the destroyed (we say injured) requirement. All we need to make sure is that at some each requirement will be satisfied and will stop bothering the lower-level ones.

Incomparable. degrees (8)

Conflicts can then arise: say we would like to enumerate some

element n in our set A to satisfy a requirement Ri, but this may R′ destroy our construction for some other requirement, say, j .

2. Oracles, Turing reductions, Turing degrees 62/79 Incomparable. degrees (8)

Conflicts can then arise: say we would like to enumerate some

element n in our set A to satisfy a requirement Ri, but this may R′ destroy our construction for some other requirement, say, j .

We then give priority to the action that satisfy the most important requirement, and restart the procedure for the destroyed (we say injured) requirement. All we need to make sure is that at some each requirement will be satisfied and will stop bothering the lower-level ones.

2. Oracles, Turing reductions, Turing degrees 62/79 In particular, this proves: Theorem

The partial order (E, ≤T) is dense: if C

Indeed if A and B are incomparable and between C and D, they must be strictly in between. Thus, E is infinite (but countable).

Density. of the c.e. degrees

Now, take any two c.e. degrees C and D such that C

2. Oracles, Turing reductions, Turing degrees 63/79 Density. of the c.e. degrees

Now, take any two c.e. degrees C and D such that C

In particular, this proves: Theorem

The partial order (E, ≤T) is dense: if C

Indeed if A and B are incomparable and between C and D, they must be strictly in between. Thus, E is infinite (but countable).

2. Oracles, Turing reductions, Turing degrees 63/79 Theorem

There exists a c.e. set A such that A >T ∅ and A is low.

Theorem ′ There exists a c.e. set A such that A

The proofs involves priority arguments.

Low. and high degrees in E

′ ′ ′ ′′ Recall that A is low if A ≡T ∅ and high if A ≥T ∅

2. Oracles, Turing reductions, Turing degrees 64/79 Theorem ′ There exists a c.e. set A such that A

The proofs involves priority arguments.

Low. and high degrees in E

′ ′ ′ ′′ Recall that A is low if A ≡T ∅ and high if A ≥T ∅

Theorem

There exists a c.e. set A such that A >T ∅ and A is low.

2. Oracles, Turing reductions, Turing degrees 64/79 The proofs involves priority arguments.

Low. and high degrees in E

′ ′ ′ ′′ Recall that A is low if A ≡T ∅ and high if A ≥T ∅

Theorem

There exists a c.e. set A such that A >T ∅ and A is low.

Theorem ′ There exists a c.e. set A such that A

2. Oracles, Turing reductions, Turing degrees 64/79 Low. and high degrees in E

′ ′ ′ ′′ Recall that A is low if A ≡T ∅ and high if A ≥T ∅

Theorem

There exists a c.e. set A such that A >T ∅ and A is low.

Theorem ′ There exists a c.e. set A such that A

The proofs involves priority arguments.

2. Oracles, Turing reductions, Turing degrees 64/79 A controversial (but in my opinion fundamental) question: Is there a natural example of an intermediary c.e. set (not computable but not as hard as the halting problem)? Even better, a low one? a high one?

The. quest for natural examples

In the first part of this talk, we have seen a number of non-computable c.e. sets that arise naturally in other fields of mathematics and computer science. All of them were as hard as the halting problem.

2. Oracles, Turing reductions, Turing degrees 65/79 The. quest for natural examples

In the first part of this talk, we have seen a number of non-computable c.e. sets that arise naturally in other fields of mathematics and computer science. All of them were as hard as the halting problem.

A controversial (but in my opinion fundamental) question: Is there a natural example of an intermediary c.e. set (not computable but not as hard as the halting problem)? Even better, a low one? a high one?

2. Oracles, Turing reductions, Turing degrees 65/79 Theorem There exists a non-computable set A of minimal Turing degree, i.e. such that there is no set strictly Turing-between ∅ and A.

≤ Non-density. of (D, T)

Unlike (E, ≤T), (D, ≤T) is not dense. In fact:

2. Oracles, Turing reductions, Turing degrees 66/79 ≤ Non-density. of (D, T)

Unlike (E, ≤T), (D, ≤T) is not dense. In fact:

Theorem There exists a non-computable set A of minimal Turing degree, i.e. such that there is no set strictly Turing-between ∅ and A.

2. Oracles, Turing reductions, Turing degrees 66/79 Minimal. degrees (1)

We give a proof sketch. We will need to use the following type of trees: • perfect infinite binary trees: every node has exactly 2 children • labels: each node is labeled by a string

• compatibility: if x is a node of label Lx, and y, z are the two

children of x, then Ly and Lz are strict extensions of Lx, and they are incompatible (none is a prefix of the other) • computability: knowing the label of a node, we can compute the labels of its children

2. Oracles, Turing reductions, Turing degrees 67/79 Minimal. degrees (2) Example:

0

00 01

0000 001 010 011

00000 00001 0010 0011 0100 01000 01101 01111

2. Oracles, Turing reductions, Turing degrees 68/79 For a tree T, we denote by [T] the set of binary sequences obtained this way (note: this is a closed set).

Minimal. degrees (3)

Now, if we consider an infinite descending path in the tree, the labels form an increasing sequence:

σ1 ⊂ σ2 ⊂ σ3 ...

so they uniquely define an infinite binary sequence.

2. Oracles, Turing reductions, Turing degrees 69/79 Minimal. degrees (3)

Now, if we consider an infinite descending path in the tree, the labels form an increasing sequence:

σ1 ⊂ σ2 ⊂ σ3 ...

so they uniquely define an infinite binary sequence.

For a tree T, we denote by [T] the set of binary sequences obtained this way (note: this is a closed set).

2. Oracles, Turing reductions, Turing degrees 69/79 Minimal. degrees (4)

λ

0 1

00 01 10 11

000 001 010 011 100 101 110 111

Initial situation

2. Oracles, Turing reductions, Turing degrees 70/79 Of course this might not be the case, so we may need to trim the tree.

Minimal. degrees (5)

Now we want to diagonalize (again). Suppose we have a tree T and

an oracle function φi. We want to ensure that for each A ∈ [T], • X either φi is not a set • X or φi is computable • X or knowing φi is enough to compute X

2. Oracles, Turing reductions, Turing degrees 71/79 Minimal. degrees (5)

Now we want to diagonalize (again). Suppose we have a tree T and

an oracle function φi. We want to ensure that for each A ∈ [T], • X either φi is not a set • X or φi is computable • X or knowing φi is enough to compute X

Of course this might not be the case, so we may need to trim the tree.

2. Oracles, Turing reductions, Turing degrees 71/79 Case 1: For every node x in the tree, there are two descendents y, z of x σ τ of labels σ and τ are such that φi and φi conflict (for some n, σ τ φ (n) and φi (n) are defined and different).

Case 2: The contrary: there exists a node x such that no descendent

of x have conflicting labels (for φi).

Minimal. degrees (6)

We do this by distinguishing two cases:

2. Oracles, Turing reductions, Turing degrees 72/79 Case 2: The contrary: there exists a node x such that no descendent

of x have conflicting labels (for φi).

Minimal. degrees (6)

We do this by distinguishing two cases:

Case 1: For every node x in the tree, there are two descendents y, z of x σ τ of labels σ and τ are such that φi and φi conflict (for some n, σ τ φ (n) and φi (n) are defined and different).

2. Oracles, Turing reductions, Turing degrees 72/79 Minimal. degrees (6)

We do this by distinguishing two cases:

Case 1: For every node x in the tree, there are two descendents y, z of x σ τ of labels σ and τ are such that φi and φi conflict (for some n, σ τ φ (n) and φi (n) are defined and different).

Case 2: The contrary: there exists a node x such that no descendent

of x have conflicting labels (for φi).

2. Oracles, Turing reductions, Turing degrees 72/79 Minimal. degrees (7)

In case (1), we modify the tree: start at the root, find (computably) two conflicting descendents: they become the children. Then inductively repeat the process on these children, etc.

2. Oracles, Turing reductions, Turing degrees 73/79 Minimal. degrees (8)

0

00 01

0000 001 010 011

00000 00001 0010 0011 0100 01000 01101 01111

trying φi : case (1)

2. Oracles, Turing reductions, Turing degrees 74/79 Minimal. degrees (8)

0

00 01

0000 001 010 011

00000 00001 0010 0011 0100 01000 01101 01111

trying φi : case (1)

2. Oracles, Turing reductions, Turing degrees 74/79 Minimal. degrees (8)

0

00 01

0000 001 010 011

00000 00001 0010 0011 0100 01000 01101 01111

trying φi : case (1)

2. Oracles, Turing reductions, Turing degrees 74/79 Minimal. degrees (8)

0

01

001 010

0011

trying φi : case (1)

2. Oracles, Turing reductions, Turing degrees 74/79 Minimal. degrees (9)

′ ∈ ′ A Now we get a new tree T such that for all A [T ], if φi is a set B, then, looking at B we can reconstruct A by looking at the choices ′ that were made during the construction of T .

2. Oracles, Turing reductions, Turing degrees 75/79 ′ ′ Then the new tree T has the property that all A ∈ [T ] agree on the A value of φi (n) or are undefined, for all n. Then, there exists a single ∈ ′ A A set B such that for all A [T ], either φi is not a set, or φi = B. Note that such a B must be computable.

Minimal. degrees (10)

In case (1), where there is a node with no conflicting descendents, we just take this node as our new root.

2. Oracles, Turing reductions, Turing degrees 76/79 Minimal. degrees (10)

In case (1), where there is a node with no conflicting descendents, we just take this node as our new root.

′ ′ Then the new tree T has the property that all A ∈ [T ] agree on the A value of φi (n) or are undefined, for all n. Then, there exists a single ∈ ′ A A set B such that for all A [T ], either φi is not a set, or φi = B. Note that such a B must be computable.

2. Oracles, Turing reductions, Turing degrees 76/79 Minimal. degrees (11)

0

00 01

0000 001 010 011

00000 00001 0010 0011 0100 01000 01101 01111

trying φi : case (2)

2. Oracles, Turing reductions, Turing degrees 77/79 Minimal. degrees (11)

001

0010 0011

trying φi : case (2)

2. Oracles, Turing reductions, Turing degrees 77/79 Minimal. degrees (12)

Now do this for all φi. We get a descending sequence of non-empty closed sets:

[T0] ⊇ [T1] ⊇ [T2] ⊇ ... therefore their intersection is non-empty, and any member of that intersection has minimal degree.

2. Oracles, Turing reductions, Turing degrees 78/79 To. sum up...

(D, ≤T) (E, ≤T) ℵ0 uncountable (size 2 ) countable (size ℵ0) not a total order not a total order smallest element 0 smallest element 0 ′ no largest element largest element 0 exist minimal elements no minimal element not dense dense

2. Oracles, Turing reductions, Turing degrees 79/79