Pieter W. M. Koopman

Learn More
<i>Task-Oriented Programming</i> (TOP) is a novel programming paradigm for the construction of distributed systems where users work together on the internet. When multiple users collaborate, they need to interact with each other frequently. TOP supports the definition of tasks that react to the progress made by others. With TOP, complex multi-user(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)
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)
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)
Although computer systems penetrate all facets of society, the software running those systems may contain many errors. Producing high quality software appears to be difficult and very expensive. Even determining the quality of software is not easy. Testing is by far the most used way to estimate the quality of software. Testing itself is not easy and time(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 backand forward-button and the cloning of windows. Browser navigation is difficult to deal with because it has effects that are noticed(More)
In this paper we introduce a new technique to synthesize functions matching a given set of input-output pairs. Using techniques similar to defunctionalisation 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)
Smart cards are used in critical application areas. This means that their software should function correctly. Formal methods are indispensable in obtaining high quality systems. This paper presents a case study on the use of formal methods in specification-based, black-box testing of a smart card applet. The system under test is a simple electronic purse(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)