Describing Console I/O Behavior for Testing Student Submissions in Haskell

08/21/2020
by   Oliver Westphal, et al.
0

We present a small, formal language for specifying the behavior of simple console I/O programs. The design is driven by the concrete application case of testing interactive Haskell programs written by students. Specifications are structurally similar to lexical analysis regular expressions, but are augmented with features like global variables that track state and history of program runs, enabling expression of an interesting range of dynamic behavior. We give a semantics for our specification language based on acceptance of execution traces. From this semantics we derive a definition of the set of all traces valid for a given specification. Sampling that set enables us to mechanically check program behavior against specifications in a probabilistic fashion. Beyond testing, other possible uses of the specification language in an education context include related activities like providing more helpful feedback, generating sample solutions, and even generating random exercise tasks.

READ FULL TEXT

page 1

page 2

page 3

page 4

05/10/2022

A Specification Logic for Programs in the Probabilistic Guarded Command Language (Extended Version)

The semantics of probabilistic languages has been extensively studied, b...
12/23/2019

A Component-Based Formal Language Workbench

The CBS framework supports component-based specification of programming ...
06/09/2019

Whither Programs as Specifications

Unifying theories distil common features of programming languages and de...
01/08/2019

StaBL - State Based Language for Specification of Web Applications

Context and motivation: Usage of Formal Specification languages is scarc...
09/05/2017

Context Generation from Formal Specifications for C Analysis Tools

Analysis tools like abstract interpreters, symbolic execution tools and ...
04/02/2016

Reasoning About Pragmatics with Neural Listeners and Speakers

We present a model for pragmatically describing scenes, in which contras...
06/05/2022

Geometric Theory for Program Testing

Formal methods for verification of programs are extended to testing of p...