Documentation

Complexitylib.Metacomplexity.StatisticalTest.Hybrid.Internal

Hybrid distributions for finite binary generators -- proof internals #

theorem Complexity.BitGenerator.orientTest_false_internal {outputLength : ℕ} (test : Finset (Fin outputLength → Bool)) :
orientTest test false = test
theorem Complexity.BitGenerator.orientTest_true_internal {outputLength : ℕ} (test : Finset (Fin outputLength → Bool)) :
orientTest test true = testᶜ
theorem Complexity.BitGenerator.acceptedSeeds_compl_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) :
generator.acceptedSeeds testᶜ = (generator.acceptedSeeds test)ᶜ
theorem Complexity.BitGenerator.generatedAcceptanceProbability_compl_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) :
theorem Complexity.BitGenerator.exists_orientation_of_distinguishingAdvantage_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) {advantage : ℚ} (hadvantage : advantage ≤ generator.distinguishingAdvantage test) :
∃ (complement : Bool), advantage ≤ generator.generatedAcceptanceProbability (orientTest test complement) - uniformAcceptanceProbability (orientTest test complement)
theorem Complexity.BitGenerator.hybridOutput_zero_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (randomness : Fin (seedLength + outputLength) → Bool) :
generator.hybridOutput 0 randomness = blockSnd seedLength outputLength randomness
theorem Complexity.BitGenerator.hybridOutput_outputLength_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (randomness : Fin (seedLength + outputLength) → Bool) :
generator.hybridOutput outputLength randomness = generator (blockFst seedLength outputLength randomness)
theorem Complexity.BitGenerator.hybridAcceptanceProbability_zero_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) :
theorem Complexity.BitGenerator.hybridAcceptanceProbability_outputLength_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) :
generator.hybridAcceptanceProbability test outputLength = generator.generatedAcceptanceProbability test
theorem Complexity.BitGenerator.sum_hybridGap_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) :
∑ step ∈ Finset.range outputLength, generator.hybridGap test step = generator.generatedAcceptanceProbability test - uniformAcceptanceProbability test
theorem Complexity.BitGenerator.exists_hybridGap_ge_average_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) {advantage : ℚ} (houtputLength : 0 < outputLength) (hadvantage : advantage ≤ generator.generatedAcceptanceProbability test - uniformAcceptanceProbability test) :
∃ step < outputLength, advantage / ↑outputLength ≤ generator.hybridGap test step
theorem Complexity.BitGenerator.exists_oriented_hybridGap_ge_average_internal {seedLength outputLength : ℕ} (generator : BitGenerator seedLength outputLength) (test : Finset (Fin outputLength → Bool)) {advantage : ℚ} (houtputLength : 0 < outputLength) (hadvantage : advantage ≤ generator.distinguishingAdvantage test) :
∃ (complement : Bool), ∃ step < outputLength, advantage / ↑outputLength ≤ generator.hybridGap (orientTest test complement) step