Making Random Judgments: Automatically Generating Well-Typed Terms from the Definition of a Type-System

This paper presents a generic method for randomly generating well-typed expressions. It starts from a specification of a typing judgment in PLT Redex and uses a specialized solver that employs randomness to find many different valid derivations of the judgment form.

[1]  Michael J. Maher,et al.  The Semantics of Constraint Logic Programs , 1998, J. Log. Program..

[2]  Dimitrios Vytiniotis,et al.  Under Consideration for Publication in J. Functional Programming Every Bit Counts: the Binary Representation of Typed Data and Programs , 2022 .

[3]  Temur Kutsia,et al.  Unification with Sequence Variables and Flexible Arity Symbols and Its Extension with Pattern-Terms , 2002, AISC.

[4]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[5]  William E. Byrd,et al.  Relational programming in minikanren: techniques, applications, and implementations , 2009 .

[6]  Jeremiah Willcock,et al.  cKanren miniKanren with Constraints , 2011 .

[7]  Sam Tobin-Hochstadt,et al.  Constraining Delimited Control with Contracts , 2013, ESOP.

[8]  Andrei Voronkov,et al.  Comparing Unification Algorithms in First-Order Theorem Proving , 2009, KI.

[9]  Meng Wang,et al.  Feat: functional enumeration of algebraic types , 2012, Haskell.

[10]  Xuejun Yang,et al.  Finding and understanding bugs in C compilers , 2011, PLDI '11.

[11]  Robert Bruce Findler,et al.  The Racket virtual machine and randomized testing , 2012, High. Order Symb. Comput..

[12]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[13]  K. V. Hanford,et al.  Automatic Generation of Test Cases , 1970, IBM Syst. J..

[14]  Casey Klein,et al.  Randomized Testing in PLT Redex , 2009 .

[15]  Robert Harper,et al.  Practical Foundations for Programming Languages , 2012 .

[16]  Casey August Experience with Randomized Testing in Programming Language Metatheory , 2009 .

[17]  Koen Claessen,et al.  Generating constrained random data with uniform distribution , 2014, Journal of Functional Programming.

[18]  Sam Tobin-Hochstadt,et al.  Run your research: on the effectiveness of lightweight mechanization , 2012, POPL '12.

[19]  Hubert Comon-Lundh,et al.  Equational Problems and Disunification , 1989, J. Symb. Comput..

[20]  Matthias Felleisen,et al.  Semantics Engineering with PLT Redex , 2009 .

[21]  Hubert Comon,et al.  Tree automata techniques and applications , 1997 .

[22]  Koen Claessen,et al.  Testing an optimising compiler by generating random lambda terms , 2011, AST '11.

[23]  Gilles Dowek,et al.  Principles of programming languages , 1981, Prentice Hall International Series in Computer Science.

[24]  Franz Baader,et al.  Unification theory , 1986, Decis. Support Syst..

[25]  Alain Colmerauer,et al.  Equations and Inequations on Finite and Infinite Trees , 1984, FGCS.

[26]  Abdulazeez S. Boujarwah,et al.  Compiler test case generation methods: a survey and assessment , 1997, Inf. Softw. Technol..

[27]  Pierre Lescanne,et al.  Counting and generating lambda terms , 2012, Journal of Functional Programming.

[28]  Paliath Narendran,et al.  Unification Theory , 2001, Handbook of Automated Reasoning.

[29]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[30]  Andrew W. Appel,et al.  A List-Machine Benchmark for Mechanized Metatheory , 2011, Journal of Automated Reasoning.