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 BoolBool) :
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 BoolList 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 BoolList 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 BoolList Bool} {L : Language}, f FPL Cf ⁻¹' 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) (hwitness : NP.WitnessNTMConstruction) {R : List BoolList BoolProp} (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.yesInstancescompletion) (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) :