Samplable pseudoentropy pairs #
A pair consists of a public observation and a hidden bit. The observation has a finite type at each parameter and an injective word encoding, so its conditional entropy is unambiguous. A strict PPT sampler realizes the joint law exactly.
SamplablePair.HasGap says that every uniform PPT predictor eventually has signed correlation
at most 1 - H(hidden | observation) - gap. This is the entropy threshold used in the
OWF-to-PRG construction; merely being hard to predict is not sufficient.
This interface records the joint law and its sampler. The shared saved-coin interface exposes a strict PPT sampler's fair-bit tape as a uniform seed, including unused randomness.
Main definitions #
Cslib.Crypto.Pseudoentropy.predictionGame: predict a sampled hidden bit from its observation.Cslib.Crypto.Pseudoentropy.SamplablePair: a finite joint law with a uniform strict PPT sampler.Cslib.Crypto.Pseudoentropy.SamplablePair.HasGap: the conditional-entropy prediction threshold.
Main results #
Cslib.Crypto.Pseudoentropy.SamplablePair.eval_latentSample: recover the exact latent joint law.Cslib.Crypto.Pseudoentropy.SamplablePair.HasGap.eventually_error_ge: prediction error bound.Cslib.Crypto.Pseudoentropy.SamplablePair.HasGap.eventually_entropy_add_gap_le_one: the threshold forced by an independent fair-bit predictor.
References #
- T. Holenstein, Pseudorandom Generators from One-Way Functions: A Simple Construction for Any Hardness, Definitions 3 and 4. We use a sampler presentation and uniform strict PPT predictors. Signed correlation is twice success probability minus one.
Adapted from Crypto/Computational/Pseudoentropy/Basic.lean on the cslib crypto branch at
5ff69ca93402e7c947208dc56396d6d86203ccd8, using the shared nonnegative game API and tidy machine
certificates. Existence of a pair with a positive gap is a separate security theorem.
The complete prediction experiment is strict PPT whenever the sampler and predictor are.
A finite joint law together with its exact strict PPT word sampler.
The public information available at each parameter.
- finite (n : ℕ) : Finite (self.Observation n)
Its alphabet is finite, without requiring a computable enumeration.
Encoding preserves all the public information.
- joint (n : ℕ) : PMF (self.Observation n × Bool)
The public observation and hidden bit.
A word-level sampler with the strict fair-coin realization certified below.
- efficient : Probability.IsPPTOn Turing.MultiTapeTM.encUnary (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encBits Turing.MultiTapeTM.encBool) self.sample
Its complete running time is bounded by one polynomial.
- eval_sample (n : ℕ) : (self.sample n).eval = PMF.map (fun (pair : self.Observation n × Bool) => ((self.encode n) pair.1, pair.2)) (self.joint n)
The sampler realizes the finite joint law exactly.
Instances For
Recover the latent draw by relabelling the existing sampler. This is a mathematical program, with no efficiency claim for decoding arbitrary observation encodings.
Instances For
The recovered sample has exactly the joint law, including its hidden label.
Every uniform PPT predictor stays below the conditional-entropy threshold by this gap. The threshold beyond which the inequality holds may depend on the predictor.
Instances For
The pseudoentropy threshold equivalently lower-bounds each efficient predictor's error.
A fair-bit predictor has zero correlation, so entropy plus the prediction gap cannot eventually exceed one.
A smaller requested gap follows from any larger proved gap.