Documentation

DescriptiveComplexity.Exponential.GameMove

Reading a block sentence in a copy, and moving one variable onto another #

Two gadgets every phased game needs beyond DescriptiveComplexity.Exponential.GamePhase, both stated for an arbitrary block C and finite tag type T.

A one-copy sentence, read in a copy #

A sentence about one assignment of C, read in the first copy of a move: the tag bits are invisible to it.

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

    A sentence about one assignment of C, read in the second copy of a move – the state the move enters.

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

      The first copy of a move is the state it leaves.

      Dependency graph

      The second copy of a move is the state it enters.

      Dependency graph

      A sentence about the state a move leaves, tag bits included. Unlike DescriptiveComplexity.realize_moveFstLHom this reads a sentence over the tagged block, which is what a move's guard on its own phase (DescriptiveComplexity.atTagF) is.

      Dependency graph
      theorem DescriptiveComplexity.eq_tagAssign_of_atTagF {L : FirstOrder.Language} {C : SOBlock} {T : Type} [Finite T] {A : Type} [instL : L.Structure A] [LinearOrder A] (p : T) (σ : (C.withTag T).Assignment A) (h : A atTagF L C T p) :

      A state at a phase is a tagged one. DescriptiveComplexity.atTagF is the one-copy counterpart of DescriptiveComplexity.exists_tagAssign_two: a start sentence that asserts it admits no junk assignment.

      Dependency graph

      One variable moved onto another #

      noncomputable def DescriptiveComplexity.varPairAgreeS (L : FirstOrder.Language) (C : SOBlock) (T : Type) [Finite T] (i j : C.ι) (h : C.arity j = C.arity i) :

      The move copies the variable i of the state it leaves onto the variable j of the state it enters. With j = i this is DescriptiveComplexity.varAgreeS, i.e., freezing.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Dependency graph
        noncomputable def DescriptiveComplexity.varsPairAgreeS (L : FirstOrder.Language) (C : SOBlock) (T : Type) [Finite T] (ps : List { p : C.ι × C.ι // C.arity p.2 = C.arity p.1 }) :

        The listed variables are moved into place by the move.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Dependency graph
          theorem DescriptiveComplexity.realize_varPairAgreeS {L : FirstOrder.Language} {C : SOBlock} {T : Type} [Finite T] {A : Type} [instL : L.Structure A] [LinearOrder A] (σ τ : (C.withTag T).Assignment A) (i j : C.ι) (h : C.arity j = C.arity i) :
          A varPairAgreeS L C T i j h ∀ (x : Fin (C.arity i)A), σ (Sum.inr i) x τ (Sum.inr j) fun (k : Fin ((C.withTag T).arity (Sum.inr j))) => x (Fin.cast h k)
          Dependency graph
          theorem DescriptiveComplexity.realize_varsPairAgreeS {L : FirstOrder.Language} {C : SOBlock} {T : Type} [Finite T] {A : Type} [instL : L.Structure A] [LinearOrder A] (σ τ : (C.withTag T).Assignment A) (ps : List { p : C.ι × C.ι // C.arity p.2 = C.arity p.1 }) :
          A varsPairAgreeS L C T ps pps, ∀ (x : Fin (C.arity (↑p).1)A), σ (Sum.inr (↑p).1) x τ (Sum.inr (↑p).2) fun (k : Fin ((C.withTag T).arity (Sum.inr (↑p).2))) => x (Fin.cast k)
          Dependency graph