Documentation

DescriptiveComplexity.Problems.SuccinctReach.Hardness

SUCCINCT-REACH is PSPACE-hard #

The hardness half: every SO(TC) definable problem admits an ordered first-order reduction to SUCCINCT-REACH (DescriptiveComplexity.succinctReach_hard_of_sotcDefinable). Since DescriptiveComplexity.PSPACE is defined as SO(TC) definability, together with DescriptiveComplexity.succinctReach_mem_PSPACE this makes SUCCINCT-REACH PSPACE-complete.

The discharge, and why it is three Tseitin encodings sharing one block #

A DescriptiveComplexity.SOTCSpec is a block B and three first-order sentences: a transition sentence over two copies of B and two endpoint sentences over one. The interpreted SUCCINCT-REACH instance is, group by group, the Tseitin encoding (Tseitin 1968) of those sentences – the very construction that discharges ∃SO into SAT (DescriptiveComplexity.sat_hard_of_sigmaSODefinable), reused wholesale through its semantic interface DescriptiveComplexity.Tseitin.satCond_iff_gates.

The one thing that is not three independent encodings is the block: all three are taken over the doubled block B.double (DescriptiveComplexity.Problems.SuccinctReach.Double), the endpoint sentences being renamed into its first copy. That is forced, and it is the heart of the construction: the propositional variables standing for the atoms of the block must be the same elements in the three clause groups, since they are exactly the state variables the walk carries. So

A state of the interpreted transition system is then a set of atoms of the first copy, i.e. an assignment of B – the state of the SO(TC) walk – and the transition clauses hold of a valuation exactly when the transition sentence holds of the pair it reads and writes. The correspondence between the two walks is a bijection at every step, with no initialization or finalization steps to peel off, which is why the endpoint conditions are kept as two extra clause groups rather than folded into the transition.

Junk #

Only the canonically padded tuples carry meaning, as in the SAT discharge: tuples of length DescriptiveComplexity.srDim are padded with minimal elements of the order, and a clause mentions no variable at a non-canonical tuple. But stateVar and next are declared at every tuple, canonical or not. Junk state variables are then free-running copies whose values no clause constrains and no reading of a state ever looks at (DescriptiveComplexity.srPredOf reads the canonical padding only), so they cost nothing and save the canonicity guards.

The three kernels, over the doubled block #

Dependency graph

The source sentence, read over the doubled block (first copy only).

