Nisan--Wigderson set systems and generators -- proof internals #
theorem
Complexity.NWDesign.mem_support_iff_internal
{outputLength inputLength seedLength : ℕ}
(design : NWDesign outputLength inputLength seedLength)
(output : Fin outputLength)
(coordinate : Fin seedLength)
:
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.exists_oriented_hybridGap_of_randomTest_internal
{outputLength inputLength seedLength tapes time threshold : ℕ}
{design : NWDesign outputLength inputLength seedLength}
{hardFunction : (Fin inputLength → Bool) → Bool}
{machine : TM tapes}
{test : Finset (Fin outputLength → Bool)}
{density : ℚ}
(houtputLength : 0 < outputLength)
(hlow : (design.generator hardFunction).HasLowTimeBoundedComplexity machine time threshold)
(hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold)
(hdense : BitGenerator.IsDenseTest test density)
:
theorem
Complexity.NWDesign.exists_oriented_hybridGap_of_seedDescriptions_internal
{outputLength inputLength seedLength tapes time threshold : ℕ}
{design : NWDesign outputLength inputLength seedLength}
{hardFunction : (Fin inputLength → Bool) → Bool}
{machine : TM tapes}
{test : Finset (Fin outputLength → Bool)}
{density : ℚ}
(houtputLength : 0 < outputLength)
(hseedLength : seedLength < threshold)
(hproduces :
∀ (seed : Fin seedLength → Bool),
machine.ProducesInTime (List.ofFn seed) (List.ofFn (design.generator hardFunction seed)) time)
(hrandom : BitGenerator.IsTimeBoundedRandomTest test machine time threshold)
(hdense : BitGenerator.IsDenseTest test density)
:
theorem
Complexity.NWDesign.exists_predictionSuccess_ge_half_add_density_div_internal
{outputLength inputLength seedLength tapes time threshold : ℕ}
{design : NWDesign outputLength inputLength seedLength}
{hardFunction : (Fin inputLength → Bool) → Bool}
{machine : TM tapes}
{test : Finset (Fin outputLength → Bool)}
{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 inputLength → Bool) → Bool}
{machine : TM tapes}
{test : Finset (Fin outputLength → Bool)}
{density : ℚ}
(houtputLength : 0 < outputLength)
(hseedLength : seedLength < threshold)
(hproduces :
∀ (seed : Fin seedLength → Bool),
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)