Descriptive complexity: counting problems, #P, and FP
No public endorsements yet.
Loading review…
Sign in with ORCIDAbstract
Counting problems in descriptive complexity, from the descriptive-complexity library: the classes #P and FP, defined by logics, their closure under parsimonious first-order reductions, and their complete problems. It builds on the NP core registered as lax-904597 and on the submissions on logarithmic space (lax-485149), polynomial time (lax-535992), and AC⁰ (lax-895169).
A counting problem attaches an isomorphism-invariant natural number to every finite structure, and a parsimonious reduction, after Simon, is a first-order interpretation that preserves it. #P is the class of the numbers of witnesses of existential second-order sentences over ordered structures, after Saluja, Subrahmanyam, and Thakur, and it coincides with the quantitative logic ΣQSO(FO) of Arenas, Muñoz, and Riveros. FP is the class defined by quantitative first-order logic with least fixed points, equivalently by least fixed points holding the binary digits of the number. Both classes are closed under ordered parsimonious reductions, including relativized ones.
#SAT and the number of accepting runs of a nondeterministic Turing machine are parsimoniously #P-complete, the latter giving #P as the class of the problems reducing to it. The number written by a Boolean circuit, by unit propagation on a Horn formula, and by a deterministic Turing machine are parsimoniously FP-complete. NP is the class of the supports of #P, the support of a parsimoniously #P-hard problem is NP-hard, and the support of a problem of FP is in PTIME; so a parsimoniously #P-hard problem in FP, or one whose support is in PTIME, gives NP ⊆ PTIME.
The proofs are those of the library's development after version 1.2.2, on its Lean 4.33 branch, sliced to what these statements use; they assume the submission's own statements and those of the submissions it requires where they compose. The library and its documentation are at https://github.com/PierreSenellart/descriptive-complexity and https://pierresenellart.github.io/descriptive-complexity/DescriptiveComplexity.html. The Lean code was written with the assistance of several Claude models; the design and the statements are the author's.
Concepts
- thm✓
CountingRunsComplete - lem✓
CountingRunsValue - thm✓
FPAndPTIME - thm✓
FPByDigits - thm✓
FPClosure - thm✓
FPComplete - lem✓
NumbersValue - thm✓
SharpPAndNP - thm✓
SharpPAsQuantitativeLogic - thm✓
SharpPClosure - thm✓
SharpSatComplete - lem✓
SharpSatValue
- def
CountingClasses - def
CountingProblems - def
CountingRuns - def
CountingSat - def
HornNumbers - def
MachineNumbers - def
NumberedCircuits - def
QuantitativeLogic - def
SecondOrderCounting - def
WitnessCounting
- def
Lax485149.Complement - def
Lax485149.Problems - def
Lax485149.SecondOrderAtoms - def
Lax535992.CircuitValue - def
Lax535992.ClassPTIME - def
Lax535992.DeterministicMachines - def
Lax535992.HornFragment - def
Lax535992.HornSat - def
Lax535992.LeastFixedPoint - def
Lax895169.BitPredicate - def
Lax904597.Classes - def
Lax904597.Interpretations - def
Lax904597.Problems - def
Lax904597.Relativized - def
Lax904597.Sat - def
Lax904597.SecondOrder
Concept map
Proofs
Proof networkview on GitHub
Proof list
-
⊢
Lax366625Proofs.Bridge.circuitNumber_FP_parsimoniousComplete -
⊢
Lax366625Proofs.Bridge.NP_hard_support_of_sharpP_parsimoniousHard -
⊢
Lax366625Proofs.Bridge.NP_subset_PTIME_of_mem_FP_of_parsimoniousHard -
⊢
Lax366625Proofs.Bridge.NP_subset_PTIME_of_sharpP_parsimoniousHard -
⊢
Lax366625Proofs.Bridge.sharpNtmAccept_sharpP_parsimoniousComplete -
⊢
Lax366625Proofs.Bridge.SharpP_mem_of_relOrderedParsimonious -
⊢
Lax366625Proofs.Bridge.sharpSat_sharpP_parsimoniousComplete
Lean sources for these proofs: proofs/ on GitHub
Proof code is not displayed; the archive records each proof's checked relationship between claims.
Related submissions
Submission map
Cite this
This is only the formalizers. The authors of the formalized results may be different (see References).
@misc{lax-366625,
author = {Pierre Senellart and Claude (Anthropic)},
title = {Descriptive complexity: counting problems, #P, and FP},
year = {2026},
howpublished = {Lax Archive, lax-366625},
url = {https://laxarchive.org/lax-366625/},
}
References
- Pierre Senellart. DescriptiveComplexity: Completeness by First-Order Reductions in Lean. 2026. doi:10.5281/zenodo.21678423 · github.com/PierreSenellart/descriptive-complexity
- S. Saluja, K. V. Subrahmanyam and M. N. Thakur. Descriptive Complexity of #P Functions. J. Comput. Syst. Sci. 50(3):493–505, 1995. doi:10.1006/jcss.1995.1039
- Marcelo Arenas, Martin Muñoz and Cristian Riveros. Descriptive Complexity for Counting Complexity Classes. Log. Methods Comput. Sci. 16(1):9:1–9:42, 2020. doi:10.23638/LMCS-16(1:9)2020
- L. G. Valiant. The Complexity of Computing the Permanent. Theor. Comput. Sci. 8(2):189–201, 1979. doi:10.1016/0304-3975(79)90044-6
- Stephen A. Cook. The Complexity of Theorem-Proving Procedures. In Proceedings of the 3rd Annual ACM Symposium on Theory of Computing, May 3-5, 1971, Shaker Heights, Ohio, USA 151–158, 1971. doi:10.1145/800157.805047
- Leonid A. Levin. Universal sequential search problems. Problems of Information Transmission 9(3):265–266, 1973. Russian original: Problemy Peredachi Informatsii 9(3):115–116.
- G. S. Tseitin. On the complexity of derivation in propositional calculus. In Studies in Constructive Mathematics and Mathematical Logic, Part II 115–125, 1968. Translated from the Russian.
- Neil Immerman. Descriptive Complexity. Springer, 1999. doi:10.1007/978-1-4612-0539-5
- Janos Simon. On the Difference Between One and Many (Preliminary Version). In Automata, Languages and Programming, Fourth Colloquium, ICALP 1977 52:480–491, 1977. doi:10.1007/3-540-08342-1_37
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments