Documentation

CslibFrontier.Computability.Complexity.Classes.WPP.TwoSided

Two-sided polynomial-target robustness of WPP and LWPP #

Uniform polynomial-time accepting and rejecting target lists preserve WPP and LWPP when these lists are disjoint at each input, or each natural length for LWPP. Original targets may be zero, negative or repeated; only cross-family disjointness is required. The target indices need not be computable. Binary list output charges both counts and bit lengths.

The proof follows Hemaspaandra et al., Appendix A: take the product of the differences between rejection targets and the original gap. This vanishes on rejection, and on acceptance takes one of a uniformly computed family of nonzero products. The uniform product theorem and one-sided robustness then finish the construction.

The public interfaces ask for Turing.MultiTapeTM.ComputableInPolyTime certificates.

Main results #

References #

theorem Cslib.Complexity.mem_WPP_of_disjoint_targets {α : Type} {enc : α ↪ List Bool} {A : Set α} {g : α → ℤ} {yes no : α → List ℤ} (hg : g ∈ GapP enc) (hy : Turing.MultiTapeTM.ComputableInPolyTime yes enc (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encIntBin)) (hn : Turing.MultiTapeTM.ComputableInPolyTime no enc (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encIntBin)) (hd : ∀ (a : α), (yes a).Disjoint (no a)) (hyes : ∀ a ∈ A, g a ∈ yes a) (hno : ∀ a ∉ A, g a ∈ no a) :
A ∈ WPP enc

Two-sided WPP robustness for disjoint uniformly computed binary integer target lists. Neither original list is required to avoid zero; no accepting or rejecting index is computed.

theorem Cslib.Complexity.mem_LWPP_of_disjoint_targets {α : Type} {enc : α ↪ List Bool} {A : Set α} {g : α → ℤ} {yes no : ℕ → List ℤ} (hg : g ∈ GapP enc) (hy : Turing.MultiTapeTM.ComputableInPolyTime yes Turing.MultiTapeTM.encUnary (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encIntBin)) (hn : Turing.MultiTapeTM.ComputableInPolyTime no Turing.MultiTapeTM.encUnary (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encIntBin)) (hd : ∀ (n : ℕ), (yes n).Disjoint (no n)) (hyes : ∀ a ∈ A, g a ∈ yes (enc a).length) (hno : ∀ a ∉ A, g a ∈ no (enc a).length) :
A ∈ LWPP enc

Two-sided LWPP robustness with both target lists computed from unary input length. Disjointness is required at every natural length, including zero. Original zero targets are allowed on either side, provided the two lists remain disjoint.

theorem Cslib.Complexity.mem_WPP_of_disjoint_indexed_targets {α : Type} {enc : α ↪ List Bool} {A : Set α} {g : α → ℤ} {yes no : α × ℕ → ℤ} {ry rn : α → ℕ} (hg : g ∈ GapP enc) (hy : Turing.MultiTapeTM.ComputableInPolyTime yes (Turing.MultiTapeTM.encPair enc Turing.MultiTapeTM.encUnary) Turing.MultiTapeTM.encIntBin) (hn : Turing.MultiTapeTM.ComputableInPolyTime no (Turing.MultiTapeTM.encPair enc Turing.MultiTapeTM.encUnary) Turing.MultiTapeTM.encIntBin) (hry : Turing.MultiTapeTM.ComputableInPolyTime ry enc Turing.MultiTapeTM.encUnary) (hrn : Turing.MultiTapeTM.ComputableInPolyTime rn enc Turing.MultiTapeTM.encUnary) (hd : ∀ (a : α), ∀ i < ry a, ∀ j < rn a, yes (a, i) ≠ no (a, j)) (hyes : ∀ a ∈ A, ∃ i < ry a, g a = yes (a, i)) (hno : ∀ a ∉ A, ∃ j < rn a, g a = no (a, j)) :
A ∈ WPP enc

Two-sided WPP robustness for uniform indexed families, with each count computed in polynomial time with unary output. Disjointness concerns used indices; zero targets are allowed.

Two-sided LWPP robustness for uniform indexed target families depending only on unary length. Cross-family disjointness holds at all natural lengths and both counts have unary polynomial-time certificates. The standard positive polynomial-size families are instances.

theorem Cslib.Complexity.mem_WPP_iff_exists_disjoint_targets {α : Type} {enc : α ↪ List Bool} {A : Set α} :
A ∈ WPP enc ↔ ∃ g ∈ GapP enc, ∃ (yes : α → List ℤ) (no : α → List ℤ), Turing.MultiTapeTM.ComputableInPolyTime yes enc (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encIntBin) ∧ Turing.MultiTapeTM.ComputableInPolyTime no enc (Turing.MultiTapeTM.encList Turing.MultiTapeTM.encIntBin) ∧ (∀ (a : α), (yes a).Disjoint (no a)) ∧ (∀ a ∈ A, g a ∈ yes a) ∧ ∀ a ∉ A, g a ∈ no a

(Poly,Poly)-WPP = WPP, with disjoint uniformly computed binary integer target lists. The converse uses singleton acceptance and zero-rejection lists.

(Poly,Poly)-LWPP = LWPP, with disjoint target lists uniformly computed from unary length, including length zero. This is Hemaspaandra et al., Corollary 3.11.