Documentation

TauCeti.Computability.FriedbergMuchnik.Basic

Verification of the original Friedberg–Muchnik theorem #

This file verifies the finite-injury stage construction of TauCeti.Computability.FriedbergMuchnik.Construction [S, VII.2.1] and proves the Friedberg–Muchnik theorem (friedberg_muchnik) and its Turing-degree corollaries strictly between 0 and 0':

  1. restraint_lt_witness_of_notMem and exists_lt_of_mem_injuriesAt: active higher-priority restraints lie strictly below unenumerated lower-priority witnesses, so only k < e can injure requirement e.
  2. exists_lt_action_between and the 2 ^ k / 2 ^ e - 1 bounds on attentionStages, enumeratedBy, initializationStages, injurySet, injuryStages, and monitoredInjuryEvents.
  3. zero_mem_eval_of_mem_set, zero_notMem_eval_of_notMem_set, and eval_ne_oracle: requirement satisfaction in both stabilization regimes.

References #

Stage invariant and injury attribution #

theorem TauCeti.FriedbergMuchnik.restraint_lt_witness_of_notMem {i j s b : ℕ} (hij : i < j) (hb : restraint i s = some b) (hw : witness j s ∉ stage (side j) s) :
b < witness j s

Restraint–witness invariant. An active higher-priority restraint restraint i s = some b (i < j) lies strictly below any unenumerated lower-priority witness witness j s.

Injury attribution. Every x ∈ injuriesAt (stage (monitoredSide e)) restraint e s was enumerated by an action of some k < e with side k = monitoredSide e and witness k s = x.

Every labelled injury event in monitoredInjuryEvents comes from an action of some k < e.

Epochs, stabilization, and quantitative bounds #

theorem TauCeti.FriedbergMuchnik.witness_eq_of_forall_lt_action_ne {k s₁ s₂ : ℕ} (hs : s₁ ≤ s₂) (hno : ∀ (t : ℕ), s₁ ≤ t → t < s₂ → ∀ i < k, action t ≠ some i) :
witness k s₂ = witness k s₁

If no i < k acts in [s₁, s₂), then witness k stays constant from s₁ to s₂.

theorem TauCeti.FriedbergMuchnik.restraint_eq_of_forall_le_action_ne {k s₁ s₂ : ℕ} (hs : s₁ ≤ s₂) (hno : ∀ (t : ℕ), s₁ ≤ t → t < s₂ → ∀ i ≤ k, action t ≠ some i) :
restraint k s₂ = restraint k s₁

If no i ≤ k acts in [s₁, s₂), then restraint k stays constant from s₁ to s₂.

theorem TauCeti.FriedbergMuchnik.exists_lt_action_between (k : ℕ) {s₁ s₂ : ℕ} (hlt : s₁ < s₂) (hs₁ : action s₁ = some k) (hs₂ : action s₂ = some k) :
∃ (t : ℕ), s₁ < t ∧ t < s₂ ∧ ∃ i < k, action t = some i

At most one action per epoch. Between any two actions of k, some i < k acts.

Requirement k enumerates finitely many numbers, at most 2 ^ k.

Priority 0 is never injured on its monitored oracle.

theorem TauCeti.FriedbergMuchnik.exists_stabilization_stage (k : ℕ) :
∃ (s₀ : ℕ), (∀ s ≥ s₀, ∀ i < k, action s ≠ some i) ∧ (∀ s ≥ s₀, witness k s = witness k s₀) ∧ {s : ℕ | s₀ ≤ s ∧ action s = some k}.Subsingleton

Stabilization and permanent witness. From some stage s₀ onward, no i < k acts, witness k stays at witness k s₀, and k acts at most once.

Every requirement k eventually holds a permanent witness in k.pairColumn.

Satisfaction of requirements and Turing incomparability #

theorem TauCeti.FriedbergMuchnik.zero_mem_eval_of_mem_set {k s₀ : ℕ} (hno : ∀ s ≥ s₀, ∀ i < k, action s ≠ some i) (hx : witness k s₀ ∈ set (side k)) :

Satisfaction when the permanent witness enters set (side k).

theorem TauCeti.FriedbergMuchnik.zero_notMem_eval_of_notMem_set {k s₀ : ℕ} (hno : ∀ s ≥ s₀, ∀ i < k, action s ≠ some i) (hx : witness k s₀ ∉ set (side k)) :

Satisfaction when the permanent witness stays outside set (side k).

Main theorems and Turing degree corollaries #

friedbergMuchnikSetA is not computable.

friedbergMuchnikSetB is not computable.

theorem TauCeti.friedberg_muchnik :
∃ (A : Set ℕ) (B : Set ℕ), (REPred fun (x : ℕ) => x ∈ A) ∧ (REPred fun (x : ℕ) => x ∈ B) ∧ ¬TuringReducible A.oracle B.oracle ∧ ¬TuringReducible B.oracle A.oracle

The Friedberg–Muchnik theorem [S, VII.2.1].