Documentation

TauCeti.Computability.FriedbergMuchnik.Construction

The stage machine of the original Friedberg–Muchnik construction #

This file constructs the finite-stage state machine of the original Friedberg–Muchnik theorem [S, VII.2.1], building two c.e. sets A = friedbergMuchnikSetA and B = friedbergMuchnikSetB against the interleaved negative requirements R_{2e} : A ≠ Φ_e^B and R_{2e+1} : B ≠ Φ_e^A.

At stage s, state s stores A_s, B_s, an active prefix of (witness, restraint) records, and a freshness floor floor; priorities beyond records.length default to (j.leastInPairColumn floor, none) (witness_restraint_eq_soareMarkers). The least priority k requiring attention enumerates witness k s into side k, protects monitoredSide k, installs some d.use at k, and resets all j > k above nextFloor.

References #

Side enumerated by requirement k: false (A) for 2e, true (B) for 2e + 1.

Instances For

    Side monitored and protected by requirement k: the opposite side !k.bodd.

    Instances For
      @[simp]

      Even priorities 2 * e enumerate into false (A).

      @[simp]

      Odd priorities 2 * e + 1 enumerate into true (B).

      The monitored side is the negation of the enumerated side.

      @[simp]

      Even priorities 2 * e monitor true (B).

      @[simp]

      Odd priorities 2 * e + 1 monitor false (A).

      A requirement never monitors the side it enumerates into.

      Finite active state and uniform column defaults #

      Finite state at the end of a stage: finite approximations setA and setB, active (witness, restraint) records for < records.length, and freshness floor floor.

      • setA : Finset ℕ

        Current finite approximation to A (false).

      • setB : Finset ℕ

        Current finite approximation to B (true).

      • records : List (ℕ × Option ℕ)

        Active (witness, restraint) records indexed by priority.

      • floor : ℕ

        Lower bound for default witness selection in j.pairColumn beyond records.length.

      Instances For
        theorem TauCeti.FriedbergMuchnik.State.ext {x y : State} (setA : x.setA = y.setA) (setB : x.setB = y.setB) (records : x.records = y.records) (floor : x.floor = y.floor) :
        x = y
        Instances For

          The initial empty state at stage 0: empty sets, no active records, and floor 0.

          Instances For

            Select setA for false and setB for true.

            Instances For
              @[simp]

              st.set false is st.setA.

              @[simp]

              st.set true is st.setB.

              Witness of j in st (j.leastInPairColumn st.floor when st.records.length ≤ j).

              Instances For

                Beyond st.records.length, st.witness j defaults to j.leastInPairColumn st.floor.

                Restraint of j in st: recorded restraint if j < st.records.length, else none.

                Instances For
                  @[simp]

                  Both approximations in State.init are empty.

                  @[simp]

                  In State.init, requirement j holds the initial witness Nat.pair 0 j.

                  @[simp]

                  In State.init, every restraint is inactive (none).

                  Equivalence between State and primitive-codable data via Finset.equivBitIndices.

                  Instances For
                    @[instance_reducible]

                    Finite states are primitive codable via State.equivCode.

                    Stage evaluation, eligibility, and least-priority attention #

                    Normalized stage computation Φ_{e, s}^D(x) against the binary answers of a finite set D.

                    Instances For

                      k requires attention in st at stage s with halting record d when st.witness k lies in k.pairColumn \ st.set (side k) and Φ_{k / 2, s} halts there with output 0.

                      • witness_notMem : st.witness k ∉ st.set (side k)

                        The witness has not yet entered the enumerated side of k.

                      • witness_mem_pairColumn : st.witness k ∈ k.pairColumn

                        The witness belongs to k's column.

                      • stageRun_eq_some : stageRun (st.set (monitoredSide k)) s (k / 2) (st.witness k) = some d

                        The opposite-oracle stage computation halts at the witness with record d.

                      • output_eq_zero : d.output = 0

                        The stage computation outputs 0.

                      Instances For

                        Unfolding RequiresAttention into its four clauses.

                        Any requirement requiring attention at stage s has priority k < s.

                        At fixed st, s, and k, the halting record witnessing RequiresAttention is unique.

                        Least-priority attention. Search k < s for the least priority requiring attention.

                        Instances For

                          attention st s = some (k, d) iff k is the least priority requiring attention at s.

                          attention st s = none holds iff no priority requires attention.

                          @[simp]

                          No requirement can receive attention at stage 0.

                          Stage transition and semantic correspondence #

                          Freshness floor installed when k acts with d at stage s: strictly exceeds st.floor, s, d.use, st.setA ∪ st.setB, and all witnesses and active restraints of priority ≤ k.

                          Instances For

                            nextFloor strictly exceeds the previous floor st.floor.

                            nextFloor strictly exceeds the current stage s.

                            nextFloor strictly exceeds the halting use d.use.

                            theorem TauCeti.FriedbergMuchnik.lt_nextFloor_of_mem_union {st : State} {s k x : ℕ} {d : Oracle.Single.Code.Halt} (hx : x ∈ st.setA ∪ st.setB) :
                            x < nextFloor st s k d

                            nextFloor strictly exceeds every element already in st.setA ∪ st.setB.

                            theorem TauCeti.FriedbergMuchnik.witness_lt_nextFloor {st : State} {s k i : ℕ} {d : Oracle.Single.Code.Halt} (hi : i ≤ k) :
                            st.witness i < nextFloor st s k d

                            nextFloor strictly exceeds st.witness i for every priority i ≤ k.

                            theorem TauCeti.FriedbergMuchnik.restraint_lt_nextFloor {st : State} {s k i b : ℕ} {d : Oracle.Single.Code.Halt} (hi : i ≤ k) (hb : st.restraint i = some b) :
                            b < nextFloor st s k d

                            nextFloor strictly exceeds any active restraint st.restraint i = some b with i ≤ k.

                            One step of the Friedberg–Muchnik stage machine.

                            Instances For

                              The finite state at the end of stage s.

                              Instances For

                                The priority receiving attention at stage s, if any.

                                Instances For

                                  Finite stage s of side b (A_s for false, B_s for true).

                                  Instances For

                                    Witness x_j^s of requirement j at stage s.

                                    Instances For

                                      Restraint r_j^s of requirement j at stage s (none when inactive).

                                      Instances For

                                        Stage s + 1 applies step to state s.

                                        theorem TauCeti.FriedbergMuchnik.stage_def (b : Bool) (s : ℕ) :
                                        stage b s = (state s).set b

                                        stage b s is (state s).set b.

                                        witness j s is (state s).witness j.

                                        @[simp]

                                        Both stage approximations start empty at stage 0.

                                        @[simp]

                                        At stage 0, requirement j holds the initial column witness Nat.pair 0 j.

                                        @[simp]

                                        At stage 0, every restraint is inactive (none).

                                        @[simp]

                                        No requirement acts at stage 0.

                                        action s = some k iff attention (state s) s = some (k, d) for some halting record d.

                                        Action, locality, initialization, and opposite-oracle protection equations #

                                        @[simp]

                                        When no priority receives attention, step leaves st unchanged.

                                        When k acts in st, step inserts st.witness k into (step st s).set (side k).

                                        When k acts in st, step leaves (step st s).set (monitoredSide k) unchanged.

                                        Active records installed by step when k acts with d.

                                        Freshness floor installed by step when k acts with d.

                                        An action at k in st preserves witness j for j ≤ k.

                                        An action at k in st resets witness j for j > k above nextFloor st s k d.

                                        An action at k in st preserves restraint j for j < k.

                                        An action at k with d in st activates restraint some d.use at k.

                                        An action at k in st clears restraint j to none for j > k.

                                        If no requirement receives attention at stage s, stage b is unchanged.

                                        An action of k enumerates witness k s into stage (side k).

                                        When k acts at stage s, witness k s belongs to stage (side k) (s + 1).

                                        Protection of the opposite oracle. Action at k leaves stage (monitoredSide k) fixed.

                                        If no requirement receives attention at stage s, witness j is unchanged.

                                        If no requirement receives attention at stage s, restraint j is unchanged.

                                        Higher-priority witness locality. An action at k preserves witness j for j ≤ k.

                                        Higher-priority restraint locality. An action at k preserves restraint j for j < k.

                                        Self restraint activation. When k acts with d, restraint k (s + 1) = some d.use.

                                        Lower-priority witness initialization. When k acts, j > k gets a fresh witness.

                                        Lower-priority restraint initialization. When k acts, j > k has restraint none.

                                        Soare's infinite marker recurrence.

                                        Instances For

                                          Semantic correspondence. (witness j s, restraint j s) agrees with soareMarkers s j.

                                          Monotonicity, witness ownership, and appointment vs. attention #

                                          Both stage sequences stage false and stage true are monotone.

                                          Every witness witness j s belongs to j's pairing column j.pairColumn.

                                          @[simp]

                                          The second Nat.unpair coordinate of witness j s is j.

                                          On a reachable state state s, RequiresAttention drops the automatic column clause.

                                          For each requirement j, the witness sequence s ↦ witness j s is monotone.

                                          Stages at which j is appointed or reappointed a witness: 0 and initializationStages.

                                          Instances For
                                            @[simp]

                                            Stage 0 is an appointment stage for every requirement.

                                            @[simp]

                                            A positive stage s + 1 is an appointment stage for j iff it initializes j.

                                            Outside appointmentStages j, witness j does not change in s ↦ s + 1.

                                            nextFloor (state s) s k d strictly exceeds every element of stage b s.

                                            At every reappointment stage s + 1 ∈ initializationStages action j, the new witness of j lies outside stage b (s + 1).

                                            Numbers enumerated by requirement k across all stages.

                                            Instances For
                                              @[simp]

                                              Membership in enumeratedBy k.

                                              Every number enumerated by requirement k belongs to k.pairColumn.

                                              Distinct requirements enumerate disjoint sets of witnesses.

                                              theorem TauCeti.FriedbergMuchnik.mem_fresh_stage {b : Bool} {s x : ℕ} :
                                              x ∈ Enumeration.fresh (stage b) s ↔ ∃ (k : ℕ), side k = b ∧ action s = some k ∧ witness k s = x

                                              Fresh entries. x ∈ fresh (stage b) s iff the acting k has side k = b and witness k s = x.

                                              Limit sets, disjointness, and effectivity #

                                              The limit set of side b: A for false and B for true.

                                              Instances For

                                                The first c.e. set A constructed by the original Friedberg–Muchnik theorem.

                                                Instances For

                                                  The second c.e. set B constructed by the original Friedberg–Muchnik theorem.

                                                  Instances For

                                                    set b is the stage limit stageLimit (stage b).

                                                    Membership in set b is eventual membership in stage b.

                                                    Witness ownership. x ∈ set b iff some k with side k = b enumerates x.

                                                    Every element x ∈ set b has side x.unpair.2 = b.

                                                    Least-priority attention selection is primitive recursive in the state and stage.

                                                    The stage transition step is primitive recursive.

                                                    The finite state state s is primitive recursive in the stage s.

                                                    The acting priority action s is primitive recursive in the stage s.

                                                    The witness witness j s is primitive recursive uniformly in (j, s).

                                                    The restraint restraint j s is primitive recursive uniformly in (j, s).

                                                    The binary finite-set codes of stage b s are primitive recursive uniformly in (b, s).

                                                    For each side b, the binary finite-set codes of stage b s are primitive recursive in s.

                                                    Both constructed limit sets set false and set true are c.e.