Documentation

DescriptiveComplexity.Problems.Machine.HaltHard.Correct

The drawn instance is a well-formed machine embedding the simulator #

The semantic half of the correctness of the drawing: the drawn structure's machine data is well-formed (DescriptiveComplexity.HaltHard.wellFormed_halt), and its machine predicates are exactly the images of DescriptiveComplexity.HaltHard.simTM's along the embedding that places each machine element on the canonically padded bottom tuple (DescriptiveComplexity.HaltHard.tmEmbed_halt). The enumeration of the cells and the initial tape are the next file's business; this one only speaks about tags and tuples.

Canonical tuples #

noncomputable def DescriptiveComplexity.HaltHard.mEl {L : FirstOrder.Language} {V : L.FinVocab} {cF cP : Turing.ToPartrec.Code} {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (u : SimU (allCode cF cP)) :
(haltTuringInterp V cF cP).Map A

The machine element u, as the point of the drawn instance with the bottom tuple.

Equations
Instances For
    Dependency graph

    The embedding of the simulating machine #

    The drawn machine embeds the simulating machine: every machine predicate of the drawn structure is the image of simTM's along mEl.

    Dependency graph

    The letter of a cell is unique #

    The drawn machine is well-formed #

    The drawn machine data is well-formed.

    Dependency graph

    Tuple numbers #

    The reversed lexicographic order on tuples is comparison of their numbers – the little-endian FirstOrder.Language.tupleIdx of the coordinates read through the numbering. One direction is proved arithmetically; the other falls out of trichotomy and injectivity.

    noncomputable def DescriptiveComplexity.HaltHard.tupN {L : FirstOrder.Language} {V : L.FinVocab} {A : Type} [LinearOrder A] (k : ℕ) (e : Fin (k + 1) ≃o A) (w : Fin (dimOf V) → A) :

    The number of a tuple, read through the numbering.

    Equations
    Instances For
      Dependency graph
      theorem DescriptiveComplexity.HaltHard.tupN_inj {L : FirstOrder.Language} {V : L.FinVocab} {A : Type} [LinearOrder A] (k : ℕ) (e : Fin (k + 1) ≃o A) {u w : Fin (dimOf V) → A} (h : tupN k e u = tupN k e w) :
      u = w
      Dependency graph
      theorem DescriptiveComplexity.HaltHard.revLexLt_of_tupN_lt {L : FirstOrder.Language} {V : L.FinVocab} {A : Type} [LinearOrder A] (k : ℕ) (e : Fin (k + 1) ≃o A) {u w : Fin (dimOf V) → A} (h : tupN k e u < tupN k e w) :
      Dependency graph

      The cells of the input page #

      Dependency graph
      noncomputable def DescriptiveComplexity.HaltHard.tupOf {L : FirstOrder.Language} (V : L.FinVocab) {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (k : ℕ) (e : Fin (k + 1) ≃o A) (i : Fin V.numSyms) (t : ℕ) :
      Fin (dimOf V) → A

      The tuple of the bit cell numbered t in the block of symbol i.

      Equations
      Instances For
        Dependency graph
        theorem DescriptiveComplexity.HaltHard.canon_tupOf {L : FirstOrder.Language} (V : L.FinVocab) {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (k : ℕ) (e : Fin (k + 1) ≃o A) (i : Fin V.numSyms) (t : ℕ) :
        Canon (V.arity i) (tupOf V k e i t)
        Dependency graph
        Dependency graph

        The chain indices, in tape order: symbols descending, tuple numbers descending inside each block.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Dependency graph
          Dependency graph
          noncomputable def DescriptiveComplexity.HaltHard.pairCells {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (k : ℕ) (e : Fin (k + 1) ≃o A) (p : Fin V.numSyms × ℕ) :
          List ((haltTuringInterp V cF cP).Map A)

          The two chain cells of a bit.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Dependency graph
            noncomputable def DescriptiveComplexity.HaltHard.chainCells {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (k : ℕ) (e : Fin (k + 1) ≃o A) :
            List ((haltTuringInterp V cF cP).Map A)

            The chain cells, in tape order.

            Equations
            Instances For
              Dependency graph
              noncomputable def DescriptiveComplexity.HaltHard.oneCells {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (k : ℕ) (e : Fin (k + 1) ≃o A) :
              List ((haltTuringInterp V cF cP).Map A)

              The digit cells of the spelled size, in tape order – elements descending.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Dependency graph

                Membership: the cells are exactly the positions #

                The initial letters #

                The enumeration is strictly ordered #

                The strict order of the drawn machine.

                Equations
                Instances For
                  Dependency graph
                  theorem DescriptiveComplexity.HaltHard.sLt_intro {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [L.Structure A] [LinearOrder A] {t t' : HTag V cF cP} {w w' : Fin (dimOf V) → A} (hle : HLe V cF cP (t, w) (t', w')) (hne : t ≠ t' ∨ w ≠ w') :
                  SLt V cF cP (hPt t w) (hPt t' w')
                  Dependency graph
                  theorem DescriptiveComplexity.HaltHard.sLt_of_blockLt {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [L.Structure A] [LinearOrder A] {t t' : HTag V cF cP} (h : blockIdx V cF cP t < blockIdx V cF cP t') (w w' : Fin (dimOf V) → A) :
                  SLt V cF cP (hPt t w) (hPt t' w')
                  Dependency graph
                  theorem DescriptiveComplexity.HaltHard.sLt_of_revLex {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [L.Structure A] [LinearOrder A] {t t' : HTag V cF cP} (hb : blockIdx V cF cP t = blockIdx V cF cP t') {w w' : Fin (dimOf V) → A} (h : RevLexLt w' w) :
                  SLt V cF cP (hPt t w) (hPt t' w')
                  Dependency graph
                  Dependency graph

                  Later chain indices are smaller: symbols descending, tuple numbers descending inside a symbol.

                  Equations
                  Instances For
                    Dependency graph
                    Dependency graph
                    theorem DescriptiveComplexity.HaltHard.tag_of_mem_chainCells {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (k : ℕ) (e : Fin (k + 1) ≃o A) {x : (haltTuringInterp V cF cP).Map A} (hx : x ∈ chainCells V cF cP k e) :
                    ∃ (i : Fin V.numSyms) (w : Fin (dimOf V) → A), x = hPt (Sum.inr (CellTag.cBit i)) w ∨ x = hPt (Sum.inr (CellTag.cFold i)) w
                    Dependency graph
                    theorem DescriptiveComplexity.HaltHard.tag_of_mem_oneCells {L : FirstOrder.Language} (V : L.FinVocab) (cF cP : Turing.ToPartrec.Code) {A : Type} [LinearOrder A] [Finite A] [Nonempty A] (k : ℕ) (e : Fin (k + 1) ≃o A) {x : (haltTuringInterp V cF cP).Map A} (hx : x ∈ oneCells V cF cP k e) :
                    ∃ (w : Fin (dimOf V) → A), x = hPt (Sum.inr CellTag.cOne) w
                    Dependency graph

                    The enumeration and the initial tape #

                    theorem DescriptiveComplexity.HaltHard.forall₂_flatMap {α β γ : Type} {R : β → γ → Prop} {f : α → List β} {g : α → List γ} {l : List α} :
                    (∀ a ∈ l, List.Forall₂ R (f a) (g a)) → List.Forall₂ R (List.flatMap f l) (List.flatMap g l)
                    Dependency graph
                    theorem DescriptiveComplexity.HaltHard.forall₂_map_replicate {α β γ : Type} {R : β → γ → Prop} {F : α → β} {c : γ} {l : List α} :
                    (∀ a ∈ l, R (F a) c) → List.Forall₂ R (List.map F l) (List.replicate l.length c)
                    Dependency graph
                    theorem DescriptiveComplexity.HaltHard.replicate_rotate {α : Type} (a : α) (n : ℕ) (l : List α) :
                    Dependency graph