Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Nicholas Smallbone is active.

Publication


Featured researches published by Nicholas Smallbone.


international conference on functional programming | 2009

Finding race conditions in Erlang with QuickCheck and PULSE

Koen Claessen; Michal Palka; Nicholas Smallbone; John Hughes; Hans Svensson; Thomas Arts; Ulf T. Wiger

We address the problem of testing and debugging concurrent, distributed Erlang applications. In concurrent programs, race conditions are a common class of bugs and are very hard to find in practice. Traditional unit testing is normally unable to help finding all race conditions, because their occurrence depends so much on timing. Therefore, race conditions are often found during system testing, where due to the vast amount of code under test, it is often hard to diagnose the error resulting from race conditions. We present three tools (QuickCheck, PULSE, and a visualizer) that in combination can be used to test and debug concurrent programs in unit testing with a much better possibility of detecting race conditions. We evaluate our method on an industrial concurrent case study and illustrate how we find and analyze the race conditions.


tests and proofs | 2010

QuickSpec: guessing formal specifications using testing

Koen Claessen; Nicholas Smallbone; John Hughes

We present QUICKSPEC, a tool that automatically generates algebraic specifications for sets of pure functions. The tool is based on testing, rather than static analysis or theorem proving. The main challenge QUICKSPEC faces is to keep the number of generated equations to a minimum while maintaining completeness. We demonstrate how QUICKSPEC can improve ones understanding of a program module by exploring the laws that are generated using two case studies: a heap library for Haskell and a fixed-point arithmetic library for Erlang.


conference on automated deduction | 2013

Automating inductive proofs using theory exploration

Koen Claessen; Moa Johansson; Dan Rosén; Nicholas Smallbone

HipSpec is a system for automatically deriving and proving properties about functional programs. It uses a novel approach, combining theory exploration, counterexample testing and inductive theorem proving. HipSpec automatically generates a set of equational theorems about the available recursive functions of a program. These equational properties make up an algebraic specification for the program and can in addition be used as a background theory for proving additional user-stated properties. Experimental results are encouraging: HipSpec compares favourably to other inductive theorem provers and theory exploration systems.


conference on automated deduction | 2011

Sort it out with monotonicity: translating between many-sorted and unsorted first-order logic

Koen Claessen; Ann Lillieström; Nicholas Smallbone

We present a novel analysis for sorted logic, which determines if a given sort is monotone. The domain of a monotone sort can always be extended with an extra element. We use this analysis to significantly improve well-known translations between unsorted and many-sorted logic, making use of the fact that it is cheaper to translate monotone sorts than non-monotone sorts. Many interesting problems are more naturally expressed in many-sorted first-order logic than in unsorted logic, but most existing highly-efficient automated theorem provers solve problems only in unsorted logic. Conversely, some reasoning tools, for example model finders, can make good use of sort-information in a problem, but most problems today are formulated in unsorted logic. This situation motivates translations in both ways between many-sorted and unsorted problems. We present the monotonicity analysis and its implementation in our tool Monotonox, and also show experimental results on the TPTP benchmark library.


Logical Methods in Computer Science | 2017

Encoding Monomorphic and Polymorphic Types

Jasmin Christian Blanchette; Sascha Böhme; Andrei Popescu; Nicholas Smallbone

Many automatic theorem provers are restricted to untyped logics, and existing translations from typed logics are bulky or unsound. Recent research proposes monotonicity as a means to remove some clutter when translating monomorphic to untyped first-order logic. Here we pursue this approach systematically, analysing formally a variety of encodings that further improve on efficiency while retaining soundness and completeness. We extend the approach to rank-1 po lymorphism and present alternative schemes that lighten the translation of polymorphic symbols based on the novel notion of “cover”. The new encodings are implemented in Isabelle/HOL as part of the Sledgehammer tool. We include informal proofs of soundness and correctness, and have formalised the monomorphic part of this work in Isabelle/HOL. Our evaluation finds the new encodings vastly superior to previous schemes.