Equations
Instances For
    Dependency graph

    The target sentence, read over the doubled block (first copy only).

    Equations
    Instances For
      Dependency graph

      The dimension of the interpretation: large enough for every context tuple of the three kernels and every argument tuple of a block variable.

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

        Tags #

        Dependency graph
        Dependency graph
        Dependency graph
        @[reducible, inline]

        The tags of the interpretation: the clauses of the three Tseitin encodings (one per position and kind, plus the top unit clause of each group), then the propositional variables – the shared atoms of the doubled block, and the gates of each group.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Dependency graph
          Dependency graph
          @[reducible, inline]
          abbrev DescriptiveComplexity.SuccinctReachHard.tagStepCl {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} (σp : StepNode B stepS) (k : Fin 3) :
          SRTag B stepS srcS tgtS

          The clause of the transition group at a position and kind.

          Equations
          Instances For
            Dependency graph
            @[reducible, inline]

            The top unit clause of the transition group.

            Equations
            Instances For
              Dependency graph
              @[reducible, inline]
              abbrev DescriptiveComplexity.SuccinctReachHard.tagSrcCl {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} (σp : SrcNode B srcS) (k : Fin 3) :
              SRTag B stepS srcS tgtS

              The clause of the source group at a position and kind.

              Equations
              Instances For
                Dependency graph
                @[reducible, inline]

                The top unit clause of the source group.

                Equations
                Instances For
                  Dependency graph
                  @[reducible, inline]
                  abbrev DescriptiveComplexity.SuccinctReachHard.tagTgtCl {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} (σp : TgtNode B tgtS) (k : Fin 3) :
                  SRTag B stepS srcS tgtS

                  The clause of the target group at a position and kind.

                  Equations
                  Instances For
                    Dependency graph
                    @[reducible, inline]

                    The top unit clause of the target group.

                    Equations
                    Instances For
                      Dependency graph
                      @[reducible, inline]

                      The propositional variable of an atom of the doubled block: a state variable for the first copy, its next-state copy for the second.

                      Equations
                      Instances For
                        Dependency graph
                        @[reducible, inline]

                        A gate variable of the transition group.

                        Equations
                        Instances For
                          Dependency graph
                          @[reducible, inline]

                          A gate variable of the source group.

                          Equations
                          Instances For
                            Dependency graph
                            @[reducible, inline]

                            A gate variable of the target group.

                            Equations
                            Instances For
                              Dependency graph
                              Dependency graph
                              Dependency graph
                              Dependency graph

                              The defining formulas #

                              @[reducible, inline]
                              abbrev DescriptiveComplexity.SuccinctReachHard.selU {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) :
                              Fin (srDim B stepS srcS tgtS)Fin 1 × Fin (srDim B stepS srcS tgtS)

                              The coordinate selector of a unary relation's single argument.

                              Equations
                              Instances For
                                Dependency graph
                                @[reducible, inline]
                                abbrev DescriptiveComplexity.SuccinctReachHard.selA {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) :
                                Fin (srDim B stepS srcS tgtS)Fin 2 × Fin (srDim B stepS srcS tgtS)

                                The coordinate selector of a binary relation's first argument.

                                Equations
                                Instances For
                                  Dependency graph
                                  @[reducible, inline]
                                  abbrev DescriptiveComplexity.SuccinctReachHard.selB {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) :
                                  Fin (srDim B stepS srcS tgtS)Fin 2 × Fin (srDim B stepS srcS tgtS)

                                  The coordinate selector of a binary relation's second argument.

                                  Equations
                                  Instances For
                                    Dependency graph
                                    @[reducible, inline]

                                    Merging the two order symbols the Tseitin builders leave behind: they add an order to the vocabulary they are given, which here is already ordered.

                                    Equations
                                    Instances For
                                      Dependency graph
                                      noncomputable def DescriptiveComplexity.SuccinctReachHard.srClFml {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (t : SRTag B stepS srcS tgtS) :
                                      (L.sum FirstOrder.Language.order).Formula (Fin 1 × Fin (srDim B stepS srcS tgtS))

                                      The defining formula of stepCl, srcCl or tgtCl, selected by which group's clauses it should recognize: the clause-existence formulas of that group's encoding, plus the canonicity condition of its top unit clause.

                                      Equations
                                      Instances For
                                        Dependency graph
                                        noncomputable def DescriptiveComplexity.SuccinctReachHard.srSrcClFml {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (t : SRTag B stepS srcS tgtS) :
                                        (L.sum FirstOrder.Language.order).Formula (Fin 1 × Fin (srDim B stepS srcS tgtS))

                                        The defining formula of srcCl.

                                        Equations
                                        Instances For
                                          Dependency graph
                                          noncomputable def DescriptiveComplexity.SuccinctReachHard.srTgtClFml {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (t : SRTag B stepS srcS tgtS) :
                                          (L.sum FirstOrder.Language.order).Formula (Fin 1 × Fin (srDim B stepS srcS tgtS))

                                          The defining formula of tgtCl.

                                          Equations
                                          Instances For
                                            Dependency graph
                                            noncomputable def DescriptiveComplexity.SuccinctReachHard.srStateFml {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (t : SRTag B stepS srcS tgtS) :
                                            (L.sum FirstOrder.Language.order).Formula (Fin 1 × Fin (srDim B stepS srcS tgtS))

                                            The defining formula of stateVar: the atoms of the first copy of the doubled block, at every tuple.

                                            Equations
                                            Instances For
                                              Dependency graph
                                              noncomputable def DescriptiveComplexity.SuccinctReachHard.srNextFml {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (t₁ t₂ : SRTag B stepS srcS tgtS) :
                                              (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                              The defining formula of next: the atom of the second copy at the same relation variable and the same tuple.

                                              Equations
                                              Instances For
                                                Dependency graph
                                                noncomputable def DescriptiveComplexity.SuccinctReachHard.srLitStep {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (s : Bool) (σp : StepNode B stepS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) :
                                                (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                                The literals of a node clause of the transition group: an atom of the block, or a gate of that group.

                                                Equations
                                                Instances For
                                                  Dependency graph
                                                  noncomputable def DescriptiveComplexity.SuccinctReachHard.srLitStepTop {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (s : Bool) (tx : SRTag B stepS srcS tgtS) :
                                                  (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                                  The literal of the top unit clause of the transition group: its root gate, positively, at fully padded tuples.

                                                  Equations
                                                  Instances For
                                                    Dependency graph
                                                    noncomputable def DescriptiveComplexity.SuccinctReachHard.srLitSrc {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (s : Bool) (σp : SrcNode B srcS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) :
                                                    (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                                    The literals of a node clause of the source group.

                                                    Equations
                                                    Instances For
                                                      Dependency graph
                                                      noncomputable def DescriptiveComplexity.SuccinctReachHard.srLitSrcTop {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (s : Bool) (tx : SRTag B stepS srcS tgtS) :
                                                      (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                                      The literal of the top unit clause of the source group.

                                                      Equations
                                                      Instances For
                                                        Dependency graph
                                                        noncomputable def DescriptiveComplexity.SuccinctReachHard.srLitTgt {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (s : Bool) (σp : TgtNode B tgtS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) :
                                                        (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                                        The literals of a node clause of the target group.

                                                        Equations
                                                        Instances For
                                                          Dependency graph
                                                          noncomputable def DescriptiveComplexity.SuccinctReachHard.srLitTgtTop {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (s : Bool) (tx : SRTag B stepS srcS tgtS) :
                                                          (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                                          The literal of the top unit clause of the target group.

                                                          Equations
                                                          Instances For
                                                            Dependency graph
                                                            noncomputable def DescriptiveComplexity.SuccinctReachHard.srLitFml {L : FirstOrder.Language} (B : SOBlock) (stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence) (srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence) (s : Bool) (tc tx : SRTag B stepS srcS tgtS) :
                                                            (L.sum FirstOrder.Language.order).Formula (Fin 2 × Fin (srDim B stepS srcS tgtS))

                                                            The defining formula of posIn (s = true) and negIn (s = false), dispatching on which group's clause the first argument is.

                                                            Equations
                                                            Instances For
                                                              Dependency graph

                                                              The interpretation: the SUCCINCT-REACH instance of an SO(TC) specification, defined inside the ordered input structure.

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

                                                                Characterization of the interpreted relations #

                                                                Each relation of the interpreted instance is characterized by a semantic counterpart of its defining formula, matching on the tags exactly as the formula does – the pattern of DescriptiveComplexity.TseitinLitSem.

                                                                Dependency graph
                                                                Dependency graph
                                                                def DescriptiveComplexity.SuccinctReachHard.srClSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (t : SRTag B stepS srcS tgtS) (u : Fin (srDim B stepS srcS tgtS)A) :

                                                                Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srClFml.

                                                                Equations
                                                                Instances For
                                                                  Dependency graph
                                                                  def DescriptiveComplexity.SuccinctReachHard.srSrcClSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (t : SRTag B stepS srcS tgtS) (u : Fin (srDim B stepS srcS tgtS)A) :

                                                                  Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srSrcClFml.

                                                                  Equations
                                                                  Instances For
                                                                    Dependency graph
                                                                    def DescriptiveComplexity.SuccinctReachHard.srTgtClSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (t : SRTag B stepS srcS tgtS) (u : Fin (srDim B stepS srcS tgtS)A) :

                                                                    Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srTgtClFml.

                                                                    Equations
                                                                    Instances For
                                                                      Dependency graph
                                                                      def DescriptiveComplexity.SuccinctReachHard.srLitStepSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : StepNode B stepS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :

                                                                      Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitStep.

                                                                      Equations
                                                                      Instances For
                                                                        Dependency graph
                                                                        def DescriptiveComplexity.SuccinctReachHard.srLitStepTopSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :

                                                                        Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitStepTop.

                                                                        Equations
                                                                        Instances For
                                                                          Dependency graph
                                                                          def DescriptiveComplexity.SuccinctReachHard.srLitSrcSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : SrcNode B srcS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :

                                                                          Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitSrc.

                                                                          Equations
                                                                          Instances For
                                                                            Dependency graph
                                                                            def DescriptiveComplexity.SuccinctReachHard.srLitSrcTopSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :

                                                                            Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitSrcTop.

                                                                            Equations
                                                                            Instances For
                                                                              Dependency graph
                                                                              def DescriptiveComplexity.SuccinctReachHard.srLitTgtSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : TgtNode B tgtS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :

                                                                              Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitTgt.

                                                                              Equations
                                                                              Instances For
                                                                                Dependency graph
                                                                                def DescriptiveComplexity.SuccinctReachHard.srLitTgtTopSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :

                                                                                Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitTgtTop.

                                                                                Equations
                                                                                Instances For
                                                                                  Dependency graph
                                                                                  def DescriptiveComplexity.SuccinctReachHard.srLitSem {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (tc tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :

                                                                                  Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitFml.

                                                                                  Equations
                                                                                  Instances For
                                                                                    Dependency graph
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_next_iff {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (t₁ t₂ : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.realize_srLitStep {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : StepNode B stepS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (v : Fin 2 × Fin (srDim B stepS srcS tgtS)A) :
                                                                                    (srLitStep B stepS srcS tgtS s σp k tx).Realize v srLitStepSem s σp k tx (fun (j : Fin (srDim B stepS srcS tgtS)) => v (selA B stepS srcS tgtS j)) fun (j : Fin (srDim B stepS srcS tgtS)) => v (selB B stepS srcS tgtS j)
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.realize_srLitSrc {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : SrcNode B srcS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (v : Fin 2 × Fin (srDim B stepS srcS tgtS)A) :
                                                                                    (srLitSrc B stepS srcS tgtS s σp k tx).Realize v srLitSrcSem s σp k tx (fun (j : Fin (srDim B stepS srcS tgtS)) => v (selA B stepS srcS tgtS j)) fun (j : Fin (srDim B stepS srcS tgtS)) => v (selB B stepS srcS tgtS j)
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.realize_srLitTgt {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : TgtNode B tgtS) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (v : Fin 2 × Fin (srDim B stepS srcS tgtS)A) :
                                                                                    (srLitTgt B stepS srcS tgtS s σp k tx).Realize v srLitTgtSem s σp k tx (fun (j : Fin (srDim B stepS srcS tgtS)) => v (selA B stepS srcS tgtS j)) fun (j : Fin (srDim B stepS srcS tgtS)) => v (selB B stepS srcS tgtS j)
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.realize_srLitStepTop {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (v : Fin 2 × Fin (srDim B stepS srcS tgtS)A) :
                                                                                    (srLitStepTop B stepS srcS tgtS s tx).Realize v srLitStepTopSem s tx (fun (j : Fin (srDim B stepS srcS tgtS)) => v (selA B stepS srcS tgtS j)) fun (j : Fin (srDim B stepS srcS tgtS)) => v (selB B stepS srcS tgtS j)
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.realize_srLitSrcTop {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (v : Fin 2 × Fin (srDim B stepS srcS tgtS)A) :
                                                                                    (srLitSrcTop B stepS srcS tgtS s tx).Realize v srLitSrcTopSem s tx (fun (j : Fin (srDim B stepS srcS tgtS)) => v (selA B stepS srcS tgtS j)) fun (j : Fin (srDim B stepS srcS tgtS)) => v (selB B stepS srcS tgtS j)
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.realize_srLitTgtTop {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (v : Fin 2 × Fin (srDim B stepS srcS tgtS)A) :
                                                                                    (srLitTgtTop B stepS srcS tgtS s tx).Realize v srLitTgtTopSem s tx (fun (j : Fin (srDim B stepS srcS tgtS)) => v (selA B stepS srcS tgtS j)) fun (j : Fin (srDim B stepS srcS tgtS)) => v (selB B stepS srcS tgtS j)
                                                                                    Dependency graph
                                                                                    Dependency graph
                                                                                    Dependency graph
                                                                                    Dependency graph
                                                                                    Dependency graph

                                                                                    From clause satisfaction to satisfaction of a kernel #

                                                                                    One lemma, instantiated once per clause group: a valuation of the interpreted instance satisfies every clause of a group exactly when the Tseitin valuation it induces satisfies every clause of that group's encoding and makes the group's root gate true. The group enters only through the three characterizations passed as hypotheses.

                                                                                    Dependency graph
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.clausesHold_group_iff {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (f : ((L.sum FirstOrder.Language.order).sum B.double.lang).Sentence) (hctx : Tseitin.maxCtx f srDim B stepS srcS tgtS) (grp : FirstOrder.Language.transSys.Relations 1) (cl : (m : ) × Tseitin.NodeAt f mFin 3SRTag B stepS srcS tgtS) (top : SRTag B stepS srcS tgtS) (vr : B.double.ι (m : ) × Tseitin.NodeAt f mSRTag B stepS srcS tgtS) (h₀ : IsBot a₀) (hclause : ∀ (t : SRTag B stepS srcS tgtS) (u : Fin (srDim B stepS srcS tgtS)A), FirstOrder.Language.Structure.RelMap grp ![(t, u)] (∃ (σp : (m : ) × Tseitin.NodeAt f m) (k : Fin 3), t = cl σp k Tseitin.IsClauseSem f hctx σp.snd k u) t = top Canon 0 u) (hlitNode : ∀ (s : Bool) (σp : (m : ) × Tseitin.NodeAt f m) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A), srLitSem s (cl σp k) tx u x ∃ (vt : B.double.ι (m : ) × Tseitin.NodeAt f m), tx = vr vt Tseitin.LitSem s f hctx σp.snd k u vt x) (hlitTop : ∀ (s : Bool) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A), srLitSem s top tx u x s = true tx = vr (Sum.inr 0, Tseitin.rootAt f) Canon 0 u Canon 0 x) (ν : (srInterp B stepS srcS tgtS).Map AProp) :
                                                                                    ClausesHold ((srInterp B stepS srcS tgtS).Map A) ν grp (Tseitin.SatCond f hctx fun (w : B.double.ι (m : ) × Tseitin.NodeAt f m) (u : Fin (srDim B stepS srcS tgtS)A) => ν (vr w, u)) ν (vr (Sum.inr 0, Tseitin.rootAt f), pad a₀ finZeroElim)

                                                                                    Clause satisfaction, group by group: the clauses of a group hold of a valuation exactly when the Tseitin clauses of that group's kernel hold of the induced valuation and the kernel's root gate is true at the padded empty tuple.

                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_step_cases {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (t : SRTag B stepS srcS tgtS) (u : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_step_litNode {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : (m : ) × Tseitin.NodeAt (stepK B stepS) m) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    srLitSem s (tagStepCl σp k) tx u x ∃ (vt : B.double.ι StepNode B stepS), tx = stepVar vt Tseitin.LitSem s (stepK B stepS) σp.snd k u vt x
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_step_litTop {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_src_cases {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (t : SRTag B stepS srcS tgtS) (u : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_src_litNode {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : (m : ) × Tseitin.NodeAt (srcK B srcS) m) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    srLitSem s (tagSrcCl σp k) tx u x ∃ (vt : B.double.ι SrcNode B srcS), tx = srcVar vt Tseitin.LitSem s (srcK B srcS) σp.snd k u vt x
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_src_litTop {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_tgt_cases {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (t : SRTag B stepS srcS tgtS) (u : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_tgt_litNode {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (σp : (m : ) × Tseitin.NodeAt (tgtK B tgtS) m) (k : Fin 3) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    srLitSem s (tagTgtCl σp k) tx u x ∃ (vt : B.double.ι TgtNode B tgtS), tx = tgtVar vt Tseitin.LitSem s (tgtK B tgtS) σp.snd k u vt x
                                                                                    Dependency graph
                                                                                    theorem DescriptiveComplexity.SuccinctReachHard.sr_tgt_litTop {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (s : Bool) (tx : SRTag B stepS srcS tgtS) (u x : Fin (srDim B stepS srcS tgtS)A) :
                                                                                    Dependency graph

                                                                                    The two walks correspond #

                                                                                    A state of the interpreted transition system is a set of atoms of the first copy of the doubled block, i.e. an assignment of B; a valuation witnessing a transition or an endpoint condition is the canonical Tseitin valuation of the corresponding kernel. The two directions use the two translations between states and assignments, so no round trip is ever needed.

                                                                                    noncomputable def DescriptiveComplexity.SuccinctReachHard.canonTv {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (μ : B.double.Assignment A) (f : ((L.sum FirstOrder.Language.order).sum B.double.lang).Sentence) (hctx : Tseitin.maxCtx f srDim B stepS srcS tgtS) :
                                                                                    B.double.ι (m : ) × Tseitin.NodeAt f m(Fin (srDim B stepS srcS tgtS)A)Prop

                                                                                    The Tseitin valuation of a kernel induced by an assignment of the doubled block: block atoms take their values, gates their canonical ones.

                                                                                    Equations
                                                                                    Instances For
                                                                                      Dependency graph
                                                                                      Dependency graph
                                                                                      Dependency graph
                                                                                      Dependency graph
                                                                                      Dependency graph
                                                                                      theorem DescriptiveComplexity.SuccinctReachHard.realizeWith_of_satCond {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (h₀ : IsBot a₀) (f : ((L.sum FirstOrder.Language.order).sum B.double.lang).Sentence) (hctx : Tseitin.maxCtx f srDim B stepS srcS tgtS) (tv : B.double.ι (m : ) × Tseitin.NodeAt f m(Fin (srDim B stepS srcS tgtS)A)Prop) (hsat : Tseitin.SatCond f hctx tv) (hroot : tv (Sum.inr 0, Tseitin.rootAt f) (pad a₀ finZeroElim)) :

                                                                                      The Tseitin valuation induced by a kernel's satisfaction of its clauses realizes the kernel.

                                                                                      Dependency graph

                                                                                      Realization of a kernel is realization of the sentence it renames.

                                                                                      Dependency graph

                                                                                      States #

                                                                                      The state of the interpreted system carried by an assignment of B: the atoms of the first copy that it satisfies.

                                                                                      Equations
                                                                                      Instances For
                                                                                        Dependency graph
                                                                                        def DescriptiveComplexity.SuccinctReachHard.srAssignOf {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} (a₀ : A) (S : (srInterp B stepS srcS tgtS).Map AProp) :

                                                                                        The assignment of B read off a state of the interpreted system: its canonically padded atoms of the first copy.

                                                                                        Equations
                                                                                        Instances For
                                                                                          Dependency graph
                                                                                          noncomputable def DescriptiveComplexity.SuccinctReachHard.srCanon {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (μ : B.double.Assignment A) :
                                                                                          (srInterp B stepS srcS tgtS).Map AProp

                                                                                          The canonical valuation of the interpreted instance under an assignment of the doubled block.

                                                                                          Equations
                                                                                          • One or more equations did not get rendered due to their size.
                                                                                          Instances For
                                                                                            Dependency graph
                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.srCanon_step {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (μ : B.double.Assignment A) :
                                                                                            (fun (w : B.double.ι StepNode B stepS) (u : Fin (srDim B stepS srcS tgtS)A) => srCanon μ (stepVar w, u)) = canonTv μ (stepK B stepS)
                                                                                            Dependency graph
                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.srCanon_src {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (μ : B.double.Assignment A) :
                                                                                            (fun (w : B.double.ι SrcNode B srcS) (u : Fin (srDim B stepS srcS tgtS)A) => srCanon μ (srcVar w, u)) = canonTv μ (srcK B srcS)
                                                                                            Dependency graph
                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.srCanon_tgt {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] (μ : B.double.Assignment A) :
                                                                                            (fun (w : B.double.ι TgtNode B tgtS) (u : Fin (srDim B stepS srcS tgtS)A) => srCanon μ (tgtVar w, u)) = canonTv μ (tgtK B tgtS)
                                                                                            Dependency graph

                                                                                            The canonical valuation reads the state its assignment's first copy carries.

                                                                                            Dependency graph

                                                                                            The canonical valuation writes the state its assignment's second copy carries.

                                                                                            Dependency graph

                                                                                            From the specification's walk to the interpreted one #

                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.stepRel_srStateOf {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (h₀ : IsBot a₀) (ρ σ : B.Assignment A) (h : A stepS) :
                                                                                            StepRel ((srInterp B stepS srcS tgtS).Map A) (srStateOf ρ) (srStateOf σ)

                                                                                            A transition of the specification is a transition of the interpreted system.

                                                                                            Dependency graph
                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.isStart_srStateOf {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (h₀ : IsBot a₀) (ρ : B.Assignment A) (h : A srcS) :
                                                                                            IsStart ((srInterp B stepS srcS tgtS).Map A) (srStateOf ρ)

                                                                                            A source state of the specification is a source state of the interpreted system.

                                                                                            Dependency graph
                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.isGoal_srStateOf {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (h₀ : IsBot a₀) (ρ : B.Assignment A) (h : A tgtS) :
                                                                                            IsGoal ((srInterp B stepS srcS tgtS).Map A) (srStateOf ρ)

                                                                                            A target state of the specification is a target state of the interpreted system.

                                                                                            Dependency graph

                                                                                            From the interpreted walk back to the specification's #

                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.realize_step_of_stepRel {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (h₀ : IsBot a₀) (S S' : (srInterp B stepS srcS tgtS).Map AProp) (h : StepRel ((srInterp B stepS srcS tgtS).Map A) S S') :
                                                                                            A stepS

                                                                                            A transition of the interpreted system is a transition of the specification, between the assignments its two states carry.

                                                                                            Dependency graph
                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.realize_src_of_isStart {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (h₀ : IsBot a₀) (S : (srInterp B stepS srcS tgtS).Map AProp) (h : IsStart ((srInterp B stepS srcS tgtS).Map A) S) :
                                                                                            A srcS

                                                                                            A source state of the interpreted system carries an assignment satisfying the source sentence.

                                                                                            Dependency graph
                                                                                            theorem DescriptiveComplexity.SuccinctReachHard.realize_tgt_of_isGoal {L : FirstOrder.Language} {B : SOBlock} {stepS : (((L.sum FirstOrder.Language.order).sum B.lang).sum B.lang).Sentence} {srcS tgtS : ((L.sum FirstOrder.Language.order).sum B.lang).Sentence} {A : Type} [L.Structure A] [LinearOrder A] {a₀ : A} (h₀ : IsBot a₀) (S : (srInterp B stepS srcS tgtS).Map AProp) (h : IsGoal ((srInterp B stepS srcS tgtS).Map A) S) :
                                                                                            A tgtS

                                                                                            A target state of the interpreted system carries an assignment satisfying the target sentence.

                                                                                            Dependency graph

                                                                                            Correctness of the interpretation #

                                                                                            Correctness of the interpretation: the interpreted transition system reaches a target state from a source state exactly when the specification accepts the input structure.

                                                                                            Dependency graph

                                                                                            The discharge #

                                                                                            noncomputable def DescriptiveComplexity.sotcReduction {L : FirstOrder.Language} (Q : DecisionProblem L) (spec : SOTCSpec L) (hspec : ∀ (A : Type) [inst : L.Structure A] [inst_1 : LinearOrder A] [Finite A] [Nonempty A], Q.Holds A spec.Accepts A) :

                                                                                            The generic reduction to SUCCINCT-REACH: an ordered first-order reduction from any problem defined, on nonempty finite ordered structures, by an SO(TC) specification.

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

                                                                                              Hardness: every SO(TC) definable problem admits an ordered first-order reduction to SUCCINCT-REACH.

                                                                                              Dependency graph

                                                                                              SUCCINCT-REACH is PSPACE-complete. Membership is DescriptiveComplexity.succinctReach_mem_PSPACE, the SO(TC) specification whose states are the states of the transition system; hardness is DescriptiveComplexity.succinctReach_hard_of_sotcDefinable, the three-group Tseitin discharge.

                                                                                              Dependency graph