-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Per YARPgen paper: one of the things they do is store constants that they've used in fuzzer state, then randomly choose to replay those constants (and permutations thereof) when constructing expressions; this helps set up certain algebraic optimisations.
We might not be able to get the constants stored into the state while we're generating, owing to monad transformation fun (the quickcheck generator monad for expressions is outside of the state monad - don't you just wish I'd written OCaml or Haskell instead of Haskell-in-OCaml?), so we might need to traverse the generated expression to mine for constants.
Another fairly galaxy-brained idea might be to then use the fuzzer state constants as known-values, thereby causing a neat little crossover between the two and possibly setting up some serendipitous atomic-action optimisations.