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
- an atom
(i, x̄)of the first copy is a state variable, marked bystateVar; - the atom
(i, x̄)of the second copy is its next-state copy, paired to it bynext; - the gates of each encoding are auxiliary variables, private to their group.
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 #
The transition sentence, read over the doubled block.
Equations
Instances For
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 #
Subformula positions of the transition kernel.
Equations
- DescriptiveComplexity.SuccinctReachHard.StepNode B stepS = ((m : ℕ) × DescriptiveComplexity.Tseitin.NodeAt (DescriptiveComplexity.SuccinctReachHard.stepK B stepS) m)
Instances For
Dependency graph
Subformula positions of the source kernel.
Equations
Instances For
Dependency graph
Subformula positions of the target kernel.
Equations
Instances For
Dependency graph
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
The clause of the transition group at a position and kind.
Equations
Instances For
Dependency graph
The top unit clause of the transition group.
Instances For
Dependency graph
The clause of the source group at a position and kind.
Equations
Instances For
Dependency graph
The top unit clause of the source group.
Equations
Instances For
Dependency graph
The clause of the target group at a position and kind.
Equations
Instances For
Dependency graph
The top unit clause of the target group.
Equations
Instances For
Dependency graph
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
A gate variable of the transition group.
Equations
Instances For
Dependency graph
A gate variable of the source group.
Equations
Instances For
Dependency graph
A gate variable of the target group.
Equations
Instances For
Dependency graph
The Tseitin variable tags of the transition group, as tags of the interpretation.
Equations
Instances For
Dependency graph
The Tseitin variable tags of the source group, as tags.
Equations
Instances For
Dependency graph
The Tseitin variable tags of the target group, as tags.
Equations
Instances For
Dependency graph
The defining formulas #
The coordinate selector of a unary relation's single argument.
Equations
- DescriptiveComplexity.SuccinctReachHard.selU B stepS srcS tgtS j = (0, j)
Instances For
Dependency graph
The coordinate selector of a binary relation's first argument.
Equations
- DescriptiveComplexity.SuccinctReachHard.selA B stepS srcS tgtS j = (0, j)
Instances For
Dependency graph
The coordinate selector of a binary relation's second argument.
Equations
- DescriptiveComplexity.SuccinctReachHard.selB B stepS srcS tgtS j = (1, j)
Instances For
Dependency graph
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
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
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srClFml B stepS srcS tgtS (Sum.inl (Sum.inl (Sum.inr val))) = DescriptiveComplexity.canonF 0 (DescriptiveComplexity.SuccinctReachHard.selU B stepS srcS tgtS)
- DescriptiveComplexity.SuccinctReachHard.srClFml B stepS srcS tgtS t = ⊥
Instances For
Dependency graph
The defining formula of srcCl.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srSrcClFml B stepS srcS tgtS t = ⊥
Instances For
Dependency graph
The defining formula of tgtCl.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srTgtClFml B stepS srcS tgtS t = ⊥
Instances For
Dependency graph
The defining formula of stateVar: the atoms of the first copy of the
doubled block, at every tuple.
Equations
- DescriptiveComplexity.SuccinctReachHard.srStateFml B stepS srcS tgtS (Sum.inr (Sum.inl (Sum.inl val))) = ⊤
- DescriptiveComplexity.SuccinctReachHard.srStateFml B stepS srcS tgtS t = ⊥
Instances For
Dependency graph
The defining formula of next: the atom of the second copy at the same
relation variable and the same tuple.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srNextFml B stepS srcS tgtS t₁ t₂ = ⊥
Instances For
Dependency graph
The literals of a node clause of the transition group: an atom of the block, or a gate of that group.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitStep B stepS srcS tgtS s σp k tx = ⊥
Instances For
Dependency graph
The literal of the top unit clause of the transition group: its root gate, positively, at fully padded tuples.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitStepTop B stepS srcS tgtS s tx = ⊥
Instances For
Dependency graph
The literals of a node clause of the source group.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitSrc B stepS srcS tgtS s σp k tx = ⊥
Instances For
Dependency graph
The literal of the top unit clause of the source group.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitSrcTop B stepS srcS tgtS s tx = ⊥
Instances For
Dependency graph
The literals of a node clause of the target group.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitTgt B stepS srcS tgtS s σp k tx = ⊥
Instances For
Dependency graph
The literal of the top unit clause of the target group.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitTgtTop B stepS srcS tgtS s tx = ⊥
Instances For
Dependency graph
The defining formula of posIn (s = true) and negIn (s = false),
dispatching on which group's clause the first argument is.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitFml B stepS srcS tgtS s (Sum.inl (Sum.inl (Sum.inl (σp, k)))) tx = DescriptiveComplexity.SuccinctReachHard.srLitStep B stepS srcS tgtS s σp k tx
- DescriptiveComplexity.SuccinctReachHard.srLitFml B stepS srcS tgtS s (Sum.inl (Sum.inl (Sum.inr val))) tx = DescriptiveComplexity.SuccinctReachHard.srLitStepTop B stepS srcS tgtS s tx
- DescriptiveComplexity.SuccinctReachHard.srLitFml B stepS srcS tgtS s (Sum.inl (Sum.inr (Sum.inl (Sum.inr val)))) tx = DescriptiveComplexity.SuccinctReachHard.srLitSrcTop B stepS srcS tgtS s tx
- DescriptiveComplexity.SuccinctReachHard.srLitFml B stepS srcS tgtS s (Sum.inl (Sum.inr (Sum.inr (Sum.inr val)))) tx = DescriptiveComplexity.SuccinctReachHard.srLitTgtTop B stepS srcS tgtS s tx
- DescriptiveComplexity.SuccinctReachHard.srLitFml B stepS srcS tgtS s (Sum.inr val) tx = ⊥
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.
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srStateFml.
Equations
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srNextFml.
Equations
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srClFml.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srClSem (Sum.inl (Sum.inl (Sum.inr val))) u = DescriptiveComplexity.Canon 0 u
- DescriptiveComplexity.SuccinctReachHard.srClSem t u = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srSrcClFml.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srSrcClSem (Sum.inl (Sum.inr (Sum.inl (Sum.inr val)))) u = DescriptiveComplexity.Canon 0 u
- DescriptiveComplexity.SuccinctReachHard.srSrcClSem t u = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srTgtClFml.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srTgtClSem (Sum.inl (Sum.inr (Sum.inr (Sum.inr val)))) u = DescriptiveComplexity.Canon 0 u
- DescriptiveComplexity.SuccinctReachHard.srTgtClSem t u = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitStep.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitStepSem s σp k tx u x = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitStepTop.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitStepTopSem s tx u x = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitSrc.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitSrcSem s σp k tx u x = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitSrcTop.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitSrcTopSem s tx u x = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitTgt.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitTgtSem s σp k tx u x = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitTgtTop.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.SuccinctReachHard.srLitTgtTopSem s tx u x = False
Instances For
Dependency graph
Semantic counterpart of DescriptiveComplexity.SuccinctReachHard.srLitFml.
Equations
- DescriptiveComplexity.SuccinctReachHard.srLitSem s (Sum.inl (Sum.inl (Sum.inl (σp, k)))) tx u x = DescriptiveComplexity.SuccinctReachHard.srLitStepSem s σp k tx u x
- DescriptiveComplexity.SuccinctReachHard.srLitSem s (Sum.inl (Sum.inl (Sum.inr val))) tx u x = DescriptiveComplexity.SuccinctReachHard.srLitStepTopSem s tx u x
- DescriptiveComplexity.SuccinctReachHard.srLitSem s (Sum.inl (Sum.inr (Sum.inl (Sum.inl (σp, k))))) tx u x = DescriptiveComplexity.SuccinctReachHard.srLitSrcSem s σp k tx u x
- DescriptiveComplexity.SuccinctReachHard.srLitSem s (Sum.inl (Sum.inr (Sum.inl (Sum.inr val)))) tx u x = DescriptiveComplexity.SuccinctReachHard.srLitSrcTopSem s tx u x
- DescriptiveComplexity.SuccinctReachHard.srLitSem s (Sum.inl (Sum.inr (Sum.inr (Sum.inl (σp, k))))) tx u x = DescriptiveComplexity.SuccinctReachHard.srLitTgtSem s σp k tx u x
- DescriptiveComplexity.SuccinctReachHard.srLitSem s (Sum.inl (Sum.inr (Sum.inr (Sum.inr val)))) tx u x = DescriptiveComplexity.SuccinctReachHard.srLitTgtTopSem s tx u x
- DescriptiveComplexity.SuccinctReachHard.srLitSem s (Sum.inr val) tx u x = False
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
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
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
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
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.
The Tseitin valuation of a kernel induced by an assignment of the doubled block: block atoms take their values, gates their canonical ones.
Equations
- DescriptiveComplexity.SuccinctReachHard.canonTv μ f hctx (Sum.inl i) u = μ i (DescriptiveComplexity.pref ⋯ u)
- DescriptiveComplexity.SuccinctReachHard.canonTv μ f hctx (Sum.inr σp) u = DescriptiveComplexity.Tseitin.canonVal μ f σp.fst σp.snd (DescriptiveComplexity.pref ⋯ u)
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
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
- DescriptiveComplexity.SuccinctReachHard.srStateOf ρ e = match e.1 with | Sum.inr (Sum.inl (Sum.inl i)) => ρ i (DescriptiveComplexity.pref ⋯ e.2) | x => False
Instances For
Dependency graph
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
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
Dependency graph
Dependency graph
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 #
A transition of the specification is a transition of the interpreted system.
Dependency graph
A source state of the specification is a source state of the interpreted system.
Dependency graph
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 #
A transition of the interpreted system is a transition of the specification, between the assignments its two states carry.
Dependency graph
A source state of the interpreted system carries an assignment satisfying the source sentence.
Dependency graph
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 #
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.