Learn More
This paper describes an efficient interpreter for lazy functional languages like Haskell and Clean. The interpreter is based on the elimination of algebraic data types and pattern-based function definitions by mapping them to functions using a new efficient variant of the Church encoding. The transformation is simple and yields concise code. We illustrate(More)
For a model based automatic test system it is essential to generate elements of the used data types automatically. In this paper we introduce an elegant algorithm that is able to generate a list of all elements of arbitrary types using generic programming techniques. In order to allow exhaustive testing for finite types we need to be able to determine that(More)
In this paper we introduce a new technique to synthesize functions matching a given set of input-output pairs. Using techniques similar to defunc-tionalisation the abstract syntax tree of the candidate functions is specified at a high level of abstraction. We use a recursive data type to represent the syntax tree of the candidate functions. The test system(More)
Software testing is a labor-intensive and hence expensive, yet heavily used technique to control quality. In this paper we introduce Gast, a fully automatic test-tool. Properties from first order logic can be expressed in the system, Gast automatically generates appropriate test-data, evaluates the property for these values, and analyzes the test-results.(More)
In this paper we introduce the iTask system: a set of combinators to specify <i>work flows</i> in a pure functional language at a very high level of abstraction. Work flow systems are automated systems in which <i>tasks</i> are coordinated that have to be executed by humans and computers. The combinators that we propose support work flow patterns commonly(More)
G∀ST is a fully automatic test system. Given a logical property, stated as a function, it is able to generate appropriate test values, to execute tests with these values, and to evaluate the results of these tests. Many reactive systems, like automata and protocols, however, are specified by a model rather than in logic. There exist tools that are able to(More)
More and more software systems use a browser as the universal graphical user interface. As a consequence these applications inherit browser navigation as part of their interface. Typical browser actions are the use of the back-and forward-button and the cloning of windows. Browser navigation is difficult to deal with because it has effects that are noticed(More)