- Software Engineering Research
- Advanced Malware Detection Techniques
- Software Testing and Debugging Techniques
- Logic, programming, and type systems
- Parallel Computing and Optimization Techniques
Many problem domains, including program synthesis and rewrite-based optimization, require searching astronomically large spaces of programs. Existing approaches often rely on building specialized data structures—version-space algebras, finite tree automata, or e-graphs—to compactly represent such spaces. At their core, all these structures exploit independence subterms; as a result, they cannot efficiently more complex spaces, where the choices subterms are entangled. We introduce...
In unit testing we apply the function under test to known inputs and check for outputs. By contrast, in property based state properties relating outputs, random inputs, verify that holds; if not, found a bug. Randomly generated tend be large should therefore minimised. Traditionally this is done with an explicitly provided shrinker, but paper propose way write generators obsoletes need separate shrinker. Inspired by Python library Hypothesis, approach can work even across monadic bind....