The graph game, as a second-order alternating game #
The four sentences of DescriptiveComplexity.ExpExpansion.graphGame, and what
each of them says. Every one is a static disjunction over the phase type,
which is finite: the phases carry the tags of the two nodes a state holds, so
naming a tag costs a disjunct rather than a quantifier.
univ– the phasesDescriptiveComplexity.Ph.IsUnivselects, and nothing else;won– a leafpre s tx ty 0 pol, conjoined with that question's kernel. The leaf is existential and has no move, so a false kernel loses: a player who asked for a proof he cannot give is stuck there;start– astartPickphase whose rounds all hold points (DescriptiveComplexity.ExpExpansion.allRoundsPointF), which is the invariant every node move preserves and every prefix consumes;move– one disjunct per pair of a phase and one of the movesDescriptiveComplexity.ExpExpansion.movesFromallows out of it. A move names its target phase exactly (DescriptiveComplexity.atTagTwoF, so no junk state is reachable), lists the rounds it carries over – kept, shifted, or neither – and lists the rounds of the state it enters that it guards to be points.
The one asymmetry worth naming: the move that fills a play round guards
nothing. DescriptiveComplexity.altBlockQuant ranges over all assignments and
the point guards of a prefix live inside its kernel
(DescriptiveComplexity.ExpExpansion.stepF), so guarding there would count them
twice and break the correspondence with
DescriptiveComplexity.ExpExpansion.exists_paramKernel.
The rounds a move carries over #
Carry over every round: the move freezes the state.
Equations
- DescriptiveComplexity.keepAll n = List.map (fun (i : Fin n) => (i, i)) (List.finRange n)
Instances For
Dependency graph
Carry over every round outside S, in place.
Equations
- DescriptiveComplexity.keepOff n S = List.map (fun (i : Fin n) => (i, i)) (List.filter (fun (i : Fin n) => !S i) (List.finRange n))
Instances For
Dependency graph
The rounds holding the second node's points.
Instances For
Dependency graph
The rounds holding the second node's points, as a list.
Equations
Instances For
Dependency graph
Where round i of the state a shifting move enters reads from: the second
node's points become the first node's.
Instances For
Dependency graph
Carry the second node's points onto the first node's slots.
Equations
- DescriptiveComplexity.keepShift d n h = List.map (fun (i : Fin n) => (DescriptiveComplexity.shiftIx d n h i, i)) (List.finRange n)
Instances For
Dependency graph
The moves out of a phase #
A move of the graph game, seen from the phase it leaves: where it goes, which rounds it carries over – as pairs (round of the state left, round of the state entered) – and which rounds of the state entered it guards to hold a point.
- tgt : Ph T Dm
The phase the move enters.
The rounds it carries over.
The rounds of the state it enters that it guards to hold a point.
Instances For
Dependency graph
Entering the prefix that decides the question s about the nodes tagged
tx, ty: nothing moves, and all D s tx ty play rounds are still to
fill.
Equations
- DescriptiveComplexity.ExpExpansion.preEntry D hD s tx ty = { tgt := DescriptiveComplexity.Ph.pre s tx ty ⟨D s tx ty, ⋯⟩ true, keep := DescriptiveComplexity.keepAll n, guard := [] }
Instances For
Dependency graph
The moves out of each phase. This is the game.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The four sentences #
The sentence of one move: it names the phase it leaves and the phase it enters, carries its rounds over, and guards the rounds it says are points.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The graph game: the game whose positions are the nodes of the AND/OR graph an interpretation draws on the expanded universe, together with the prefix positions that decide the six questions about them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What the four sentences say #
The one-copy structure a state of the graph game is read against.
Equations
- DescriptiveComplexity.ExpExpansion.stateStructure σ = (X.gameBlock n T Dm).structure₁ σ