Higher-Order and Symbolic Computation

pp 1-45

First online:

The Racket virtual machine and randomized testing

  • Casey KleinAffiliated withElectrical Engineering and Computer Science Department, Northwestern University
  • , Matthew FlattAffiliated withSchool of Computing, University of Utah
  • , Robert Bruce FindlerAffiliated withElectrical Engineering and Computer Science Department, Northwestern University Email author 

Rent the article at a discount

Rent now

* Final gross prices may vary according to local VAT.

Get Access


We present a PLT Redex model of a substantial portion of the Racket virtual machine and bytecode verifier (formerly known as MzScheme), along with lessons learned in developing the model. Inspired by the “warts-and-all” approach of the VLISP project, in which Wand et al. produced a verified implementation of Scheme, our model reflects many of the realities of a production system. Our methodology departs from the VLISP project’s in its approach to validation; instead of producing a proof of correctness, we explore the use of QuickCheck-style randomized testing, finding it a cheap and effective technique for discovering a variety of errors in the model—from simple typos to more fundamental design mistakes.


Formal models Randomized testing Bytecode verification