English

Parsing Randomness: Unifying and Differentiating Parsers and Random Generators

Programming Languages 2022-03-02 v1

Abstract

"A generator is a parser of randomness." This perspective on generators for random data structures is well established as folklore in the programming languages community, but it has apparently never been formalized, nor have its consequences been deeply explored. We present free generators, which unify parsing and generation using a common structure that makes the relationship between the two concepts precise. Free generators lead naturally to a proof that a large class of generators can be factored into a parser plus a distribution over choice sequences. Further, free generators support a notion of derivative, analogous to familiar Brzozowski derivatives of formal languages, that allows analysis tools to "preview" the effect of a particular generator choice. This, in turn, gives rise to a novel algorithm for generating data structures satisfying user-specified preconditions.

Keywords

Cite

@article{arxiv.2203.00652,
  title  = {Parsing Randomness: Unifying and Differentiating Parsers and Random Generators},
  author = {Harrison Goldstein and Benjamin C. Pierce},
  journal= {arXiv preprint arXiv:2203.00652},
  year   = {2022}
}

Comments

Submitted to PLDI'22, not accepted. 13 pages, 6 pages of appendix

R2 v1 2026-06-24T09:58:19.977Z