Documentation

LeanPool.SmallUndecidableGroups.Machine.TM1BinaryAdapter

TM1BinaryAdapter #

Part of the dependency closure of the small undecidable group constructions.

@[reducible]

The initial state belongs to every certified support.

Equations
Instances For
    noncomputable def Undecidability.TM0FiniteRestriction.liftState {Gamma : Type u_1} {Q : Type u_2} [Inhabited Q] (M : Turing.TM0.Machine Gamma Q) (S : Finset Q) (hS : Turing.TM0.Supports M ↑S) (q : Q) :
    ↥S

    Restrict a finitely supported TM0 to the finite subtype of states in its support.

    Equations
    Instances For
      @[simp]
      theorem Undecidability.TM0FiniteRestriction.liftState_coe {Gamma : Type u_1} {Q : Type u_2} [Inhabited Q] (M : Turing.TM0.Machine Gamma Q) (S : Finset Q) (hS : Turing.TM0.Supports M ↑S) {q : Q} (hq : q ∈ S) :
      ↑(liftState M S hS q) = q
      noncomputable def Undecidability.TM0FiniteRestriction.machine {Gamma : Type u_1} {Q : Type u_2} [Inhabited Q] (M : Turing.TM0.Machine Gamma Q) (S : Finset Q) (hS : Turing.TM0.Supports M ↑S) :

      The Post machine obtained by restricting the compiled machine to its finite state support.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        def Undecidability.TM0FiniteRestriction.includeCfg {Gamma : Type u_1} {Q : Type u_2} [Inhabited Gamma] (S : Finset Q) :
        Turing.TM0.Cfg Gamma ↥S → Turing.TM0.Cfg Gamma Q

        The configuration map including supported states into the original state type.

        Equations
        Instances For
          theorem Undecidability.TM0FiniteRestriction.step_map {Gamma : Type u_1} {Q : Type u_2} [Inhabited Gamma] [Inhabited Q] (M : Turing.TM0.Machine Gamma Q) (S : Finset Q) (hS : Turing.TM0.Supports M ↑S) (c : Turing.TM0.Cfg Gamma ↥S) :
          theorem Undecidability.TM0FiniteRestriction.respects {Gamma : Type u_1} {Q : Type u_2} [Inhabited Gamma] [Inhabited Q] (M : Turing.TM0.Machine Gamma Q) (S : Finset Q) (hS : Turing.TM0.Supports M ↑S) :
          theorem Undecidability.TM0FiniteRestriction.init_include {Gamma : Type u_1} {Q : Type u_2} [Inhabited Gamma] [Inhabited Q] (M : Turing.TM0.Machine Gamma Q) (S : Finset Q) (hS : Turing.TM0.Supports M ↑S) (input : List Gamma) :
          theorem Undecidability.TM0FiniteRestriction.eval_dom_iff {Gamma : Type u_1} {Q : Type u_2} [Inhabited Gamma] [Inhabited Q] (M : Turing.TM0.Machine Gamma Q) (S : Finset Q) (hS : Turing.TM0.Supports M ↑S) (input : List Gamma) :
          (Turing.TM0.eval (machine M S hS) input).Dom ↔ (Turing.TM0.eval M input).Dom

          Restricting to a certified finite support preserves the halting domain.

          A fixed-length binary encoding of a finite tape alphabet, with the blank symbol represented by an all-zero block.

          Instances For

            Every inhabited finite alphabet admits a fixed-length binary code.

            noncomputable def Undecidability.TM1BinaryAdapter.canonicalCode (Γ : Type u_4) [Inhabited Γ] [Finite Γ] :
            Code Γ

            A canonical (noncomputably chosen) binary code for a finite alphabet.

            Equations
            Instances For
              def Undecidability.TM1BinaryAdapter.program {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) :

              The binary TM1 program produced by Mathlib's block-code compiler.

              Equations
              Instances For
                def Undecidability.TM1BinaryAdapter.machine {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Inhabited Λ] [Inhabited σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) :

                Compile a finite-alphabet TM1 program all the way to a binary TM0.

                Equations
                Instances For
                  def Undecidability.TM1BinaryAdapter.encodeInput {Γ : Type u_1} [Inhabited Γ] (B : Code Γ) (input : List Γ) :

                  Encode a finite input word by concatenating its fixed-width codewords.

                  Equations
                  Instances For

                    Fixed-width block encoding of words over a finite computably coded alphabet is computable. No effectiveness hypothesis on the particular code table is needed: every function on a finite domain is primitive recursive.

                    theorem Undecidability.TM1BinaryAdapter.program_eval_dom_iff {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Inhabited Λ] [Inhabited σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) (input : List Γ) :

                    Mathlib's binary block compiler preserves the halting domain.

                    theorem Undecidability.TM1BinaryAdapter.eval_dom_iff {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Inhabited Λ] [Inhabited σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) (input : List Γ) :

                    Compiling further from TM1 to TM0 preserves the halting domain.

                    noncomputable def Undecidability.TM1BinaryAdapter.support {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Fintype Γ] [Fintype σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) (S : Finset Λ) :

                    A finite support for the compiled binary TM0, obtained by composing Mathlib's two support transformations.

                    Equations
                    Instances For
                      theorem Undecidability.TM1BinaryAdapter.machine_supports {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Inhabited Λ] [Inhabited σ] [Fintype Γ] [Fintype σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) (S : Finset Λ) (hS : Turing.TM1.Supports M S) :

                      A support certificate for the source program induces one for the binary TM0.

                      @[reducible]
                      noncomputable def Undecidability.TM1BinaryAdapter.finiteStateInhabited {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Inhabited Λ] [Inhabited σ] [Fintype Γ] [Fintype σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) (S : Finset Λ) (hS : Turing.TM1.Supports M S) :
                      Inhabited ↥(support B M S)

                      The inhabited finite subtype of the compiled machine's certified support.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        noncomputable def Undecidability.TM1BinaryAdapter.finiteMachine {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Inhabited Λ] [Inhabited σ] [Fintype Γ] [Fintype σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) (S : Finset Λ) (hS : Turing.TM1.Supports M S) :

                        Restrict the binary compiler output to its certified finite state set.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem Undecidability.TM1BinaryAdapter.finite_eval_dom_iff {Γ : Type u_1} {Λ : Type u_2} {σ : Type u_3} [Inhabited Γ] [Inhabited Λ] [Inhabited σ] [Fintype Γ] [Fintype σ] (B : Code Γ) (M : Λ → Turing.TM1.Stmt Γ Λ σ) (S : Finset Λ) (hS : Turing.TM1.Supports M S) (input : List Γ) :

                          The finite-state binary machine has exactly the source program's halting domain on encoded inputs.