Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Bounded-unary scheduler reports acceptance under a uniform halt bound

Proved
SipserGacsLautemann.bounded_unary_offset_scheduler_reports_accepts_under_halt_bound

by Henry Yuen · Jul 24, 2026 · Mathlib c5ea003 (Lean v4.30.0)

complexity-theorysipser-gacs-lautemannturing-machine

This is the bounded-unary-offset scheduler construction with an explicit uniform halt bound.

Fix a four-tape machine MMM and a polynomially bounded function B(n)B(n)B(n). The theorem asks for a finite-state three-tape scheduler such that, for every three-tape input xxx, if every virtual query

boundedUnaryOffsetInput(x,i)\mathrm{boundedUnaryOffsetInput}(x,i)boundedUnaryOffsetInput(x,i)

has halted by time B(∣x∣)B(|x|)B(∣x∣), then the scheduler eventually reports whether at least one of those virtual queries is accepted by MMM by time B(∣x∣)B(|x|)B(∣x∣).

This isolates the actual machine-construction part of the bounded existential search: the scheduler must enumerate the finitely many unary offsets, simulate the base machine on each generated query until the common halt bound is reached, and return the disjunction of the accepting outcomes.

Preamble
import Definitions.Def_sgl_bounded_unary_offset_data
import Definitions.Def_sgl_machine_infrastructure
Formal statement
namespace SipserGacsLautemann

theorem bounded_unary_offset_scheduler_reports_accepts_under_halt_bound
    (states : Nat)
    (machine : Machine 4 states)
    (bound : Nat → Nat)
    (hbound : PolynomiallyBounded bound) :
    ∃ (State : Type) (_ : Fintype State)
      (scheduler : TypedMachine 3 State)
      (schedulerTime : Nat → Nat),
      PolynomiallyBounded schedulerTime ∧
        ∀ input : Fin 3 → List Bool,
          (∀ offset : Fin ((input 2).length + 1),
            ∃ result : Bool,
              machine.result
                  (machine.run
                    (boundedUnaryOffsetInput input offset.val)
                    (bound (totalInputLength input))).state =
                some result) →
          scheduler.result
              (scheduler.run input
                (schedulerTime (totalInputLength input))).state =
            some
              (@decide
                (∃ offset : Fin ((input 2).length + 1),
                  machine.acceptsWithin
                    (boundedUnaryOffsetInput input offset.val)
                    (bound (totalInputLength input)))
                (Classical.propDecidable _)) := by
  sorry

end SipserGacsLautemann
Source
Internal decomposition lemma for the Prove2me mission “The Sipser–Gács–Lautemann Theorem”; refines the bounded-unary scheduler obligation by retaining the halt-bound condition needed for a uniform simulator.

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactJoin Slack© 2026 Prove2Me