Documentation

Complexitylib.Classes.Promise.Internal

Promise problems -- proof internals #

Elementary set, solver, complement, and reduction laws supporting the public promise-problem interface.

theorem Complexity.PromiseProblem.solvedBy_complement_iff_internal (problem : PromiseProblem) (decide : List Bool → Bool) :
problem.complement.SolvedBy decide ↔ problem.SolvedBy fun (x : List Bool) => !decide x
theorem Complexity.PromiseProblem.MapReducesVia.trans_internal {first second third : PromiseProblem} {f g : List Bool → List Bool} (hfirst : first.MapReducesVia second f) (hsecond : second.MapReducesVia third g) :
first.MapReducesVia third (g ∘ f)
theorem Complexity.PromiseProblem.MapReducesPoly.trans_internal {first second third : PromiseProblem} (hfirst : first.MapReducesPoly second) (hsecond : second.MapReducesPoly third) :
first.MapReducesPoly third
theorem Complexity.PromiseProblem.mapReducesVia_ofLanguage_iff_internal (first second : Language) (f : List Bool → List Bool) :
(ofLanguage first).MapReducesVia (ofLanguage second) f ↔ ∀ (x : List Bool), x ∈ first ↔ f x ∈ second
theorem Complexity.PromiseProblem.MapReducesPoly.mem_promiseClass_internal {C : Set Language} {source target : PromiseProblem} (hpreimage : ∀ {f : List Bool → List Bool} {L : Language}, f ∈ FP → L ∈ C → f ⁻¹' L ∈ C) (hred : source.MapReducesPoly target) (htarget : target ∈ PromiseClass C) :
source ∈ PromiseClass C
theorem Complexity.PromiseProblem.MapReducesPoly.mem_PromiseP_internal {source target : PromiseProblem} (hred : source.MapReducesPoly target) (htarget : target ∈ PromiseP) :
source ∈ PromiseP
theorem Complexity.PromiseProblem.MapReducesPoly.mem_PromiseNP_internal {source target : PromiseProblem} (hred : source.MapReducesPoly target) (htarget : target ∈ PromiseNP) :
source ∈ PromiseNP
theorem Complexity.PromiseProblem.mem_PromiseNP_of_FNP_witness_internal (problem : PromiseProblem) {R : List Bool → List Bool → Prop} (hR : R ∈ FNP) (hchar : ∀ (x : List Bool), x ∈ problem.yesInstances ↔ ∃ (y : List Bool), R x y) :
problem ∈ PromiseNP
theorem Complexity.PromiseProblem.mapReducesPoly_to_ofLanguage_internal {problem : PromiseProblem} {completion : Language} (hyes : problem.yesInstances ⊆ completion) (hno : Disjoint completion problem.noInstances) :
problem.MapReducesPoly (ofLanguage completion)
theorem Complexity.PromiseHardFor.of_reduction_internal {C : Set Language} {first second : PromiseProblem} (hfirst : PromiseHardFor C first) (hred : first.MapReducesPoly second) :