⊕SAT and Mod_k-SAT are complete
Lax175070.ParitySatComplete · concepts/Lax175070/ParitySatComplete.lean · lax-175070
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Theorem
⊕SAT is ⊕P-complete and Mod-SAT is ModP-complete. More generally, the parity, and the residue modulo , of every parsimoniously #P-complete counting problem are complete for ⊕P and ModP: a parsimonious reduction preserves every property of the count. And a problem is in ⊕P, or in ModP, exactly when it reduces by an ordered first-order reduction to the parity, or the residue, of the number of accepting runs of a nondeterministic Turing machine.
Concept map
Evidence
This concept declares 6 statements. Each proof establishes one of them relative to its assumptions.
1 mem_modP_iff_le_mod_sharpNtmAccept proven
2 mem_parityP_iff_le_parity_sharpNtmAccept proven
3 modP_complete_of_sharpP_parsimoniousComplete proven
4 modSat_modP_complete proven
5 parityP_complete_of_sharpP_parsimoniousComplete proven
6 paritySat_parityP_complete proven
Lean source view on GitHub
| 1 | import Lax904597.Problems |
| 2 | import Lax485149.Problems |
| 3 | import Lax485149.Complement |
| 4 | import Lax904597.Classes |
| 5 | import Lax904597.Sat |
| 6 | import Lax904597.Interpretations |
| 7 | import Lax904597.Machines |
| 8 | import Lax564036.Hierarchy |
| 9 | import Lax366625.CountingProblems |
| 10 | import Lax366625.CountingClasses |
| 11 | import Lax366625.WitnessCounting |
| 12 | import Lax366625.CountingSat |
| 13 | import Lax366625.CountingRuns |
| 14 | import Lax175070.CountDefinability |
| 15 | import Lax175070.SelectedSat |
| 16 | |
| 17 | /-! |
| 18 | --- |
| 19 | title: ⊕SAT and Mod_k-SAT are complete |
| 20 | type: theorem |
| 21 | --- |
| 22 | ⊕SAT is ⊕P-complete and Mod-SAT is ModP-complete. More generally, |
| 23 | the parity, and the residue modulo , of every parsimoniously #P-complete |
| 24 | counting problem are complete for ⊕P and ModP: a parsimonious reduction |
| 25 | preserves every property of the count. And a problem is in ⊕P, or in |
| 26 | ModP, exactly when it reduces by an ordered first-order reduction to the |
| 27 | parity, or the residue, of the number of accepting runs of a |
| 28 | nondeterministic Turing machine. |
| 29 | -/ |
| 30 | |
| 31 | namespace Lax175070.ParitySatComplete |
| 32 | |
| 33 | open FirstOrder FirstOrder.Language |
| 34 | open Lax904597.Problems Lax904597.Classes Lax904597.Sat Lax904597.Interpretations |
| 35 | Lax904597.Machines Lax564036.Hierarchy |
| 36 | open Lax366625.CountingProblems Lax366625.CountingClasses Lax366625.WitnessCounting |
| 37 | Lax366625.CountingSat |
| 38 | open Lax366625.CountingRuns Lax175070.CountDefinability Lax175070.SelectedSat Lax485149.Problems |
| 39 | open Lax485149.Complement |
| 40 | |
| 41 | /-- ⊕SAT is ⊕P-complete. -/ |
| 42 | axiom paritySat_parityP_complete : |
| 43 | ParityP.Complete ParitySAT |
| 44 | |
| 45 | /-- Mod_k-SAT is Mod_k P-complete. -/ |
| 46 | axiom modSat_modP_complete : |
| 47 | ∀ (k : ℕ), (ModP k).Complete (ModSAT k) |
| 48 | |
| 49 | /-- The parity of a parsimoniously #P-complete problem is ⊕P-complete. -/ |
| 50 | axiom parityP_complete_of_sharpP_parsimoniousComplete : |
| 51 | ∀ {L : Language.{0, 0}} [L.IsRelational] {C : CountingProblem L}, |
| 52 | SharpP.ParsimoniousComplete C → ParityP.Complete (decide Odd C) |
| 53 | |
| 54 | /-- The residue modulo `k` of a parsimoniously #P-complete problem is Mod_k P-complete. -/ |
| 55 | axiom modP_complete_of_sharpP_parsimoniousComplete : |
| 56 | ∀ {L : Language.{0, 0}} [L.IsRelational] (k : ℕ) {C : CountingProblem L}, |
| 57 | SharpP.ParsimoniousComplete C → (ModP k).Complete (decide (fun c => ¬ k ∣ c) C) |
| 58 | |
| 59 | /-- ⊕P is reducibility to the parity of the number of accepting runs. -/ |
| 60 | axiom mem_parityP_iff_le_parity_sharpNtmAccept : |
| 61 | ∀ {L : Language.{0, 0}} [L.IsRelational] (P : DecisionProblem L), |
| 62 | ParityP.Mem P ↔ Nonempty (OrderedFOReduction P (decide Odd SharpNTMAccept)) |
| 63 | |
| 64 | /-- Mod_k P is reducibility to the residue of the number of accepting runs. -/ |
| 65 | axiom mem_modP_iff_le_mod_sharpNtmAccept : |
| 66 | ∀ {L : Language.{0, 0}} [L.IsRelational] (k : ℕ) (P : DecisionProblem L), |
| 67 | (ModP k).Mem P ↔ Nonempty (OrderedFOReduction P (decide (fun c => ¬ k ∣ c) SharpNTMAccept)) |
| 68 | |
| 69 | end Lax175070.ParitySatComplete |
| 70 |
Builds on
Lax175070.CountDefinabilityLax175070.SelectedSatLax366625.CountingClassesLax366625.CountingProblemsLax366625.CountingRunsLax366625.CountingSatLax366625.WitnessCountingLax485149.ComplementLax485149.ProblemsLax564036.HierarchyLax904597.ClassesLax904597.InterpretationsLax904597.MachinesLax904597.ProblemsLax904597.Sat
Used by
none
From Mathlib
none
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments