From FO(TC) to the Krom fragment, through the complement #
The complement of an FO(TC) definable problem is SO-Krom definable
(DescriptiveComplexity.SigmaSOKromDefinable.compl_of_tcDefinable), hence in
DescriptiveComplexity.NL.
The program is the general form of the one that defines UNREACH in
DescriptiveComplexity.Problems.Reachability. Guess the set U of nodes from which
an accepting node is reachable; a node being a mode together with a k-tuple,
that set is one k-ary relation variable per mode – the block's index type is
the specification's mode type. The clauses run over 2k universally quantified
first-order variables, the first k holding the tuple x̄ of the current node
and the last k the tuple ȳ of the next one:
tgt_p(x̄) → U_p(x̄) (one clause per mode `p`)
step_{p,q}(x̄, ȳ) → ¬U_q(ȳ) ∨ U_p(x̄) (one per pair of modes)
src_p(x̄) → ¬U_p(x̄) (one clause per mode `p`)
All guards are the specification's own first-order formulas, relabelled along
the two halves of Fin (k + k); the middle family is the only one with two
literals, and it is what makes the program Krom rather than Horn.
Correctness is the argument the concrete case already used, with nodes in place
of vertices: the witness is U = {a | some accepting node is reachable from a}, and conversely a set containing the accepting nodes and closed under
predecessors contains every node from which one is reachable, so a starting
node could not be excluded if the structure were accepted.
This is the direction that is free. The converse – expressing reachability
itself in the Krom fragment – is Immerman–Szelepcsényi, proved through FO(TC)
in DescriptiveComplexity.ImmermanSzelepcsenyi; see also the discussion in
DescriptiveComplexity.LogSpace.
The block, the halves, and the modes #
The block of the Krom program: one k-ary relation variable per mode,
together holding the set of nodes from which an accepting node is reachable.
An abbrev, so that the arity reduces where tuples are applied.
Equations
Instances For
Dependency graph
The first half of the 2k universally quantified variables: the tuple x̄
of the current node.
Equations
Instances For
Dependency graph
The second half of the 2k universally quantified variables: the tuple ȳ
of the next node.
Equations
Instances For
Dependency graph
The atom U_m at one of the two halves.
Equations
- DescriptiveComplexity.TCKrom.uAtom spec m half = { idx := m, args := half }
Instances For
Dependency graph
The literal U_m at one of the two halves, positive or negated.
Equations
- DescriptiveComplexity.TCKrom.uLit spec m half pos = { atom := DescriptiveComplexity.TCKrom.uAtom spec m half, positive := pos }
Instances For
Dependency graph
The modes, as a list: the clause families are instantiated at each of them.
Equations
Instances For
Dependency graph
Dependency graph
The clauses #
An accepting node belongs to U.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
U is closed under predecessors: a step into U starts in U.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
No starting node belongs to U.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The Krom program defining the complement of an FO(TC) definable problem.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The clauses of the program are exactly the three families.
Dependency graph
Semantics #
The set of nodes guessed by an assignment of the block.
Equations
- DescriptiveComplexity.TCKrom.URel spec ρ a = ρ a.1 a.2
Instances For
Dependency graph
The valuation of the 2k variables holding the tuples of two nodes.
Equations
- DescriptiveComplexity.TCKrom.pairVal spec x y i = Fin.addCases x y i
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
What it means for an assignment to satisfy the program: the guessed set contains the accepting nodes, is closed under predecessors, and avoids the starting nodes.
Dependency graph
The set of nodes from which an accepting node is reachable: the witness of the nontrivial direction.
Equations
Instances For
Dependency graph
Dependency graph
A set containing the accepting nodes and closed under predecessors contains every node from which an accepting node is reachable.
Dependency graph
Correctness: the program is satisfiable exactly when the structure is not accepted.
Dependency graph
The complement of an FO(TC) definable problem is SO-Krom definable:
guess the set of nodes from which an accepting node is reachable – one k-ary
relation variable per mode – close it under predecessors with the 2-clause
¬U_q(ȳ) ∨ U_p(x̄), and forbid the starting nodes. This is the direction a
clausal fragment gives for free; the converse is Immerman–Szelepcsényi.
Dependency graph
The complement of an FO(TC) definable problem is in NL.