Boolean closure of NP #
Main results #
Cslib.Complexity.empty_mem_NP,Cslib.Complexity.univ_mem_NP: the trivial problems are inNP.Cslib.Complexity.inter_mem_NP,Cslib.Complexity.union_mem_NP,Cslib.Complexity.ite_mem_NP:NPis closed under intersection, union andP-guardedSet.ite.Cslib.Complexity.mem_NP_of_guard: the members of a problem inNPpassing a polynomial-time test form a problem inNP.Cslib.Complexity.inter_mem_coNP,Cslib.Complexity.union_mem_coNP,Cslib.Complexity.ite_mem_coNP:coNPis closed under intersection, union andP-guardedSet.ite.
References #
theorem Cslib.Complexity.mem_NP_of_guard {α : Type} {enc : α ↪ List Bool} {A L : Set α} {c : α → Bool} (hc : Turing.MultiTapeTM.ComputableInPolyTime c enc Turing.MultiTapeTM.encBool) (hA : A ∈ NP enc) (h : ∀ (a : α), a ∈ L ↔ c a = true ∧ a ∈ A) :
Guarded NP membership. The members of a problem in NP that pass a polynomial-time test
form a problem in NP.