42.04.06 · mathematical-logic / computability-degrees

The Turing Degrees and the Priority Method

shipped3 tiersLean: none

Anchor (Master): Soare 2016 *Turing Computability: Theory and Applications* (Springer) Ch. 6-12 and the historical notes (the finite-injury priority method and the solution to Post's problem; the c.e. degrees $\mathcal R$ as an upper semilattice with $\mathbf 0$ and $\mathbf 0'$ — the Sacks density and splitting theorems, minimal pairs, the failure of distributivity, the embedding of every finite lattice; infinite-injury and the $\mathbf 0'''$-priority / tree method, the Sacks jump theorem; the global structure $\mathcal D$ — Spector minimal degrees by forcing with perfect trees, the Posner-Robinson join theorem, automorphism and definability questions; the decidability of the $\Sigma_2$ theory of $\mathcal R$ and the undecidability of richer fragments); Soare 1987 *Recursively Enumerable Sets and Degrees* (Springer) Ch. VII-XII (the priority method systematised, finite and infinite injury, the lattice $\mathcal R$); Lerman 1983 *Degrees of Unsolvability* (Springer) Ch. VII-IX (minimal degrees, the global theory of $\mathcal D$)

Intuition Beginner

The previous unit built a ladder of difficulty and showed there are problems strictly above the everyday computable ones and strictly below the halting problem could exist by abstract counting. But Post asked a sharper question, and it stayed open for twelve years: among the sets a computer can list but not decide, is there one of genuinely middling hardness — harder than anything ordinary computers solve, yet easier than the halting problem? Post tried to find one by making the listable set "thin" in clever ways, but every thinness trick he invented still left the set either easy or as hard as halting. The middle stayed empty by his methods.

The answer turned out to be yes, and the way to get it is a new style of construction. You build your set in stages, adding numbers one at a time, and you keep a numbered to-do list of demands the finished set must satisfy. The demands compete: satisfying a later one can undo what an earlier one set up. So you rank them by priority — lower-numbered demands win. When a high-priority demand needs to act, it acts, even if that spoils a lower-priority demand that had looked settled. The spoiled demand simply starts over.

The reason this does not loop forever is a counting fact. A given demand can only be spoiled by the demands ranked above it, and there are finitely many of those, and each of them acts at most a bounded number of times once its own situation settles. So every demand is spoiled only finitely often, and after its last spoiling it stays satisfied for good. That single observation — finitely many interferences, so eventual peace — is the engine. It is called the priority method, and Post's middle ground is its first triumph.

Visual Beginner

Picture the requirements stacked by priority, highest at the top. Each one watches for its moment, acts, and then guards a stretch of small numbers it needs left untouched. A higher requirement may reach down and disturb that stretch — an injury — and the lower one resets and tries again later.

   priority list (top = most urgent), set A built in stages:

   R0 :  acts at stage 4, guards {0..6}        -> never disturbed, met forever
   R1 :  acts at stage 7, guards {0..9}        -> R0 cannot reach it (higher)
   R2 :  acts at stage 9, guards {0..12}  --.
                                            |  injured at stage 15
   R2 :  RESET, re-picks a fresh witness  <-'  by R1 acting again
   R2 :  acts at stage 22, guards {0..20}      -> now never disturbed, met

   Rule: only HIGHER requirements (smaller index) can injure a lower one.
   Each higher one acts finitely often, so each requirement is injured
   finitely often, then is met permanently.  That is "finite injury."

Now read off why the whole thing terminates into a satisfied state, requirement by requirement.

requirement who can injure it how many injuries outcome
top, nobody above it met at its first action
middle, the requirements above at most finitely many met after its last injury
any only higher priority always finite eventually permanently met

Read the table downward: the top requirement is never disturbed; each lower one is disturbed only by the finitely many above it; so every requirement reaches a last injury and then stays met. The set the stages build satisfies the entire list.

Worked example Beginner

We watch a tiny priority construction satisfy two competing demands, to see injury and recovery concretely. We build a set of numbers in stages. Demand (top priority) wants the number to be in . Demand (lower priority) wants to avoid the whole block — but only cares about a block that does not already contain a number a higher demand has claimed.

Step 1. Stage one, acts. It puts into and guards it: must stay in. Now .

Step 2. Stage two, looks at the block . It sees is already claimed by the higher demand , which it cannot override. So is blocked on this block and shifts its attention to a fresh, untouched block, say , which it can keep empty. No conflict remains.

Step 3. Read off the finished set. got its way permanently — is in and guarded. got its way too, on a block it was free to control, by stepping aside from the number a higher demand owned. Both demands are satisfied at once, with the higher one winning the contested spot.

What this tells us: the priority rule resolves every clash by letting the more urgent demand keep its claim and making the less urgent one retreat to fresh ground. Because the urgent demands are few and settle early, the retreats stop happening, and the construction lands on a set that meets every demand. Scaling this picture up — with the demands being "do not let program compute my set from the other set" — is exactly how Post's middle ground gets built.

Check your understanding Beginner

Formal definition Intermediate+

Work with the oracle machinery, Turing reducibility , the jump, and the c.e. degree language of 42.04.04, and the c.e. sets with stage approximations of 42.04.03. Post's problem asks whether there is a c.e. set with , equivalently a c.e. Turing degree strictly between and . The c.e. degrees form a sub-upper-semilattice of with least element and greatest element , ordered by with join induced by .

A finite-injury priority construction of c.e. sets , (with and at most a single number, computable in ) is specified by: a list of requirements ranked by priority ( higher than when ); for each a partial-computable strategy reading the current approximations and possibly enumerating a number into or ; and a restraint function naming a threshold below which asks that the relevant set be frozen at stage . Requirement acts at when its strategy enumerates a number or raises its restraint. is injured at if a higher-priority requirement () enumerates a number into the set is restraining, invalidating a computation was protecting. The injury set is .

The Friedberg-Muchnik requirements for incomparability are, for c.e., $$ R_{2e} : \Phi_e^B \ne \chi_A, \qquad R_{2e+1} : \Phi_e^A \ne \chi_B, $$ meeting all of which gives and . Each owns a witness (a fresh number reserved for ): if at some stage , the strategy enumerates into (so by use-preservation) and sets restraint the use of that computation, freezing below it. The construction is finite-injury when for every ; the **finite-injury lemma** then yields, by induction on , that each acts finitely often and is met. A set is **low** if ; a **minimal pair** is a pair of c.e. degrees whose only common lower bound is ().

Counterexamples to common slips Intermediate+

  • "Each requirement acts at most once, so there is no injury." The witness for can be chosen fresh and never re-chosen, so enumerates at most once — but its restraint can still be violated by a higher-priority requirement enumerating below the use into . Injury is the violation of restraint by others, not repeated action by oneself; finitely many higher requirements cause finitely many injuries.

  • "Injured means failed." Injury is temporary: a requirement injured at stage re-initialises (picks a new witness larger than all current restraints) and tries again. The finite-injury lemma guarantees a last injury, after which the (re-initialised) requirement succeeds. A requirement fails only if injured infinitely often, which finite injury rules out.

  • "Post's problem is solved by a simple or hypersimple set." Those were Post's own attempts and they fail: by Dekker every nonzero c.e. degree contains a simple set, so simplicity constrains and hardness but is compatible with Turing-completeness (42.04.03). Intermediate Turing degree needs the direct priority construction, not a structural thinness property.

  • "The c.e. degrees are dense, so there are no minimal pairs." Density (Sacks) says no two c.e. degrees are immediately adjacent; minimal pairs say two c.e. degrees can have infimum . Both hold: density is about the order between comparable degrees, minimal pairs about meets of incomparable ones. is dense and has minimal pairs and is non-distributive all at once.

Key theorem with proof Intermediate+

The organising result is the Friedberg-Muchnik theorem: Post's problem has a positive answer, supplied by the finite-injury priority method. Its proof is the prototype every later priority argument refines.

Theorem (Friedberg-Muchnik). There exist computably enumerable sets and with and . Consequently there are c.e. degrees with and incomparable; in particular Post's problem has a solution. [Soare Ch. 7]

Proof. Build , by stages, , to meet $$ R_{2e} : \Phi_e^B \ne \chi_A, \qquad R_{2e+1} : \Phi_e^A \ne \chi_B, $$ ranked by priority. Each controls one witness; it is satisfied once it has diagonalised, and requires attention at stage when it is unsatisfied and a suitable convergent computation appears. Each requirement, when first considered or when injured, is assigned a fresh witness larger than every number mentioned so far (so larger than all current restraints).

Strategy for (odd indices symmetric, swapping ): let be its current witness. If is unsatisfied and with use , then acts: enumerate into and set restraint , freezing below . Now , while provided is preserved (use lemma, 42.04.04); the restraint asks exactly that no number later enters .

Stage . Find the highest-priority requirement with that requires attention; let it act per its strategy. Acting may enumerate one number and reset the restraints of all lower-priority requirements, injuring any lower whose protected computation used the number just enumerated; each injured is re-assigned a fresh witness exceeding all current restraints. Only one requirement acts per stage.

Verification. By induction on we show acts finitely often, is eventually never injured, and is met. Suppose this holds for all ; let be a stage after which no () ever acts again (it exists since each acts finitely often). After no higher-priority requirement enumerates anything, so is never again injured and its current witness is permanent. Consider . If , the computation appears at some stage (its use is in , which is frozen below the relevant restraint), acts once enumerating into , and the frozen preserves : is met. If — it diverges or converges to a nonzero value — then since (it was never enumerated) , so unless , which we excluded; either way . So is met in every case, and it acted at most once after . By induction every requirement is met, so and . Both are c.e. (the construction is an effective stage enumeration), and since the search for convergent computations is -decidable; with giving -degree and -complete forced by incomparability, .

Bridge. The finite-injury lemma is the foundational reason the construction converges: each requirement is injured only by the finitely many higher-priority ones, each of which acts at most once after its witness settles, so the injury set is finite and a last injury exists. This is exactly the relativised diagonal of 42.04.04 deployed against every potential reduction at once — where the Kleene-Post finite-extension argument there diagonalised against with full oracle freedom, here the set is c.e. so numbers can only be added, and the priority ranking is what buys back the freedom the one-sidedness costs. The construction builds toward the Sacks density and splitting theorems, where the same skeleton — requirements, restraint, injury — runs with infinitely many injuries controlled by a true path, and it appears again in every - and -priority argument of the subject. This generalises Post's failed thinness programme: where simplicity could only bound hardness, the priority method controls directly, which is the central insight that finally populated the interval . Putting these together, the bridge is the finite-injury lemma itself — countable interference forcing eventual satisfaction — the single combinatorial fact from which the entire local theory of is generated.

Exercises Intermediate+

Advanced results Master

The priority method moves from its founding application — Post's problem — to a structure theory of the c.e. degrees and a global theory of , organised by the level of injury the construction tolerates. Finite injury suffices for incomparability and splitting; the density and minimal-pair theorems require infinite injury controlled by a true path; the global structure is reached by forcing rather than enumeration.

Theorem 1 (Sacks splitting and density). Every nonzero c.e. degree splits: there are c.e. degrees with and incomparable (a finite-injury argument) [Soare-RE Ch. VII]. The Sacks density theorem: for c.e. degrees there is a c.e. degree with , by an infinite-injury (-priority) construction in which the requirements are injured infinitely often but the true path through the tree of strategies meets each requirement along an outcome injured only finitely often. Density makes a dense partial order with no covering pairs, so is an upper semilattice that is dense, with and its endpoints, and no c.e. degree is minimal in it.

Theorem 2 (minimal pairs and non-distributivity). There are c.e. degrees forming a minimal pair, (Lachlan, Yates), so has nontrivial infima at the bottom even though it is not a lattice [Soare-RE Ch. IX]. Combined with splitting, minimal pairs make non-distributive and force the failure of the diamond lattice as an initial segment in a controlled way; every finite lattice embeds into (Lachlan-Soare), and the question of which lattices embed as initial segments drives the deepest combinatorics of the subject. The infinitary content is that infima must be preserved against infinitely many threatening reductions, the prototype -argument.

Theorem 3 (infinite injury and the Sacks jump theorem). The infinite-injury method systematises constructions where a requirement's restraint oscillates unboundedly but its is finite along the true path; formalised as - and -priority (the tree method, with strategies arranged on a tree of guessed outcomes and a true path selected by the actual behaviour) [Soare-RE Ch. XI-XII]. The Sacks jump theorem: a degree is the jump of a c.e. degree (with ) iff is c.e. in and above ; in particular there are low c.e. degrees () and high c.e. degrees () strictly between and , so the jump does not separate the c.e. degrees by Turing degree. The low/high hierarchy stratifies by how much information the jump extracts, refining the picture of 42.04.04.

Theorem 4 (the global structure of : minimal degrees and joins). Beyond the c.e. degrees, Spector minimal degrees exist: a degree with no degree strictly between and , built by forcing with perfect (computable) binary trees, each requirement either thinning the tree to force partial or computable, or passing to a splitting subtree to force [Lerman Ch. VII-VIII]. The Posner-Robinson join theorem: for every noncomputable there is with , so any noncomputable degree can be cupped to the jump by a single degree — a cornerstone of definability arguments. These forcing constructions sit at the -degree end of the global theory and are not c.e.-realisable: minimality is incompatible with c.e.-ness by Sacks density.

Theorem 5 (definability and the decidability of fragments). The c.e. degrees and the global degrees are rich enough to interpret arithmetic: the first-order theory of is recursively isomorphic to true second-order arithmetic (Simpson), and the theory of is undecidable [Lerman Ch. IX]. At low quantifier complexity the picture is tractable: the theory of (existential statements about finite configurations of c.e. degrees) is decidable, reducing to finite-lattice embeddability; the theory of is also decidable, but the theory is undecidable. The jump is first-order definable in (Cooper, Shore), and the major open problem is whether has nontrivial automorphisms — whether the degrees are a rigid structure — with partial rigidity results coding arithmetic into the order.

Synthesis. The priority method is computability theory's foundational reason the interval is densely populated rather than empty: where the global structure of 42.04.04 came from the jump and from forcing, the local structure of the c.e. degrees comes from building sets in stages to meet infinitely many competing requirements, and this is exactly the relativised diagonal of 42.04.04 turned into a scheduling problem solved by priority. The finite-injury lemma — each requirement injured by only finitely many higher ones, hence eventually permanently met — is the central insight, and it generalises Post's failed thinness programme of 42.04.03 (where simplicity bounded but not ) into direct control of Turing degree: the Friedberg-Muchnik sets are intermediate, and Sacks splitting and density extend the same skeleton to make a dense, non-distributive upper semilattice into which every finite lattice embeds.

Putting these together, infinite injury and the tree method run the construction against requirements injured infinitely often, controlled by a true path, which is dual to the finite case: there the schedule terminated, here it converges along one branch. The bridge is the requirement-restraint-injury skeleton itself, which scales from to to and underlies the Sacks jump theorem, the low/high hierarchy refining the jump of 42.04.04, and the arithmetical hierarchy 42.04.05 in which these c.e. sets sit at the base; what forcing with perfect trees does for minimal degrees in , the priority method does for the c.e. degrees in , and the definability theory that interprets arithmetic into both is the foundational reason the whole landscape is as intricate as arithmetic itself.

Full proof set Master

Proposition 1 (finite-injury lemma). In the Friedberg-Muchnik construction every requirement is injured finitely often and acts finitely often.

Proof. Induct on . Assume each , , acts finitely often; pick past the last action of every such . is injured only by a higher-priority requirement enumerating below its restraint, so suffers no injury after , giving . After its final injury holds a permanent witness and acts at most once thereafter (a single enumeration of when the triggering computation appears, after which it is satisfied and dormant). Hence acts finitely often, closing the induction.

Proposition 2 (Friedberg-Muchnik; each requirement is met). The construction satisfies every , so and .

Proof. By Proposition 1 fix after which no higher-priority requirement acts, so has a permanent witness and permanent restraint environment. If : the convergent computation appears at some stage with use ; enumerates into and freezes , and since no higher requirement acts after the freeze holds, so by the use lemma . If diverges or converges to a nonzero value: is never enumerated, so (the latter is not ). In all cases . Symmetrically the odd requirements give . Meeting all gives ; all give .

Proposition 3 (the constructed degrees are intermediate). are c.e., noncomputable, and , with and incomparable.

Proof. are c.e. as effective stage unions. The only non-effective step is detecting , a question decidable by , so . Noncomputable: a computable set reduces to every set, so computable would give , contradicting Proposition 2; thus . Strictly below : if then since we get , contradicting incomparability; so . Incomparability is Proposition 2. The symmetric facts hold for .

Proposition 4 (Sacks splitting, finite-injury form). Every noncomputable c.e. set splits into disjoint c.e. sets with and incomparable, .

Proof (skeleton). Enumerate and route each new element of into exactly one of . Requirements (for ) ensure , and the routing preserves (so the join is ) while each since computes both halves but not conversely. Each owns a follower and acts by directing a -element to the opposite side to spoil a threatening reduction, imposing restraint of the standard use-preserving kind; injuries are caused only by higher-priority -requirements rerouting below the restraint, finitely often by the finite-injury lemma. So all are met, giving incomparable halves whose join is .

Proposition 5 (minimal pair; computability of the common reduct). There are noncomputable c.e. such that total computable; hence .

Proof (skeleton). Meet -requirements forcing noncomputable and : if is total it is computable. Strategy for : maintain restraint preserving, for each argument at which both sides have converged to a common value, at least one of the two computations; the two sides are injured by different -requirements, so they are never both disturbed below the use at the same stage. If is total, compute by searching for the first stage with ; the preserved side guarantees this common value is final, so is computable. Therefore any and equals such an and is computable, so the infimum of the two degrees is . Finite injury (each injured finitely often by higher-priority requirements) makes all requirements met.

Proposition 6 (Spector minimal degree, statement and forcing skeleton). There is a degree with no degree strictly between and .

Proof (skeleton). Build as the unique path through a nested sequence of perfect computable binary trees . Requirement acts on to produce : if no subtree of forces total, thin to a subtree on which is partial; if is forced total, either it is computable on a subtree (pass to it) or has an -splitting subtree, on which distinct branches give distinct -values, forcing . The Spector splitting lemma guarantees one of these alternatives. The resulting has: every either partial, or computable, or computing ; so any is either computable or , i.e. is minimal.

Proposition 7 (Posner-Robinson, statement and the cupping consequence). For every noncomputable there is with ; consequently and is cupped to the jump by a single degree.

Proof (skeleton). Force by finite conditions (Posner-Robinson forcing) so that becomes computable from relative to via a coding that uses to resolve the jump, while keeping generic enough that and collapses to . The cupping statement is the immediate reading: , so adjoining raises exactly to the jump of . This is the join-theoretic engine behind definability results, since it expresses every noncomputable degree as a join-component of a jump.

Connections Master

  • Turing reducibility, oracles, and the jump 42.04.04, the prerequisite, supplies everything the priority method operates on: the reducibility the requirements diagonalise against, the use lemma that makes restraint preserve computations, the jump and the bound , and the Kleene-Post finite-extension argument that is the non-effective ancestor of finite injury. That unit owns the jump and the global structure of by counting and forcing; this unit owns the effective (c.e.) constructions — incomparable c.e. degrees, splitting, density, minimal pairs — that populate the interval the jump bounds.

  • Computably enumerable sets, creative and simple 42.04.03 frames Post's problem and supplies its failed attempts: the simple and hypersimple sets that bound and hardness without bounding Turing degree (Dekker), and the recognition that a structural thinness property cannot force intermediate degree. This unit resolves exactly that open question — the Friedberg-Muchnik construction builds the intermediate degrees Post's program could not reach — and the simple-set requirement schedule of that unit is the historical seed of the priority requirement list used here.

  • The arithmetical hierarchy 42.04.05 places the c.e. sets of this unit at the base and supplies the complexity calibration of the priority method: a finite-injury construction is a -argument, density and minimal pairs are -arguments, and the tree method climbs to . The low/high hierarchy within (Theorem 3) measures degrees below by where their jump lands in the scale of that hierarchy, so the syntactic ladder of 42.04.05 is the meter for the injury level a construction needs.

  • The halting problem and recursion theorem 42.04.02 is the source of the diagonal these requirements deploy: each is a diagonalisation against a single index, run simultaneously against all indices, and the recursion theorem underlies the self-referential follower assignments in the splitting and minimal-pair constructions. That unit owns the single diagonal and the completeness of ; this unit runs infinitely many diagonals at once under a priority schedule that keeps them from destroying one another.

Historical & philosophical context Master

Post's problem was posed in Emil Post's 1944 paper "Recursively enumerable sets of positive integers and their decision problems," which asked whether every undecidable c.e. set is Turing-equivalent to the halting problem, or whether a c.e. set of intermediate degree exists [Soare Ch. 7]. Post attacked it through structural thinness — simple, hypersimple, and hyperhypersimple sets — hoping a lattice-theoretic property of a c.e. set would force its Turing degree strictly between and ; the program, pursued through the 1940s and early 1950s, controlled the many-one and truth-table structure but, as James Dekker's deficiency-set construction made clear, left the Turing degree free. The problem was solved independently in 1956–1957 by Richard Friedberg in the United States and Albert Muchnik in the Soviet Union, who each invented the priority method: constructing two c.e. sets of incomparable Turing degree directly, by a finite-injury argument scheduling infinitely many diagonalisation requirements under a priority ranking.

The method became the central technique of classical computability theory. Gerald Sacks's work of the early 1960s — the splitting theorem (1963), the density theorem (1964), and the jump theorem — extended the priority method to infinite injury, with the density theorem's -argument introducing the tree-of-strategies analysis later systematised by Robert Soare and others into the -priority method [Soare-RE Ch. XII]. Alistair Lachlan and Clifford Yates established minimal pairs and the failure of distributivity in the c.e. degrees, and Lachlan's work on the undecidability of the theory of and the embeddability of finite lattices charted the limits of the structure. In parallel, Clifford Spector's 1956 minimal-degree construction by perfect-tree forcing, and later the Posner-Robinson join theorem and the Simpson-Shore definability results coding arithmetic into the degrees, built the global theory of . The Friedberg-Muchnik theorem stands as the method's founding triumph and the resolution of the first major problem of the field.

Bibliography Master

@article{post1944recursively,
  author  = {Post, Emil L.},
  title   = {Recursively enumerable sets of positive integers and their decision problems},
  journal = {Bulletin of the American Mathematical Society},
  volume  = {50},
  number  = {5},
  year    = {1944},
  pages   = {284--316}
}

@article{friedberg1957solution,
  author  = {Friedberg, Richard M.},
  title   = {Two recursively enumerable sets of incomparable degrees of unsolvability (solution of {Post's} problem, 1944)},
  journal = {Proceedings of the National Academy of Sciences},
  volume  = {43},
  number  = {2},
  year    = {1957},
  pages   = {236--238}
}

@article{muchnik1956unsolvability,
  author  = {Muchnik, Albert A.},
  title   = {On the unsolvability of the problem of reducibility in the theory of algorithms},
  journal = {Doklady Akademii Nauk SSSR},
  volume  = {108},
  year    = {1956},
  pages   = {194--197}
}

@article{spector1956minimal,
  author  = {Spector, Clifford},
  title   = {On degrees of recursive unsolvability},
  journal = {Annals of Mathematics},
  volume  = {64},
  number  = {3},
  year    = {1956},
  pages   = {581--592}
}

@article{sacks1963splitting,
  author  = {Sacks, Gerald E.},
  title   = {On the degrees less than $\mathbf{0}'$},
  journal = {Annals of Mathematics},
  volume  = {77},
  number  = {2},
  year    = {1963},
  pages   = {211--231}
}

@article{sacks1964density,
  author  = {Sacks, Gerald E.},
  title   = {The recursively enumerable degrees are dense},
  journal = {Annals of Mathematics},
  volume  = {80},
  number  = {2},
  year    = {1964},
  pages   = {300--312}
}

@article{lachlan1966lower,
  author  = {Lachlan, Alistair H.},
  title   = {Lower bounds for pairs of recursively enumerable degrees},
  journal = {Proceedings of the London Mathematical Society},
  volume  = {16},
  number  = {1},
  year    = {1966},
  pages   = {537--569}
}

@article{yates1966minimalpair,
  author  = {Yates, C. E. M.},
  title   = {A minimal pair of recursively enumerable degrees},
  journal = {The Journal of Symbolic Logic},
  volume  = {31},
  number  = {2},
  year    = {1966},
  pages   = {159--168}
}

@article{posnerrobinson1981,
  author  = {Posner, David B. and Robinson, Robert W.},
  title   = {Degrees joining to $\mathbf{0}'$},
  journal = {The Journal of Symbolic Logic},
  volume  = {46},
  number  = {4},
  year    = {1981},
  pages   = {714--722}
}

@book{soare1987re,
  author    = {Soare, Robert I.},
  title     = {Recursively Enumerable Sets and Degrees},
  series    = {Perspectives in Mathematical Logic},
  publisher = {Springer},
  year      = {1987}
}

@book{soare2016turing,
  author    = {Soare, Robert I.},
  title     = {Turing Computability: Theory and Applications},
  series    = {Theory and Applications of Computability},
  publisher = {Springer},
  year      = {2016}
}

@book{lerman1983degrees,
  author    = {Lerman, Manuel},
  title     = {Degrees of Unsolvability: Local and Global Theory},
  series    = {Perspectives in Mathematical Logic},
  publisher = {Springer},
  year      = {1983}
}