Documentation

DescriptiveComplexity.Exponential.GameRounds

Moving whole rounds #

The state of the game that carries DescriptiveComplexity.EXPTIME to SO-GAME is a tuple of roundsDescriptiveComplexity.repMerged of the point block – carrying a phase in its tag bits. Its moves never touch one relation variable at a time: they keep a round, overwrite a round, or shift a round onto another one (the points of the node just chosen become the points the next position reads). This file states those three at the level of rounds, on top of the variable-level gadgets of DescriptiveComplexity.Exponential.GameMove.

Nothing here mentions an expansion: a round is any block, replicated.

One round's copy of a variable #

def DescriptiveComplexity.repIx (B : SOBlock) (n : ) (i : Fin n) :
B.ι(repMerged B n).ι

Round i's copy of the variable x, as a relation variable of the merged block.

Equations
Instances For
    Dependency graph
    theorem DescriptiveComplexity.repIx_arity (B : SOBlock) (n : ) (i : Fin n) (x : B.ι) :
    (repMerged B n).arity (repIx B n i x) = B.arity x
    Dependency graph
    theorem DescriptiveComplexity.repBlockAssign_repIx (B : SOBlock) (A : Type) (n : ) (ρs : Fin nB.Assignment A) (i : Fin n) (x : B.ι) (v : Fin (B.arity x)A) :
    (repBlockAssign B A n ρs (repIx B n i x) fun (j : Fin ((repMerged B n).arity (repIx B n i x))) => v (Fin.cast j)) ρs i x v

    Reading back one variable of one round.

    Dependency graph

    Whole rounds, moved #

    noncomputable def DescriptiveComplexity.repPairIx (B : SOBlock) (n : ) (a b : Fin n) :
    List { p : (repMerged B n).ι × (repMerged B n).ι // (repMerged B n).arity p.2 = (repMerged B n).arity p.1 }

    The variable pairs saying that round a of the first copy is round b of the second.

    Equations
    Instances For
      Dependency graph
      noncomputable def DescriptiveComplexity.roundPairIx (B : SOBlock) (n : ) (ab : List (Fin n × Fin n)) :
      List { p : (repMerged B n).ι × (repMerged B n).ι // (repMerged B n).arity p.2 = (repMerged B n).arity p.1 }

      The variable pairs of a list of round pairs.

      Equations
      Instances For
        Dependency graph

        The move carries round a onto round b, for each listed pair. The diagonal list freezes the rounds it names.

        Equations
        Instances For
          Dependency graph
          theorem DescriptiveComplexity.realize_roundsAgreeS {L : FirstOrder.Language} {B : SOBlock} {n : } {T : Type} [Finite T] {A : Type} [instL : L.Structure A] [LinearOrder A] (p q : T) (ρs σs : Fin nB.Assignment A) (ab : List (Fin n × Fin n)) :
          A roundsAgreeS L B n T ab eab, ρs e.1 = σs e.2

          What moving rounds says: the listed rounds of the state the move leaves are the corresponding rounds of the state it enters.

          Dependency graph