Lecture Notes in Computer Science | 2014

Hipster: Integrating Theory Exploration in a Proof Assistant

Moa Johansson; Dan Rosén; Nicholas Smallbone; Koen Claessen

This paper describes Hipster, a system integrating theory exploration with the proof assistant Isabelle/HOL. Theory exploration is a technique for automatically discovering new interesting lemmas in a given theory development. Hipster can be used in two main modes. The first is exploratory mode, used for automatically generating basic lemmas about a given set of datatypes and functions in a new theory development. The second is proof mode, used in a particular proof attempt, trying to discover the missing lemmas which would allow the current goal to be proved. Hipster’s proof mode complements and boosts existing proof automation techniques that rely on automatically selecting existing lemmas, by inventing new lemmas that need induction to be proved. We show example uses of both modes.


Lecture Notes in Computer Science | 2015

TIP: Tons of Inductive Problems

Koen Claessen; Moa Johansson; Dan Rosén; Nicholas Smallbone

This paper describes our collection of benchmarks for inductive theorem provers. The recent spur of interest in automated inductive theorem proving has increased the demands for evaluation and comparison between systems. We expect the benchmark suite to continually grow as more problems are submitted by the community. New challenge problems will promote further development of provers which will greatly benefit both developers and users of inductive theorem provers.


Journal of Functional Programming | 2017

Quick Specifications for the Busy Programmer

Nicholas Smallbone; Moa Johansson; Koen Claessen; Maximilian Algehed

QuickSpec is a theory exploration system which tests a Haskell program to find equational properties of it, automatically. The equations can be used to help understand the program, or as lemmas to help prove the program correct. QuickSpec is largely automatic: the user just supplies the functions to be tested and QuickCheck data generators. Previous theory exploration systems, including earlier versions of QuickSpec itself, scaled poorly. This paper describes a new architecture for theory exploration with which we can find vastly more complex laws than before, and much faster. We demonstrate theory exploration in QuickSpec on problems both from functional programming and mathematics.


annual erlang workshop | 2015

Linking unit tests and properties

Alex Gerdes; John Hughes; Nicholas Smallbone; Meng Wang

QuickCheck allows us to verify software against particular properties. A property can be regarded as an abstraction over many unit tests. QuickCheck uses generated random input data to test such properties. If a counterexample is found, it becomes immediately clear what we have tested. This is not the case when all tests pass, since we do not (and shall not) see the actual generated test cases. How can we be sure about what is tested? QuickCheck has the ability to gather statistics about the test cases, which is insightful. But still it does not tell us whether the particular unit test scenarios we have in mind are included. For this reason, we have developed a tool that can answer this question. It checks if a given unit test can be generated by a property, making it easier to judge the propertys quality. We have applied our tool to an industrial use case of testing the AUTOSAR basic software modules and shows that it can handle complex models and large unit tests.


fundamental approaches to software engineering | 2014

An Expressive Semantics of Mocking

Josef Svenningsson; Hans Svensson; Nicholas Smallbone; Thomas Arts; Ulf Norell; John Hughes

We present a semantics of mocking, based on a process calculus-like formalism, and an associated mocking framework. We can build expressive mocking specifications from a small, orthogonal set of operators. Our framework detects and rejects ambiguous specifications as a validation measure. We report our experience testing software components for the car industry, which needed the full power of our framework.

Collaboration


Dive into the Nicholas Smallbone's collaboration.

Top Co-Authors

Avatar

Koen Claessen

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

John Hughes

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

Dan Rosén

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

Moa Johansson

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

Hans Svensson

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Ulf Norell

Chalmers University of Technology

View shared research outputs
Top Co-Authors

Avatar

Alex Gerdes

University of Gothenburg

View shared research outputs
Top Co-Authors

Avatar

Knut Åkesson

Chalmers University of Technology

View shared research outputs
Researchain Logo
Decentralizing Knowledge