Documentation

Complexitylib.Metacomplexity.NisanWigderson.Internal

Nisan--Wigderson set systems and generators -- proof internals #

theorem Complexity.NWDesign.card_support_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (output : Fin outputLength) :
(design.support output).card = inputLength
theorem Complexity.NWDesign.mem_support_iff_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (output : Fin outputLength) (coordinate : Fin seedLength) :
coordinate design.support output ∃ (input : Fin inputLength), (design.coordinates output) input = coordinate
theorem Complexity.NWDesign.overlap_comm_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (first second : Fin outputLength) :
design.overlap first second = design.overlap second first
theorem Complexity.NWDesign.overlap_self_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (output : Fin outputLength) :
design.overlap output output = inputLength
theorem Complexity.NWDesign.overlap_le_inputLength_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (first second : Fin outputLength) :
design.overlap first second inputLength
theorem Complexity.NWDesign.hasOverlapBudget_mono_internal {outputLength inputLength seedLength first second : } {design : NWDesign outputLength inputLength seedLength} (hbudget : design.HasOverlapBudget first) (hle : first second) :
design.HasOverlapBudget second
theorem Complexity.NWDesign.restrictSeed_apply_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (output : Fin outputLength) (seed : Fin seedLengthBool) (input : Fin inputLength) :
design.restrictSeed output seed input = seed ((design.coordinates output) input)
theorem Complexity.NWDesign.generator_apply_internal {outputLength inputLength seedLength : } (design : NWDesign outputLength inputLength seedLength) (hardFunction : (Fin inputLengthBool)Bool) (seed : Fin seedLengthBool) (output : Fin outputLength) :
design.generator hardFunction seed output = hardFunction (design.restrictSeed output seed)
theorem Complexity.NWDesign.exists_oriented_hybridGap_of_randomTest_internal {outputLength inputLength seedLength tapes time threshold : } {design : NWDesign outputLength inputLength seedLength} {hardFunction : (Fin inputLengthBool)Bool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hlow : (design.generator hardFunction).HasLowTimeBoundedComplexity machine time threshold) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) :
∃ (complement : Bool), step < outputLength, density / outputLength (design.generator hardFunction).hybridGap (BitGenerator.orientTest test complement) step
theorem Complexity.NWDesign.exists_oriented_hybridGap_of_seedDescriptions_internal {outputLength inputLength seedLength tapes time threshold : } {design : NWDesign outputLength inputLength seedLength} {hardFunction : (Fin inputLengthBool)Bool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hseedLength : seedLength < threshold) (hproduces : ∀ (seed : Fin seedLengthBool), machine.ProducesInTime (List.ofFn seed) (List.ofFn (design.generator hardFunction seed)) time) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) :
∃ (complement : Bool), step < outputLength, density / outputLength (design.generator hardFunction).hybridGap (BitGenerator.orientTest test complement) step
theorem Complexity.NWDesign.exists_predictionSuccess_ge_half_add_density_div_internal {outputLength inputLength seedLength tapes time threshold : } {design : NWDesign outputLength inputLength seedLength} {hardFunction : (Fin inputLengthBool)Bool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hlow : (design.generator hardFunction).HasLowTimeBoundedComplexity machine time threshold) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) :
∃ (complement : Bool) (step : Fin outputLength), 1 / 2 + density / outputLength NextBitPrediction.successProbability ((design.generator hardFunction).targetBit step) ((design.generator hardFunction).testAtCandidate (BitGenerator.orientTest test complement) step)
theorem Complexity.NWDesign.exists_predictionSuccess_ge_half_add_density_div_of_seedDescriptions_internal {outputLength inputLength seedLength tapes time threshold : } {design : NWDesign outputLength inputLength seedLength} {hardFunction : (Fin inputLengthBool)Bool} {machine : TM tapes} {test : Finset (Fin outputLengthBool)} {density : } (houtputLength : 0 < outputLength) (hseedLength : seedLength < threshold) (hproduces : ∀ (seed : Fin seedLengthBool), machine.ProducesInTime (List.ofFn seed) (List.ofFn (design.generator hardFunction seed)) time) (hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold) (hdense : BitGenerator.IsDenseTest test density) :
∃ (complement : Bool) (step : Fin outputLength), 1 / 2 + density / outputLength NextBitPrediction.successProbability ((design.generator hardFunction).targetBit step) ((design.generator hardFunction).testAtCandidate (BitGenerator.orientTest test complement) step)