Counting the witnesses of a second-order block: #P-definability #
Fagin's theorem reads NP as the problems defined by a sentence ∃X̄. φ with φ
first-order. The counting analog, due to Saluja, Subrahmanyam and Thakur
(1995), reads #P as the functions counting the
witnesses of such a sentence, over ordered structures: the number of
assignments of the block X̄ under which the first-order kernel φ holds.
This is also the prenex normal form ΣX̄. φ of the logic ΣQSO(FO) of Arenas,
Muñoz and Riveros (2020), who show that every formula
of that logic can be brought to it.
This file sets up that notion:
DescriptiveComplexity.witnessCount B φ Ais the number of assignments of the blockBonAsatisfying the kernelφ;DescriptiveComplexity.SharpPDefinable Cstates that the counting problemCis the witness count of some kernel over the ordered expansion, whatever the linear order of the instance. The order is a parameter here and not a guessed relation as inDescriptiveComplexity.SigmaSODefinable: guessing it would multiply every count by the number of linear orders;DescriptiveComplexity.CountingProblem.ofKernel B φis the witness-counting problem of an order-free kernel, the counting version of the decision problem the kernel defines.
The closure theorem, DescriptiveComplexity.SharpPDefinable.of_orderedParsimonious,
pulls a kernel back through a parsimonious reduction. The decision-side
pullback of DescriptiveComplexity.SecondOrderPull only needs each assignment of the
pulled block to come from one of the original block; counting needs the
correspondence to be a bijection (DescriptiveComplexity.SOBlock.pullAssignEquiv),
which it is because the interpreted universe is all of Tag × A^d.
Counting witnesses #
The number of assignments of the block B on the structure A under which
the first-order kernel φ holds.
Equations
- DescriptiveComplexity.witnessCount B φ A = Nat.card { ρ : B.Assignment A // A ⊨ φ }
Instances For
Dependency graph
Transport of block assignments along an equivalence, as an equivalence.
Equations
Instances For
Dependency graph
The witness count is isomorphism-invariant.
Dependency graph
Block assignments on a finite universe are finitely many.
Dependency graph
Pulling a witness count back through an interpretation #
Pulling a witness count back through an interpretation: the witnesses of a kernel in the interpreted structure are, bijectively, the witnesses of the pulled kernel, over the pulled block, in the base structure.
Dependency graph
#P-definability #
A counting problem is #P-definable if, on nonempty finite structures,
it counts the witnesses of an existential second-order sentence over the
ordered expansion: for some block B and first-order kernel φ, its value is
the number of assignments of B satisfying φ, whatever the linear order of
the instance.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
#P-definability is closed under ordered parsimonious reductions.
Registered in the Lax archive as
Lax366625.SharpPClosure.SharpP_mem_of_orderedParsimonious.
Dependency graph
#P-definability is closed under parsimonious reductions.
Dependency graph
The witness-counting problem of an order-free kernel #
The counting problem of an existential second-order sentence: the number of
witnesses of the block B for the first-order kernel φ. It is the counting
version of the decision problem ∃B. φ, which is its support
(DescriptiveComplexity.CountingProblem.ofKernel_support_iff).
Equations
- DescriptiveComplexity.CountingProblem.ofKernel B φ = { Count := fun (A : Type) (inst : L.Structure A) => DescriptiveComplexity.witnessCount B φ A, iso_invariant := ⋯ }
Instances For
Dependency graph
Dependency graph
The support of a witness-counting problem is the problem its sentence defines.
Dependency graph
The lift of an order-free kernel to the ordered expansion.