Specification Construction Using Behaviours, Equivalences, and SMT Solvers
Abstract
We propose a method to write and check a specification including quantifiers using behaviors, i.e., input-output pairs. Our method requires the following input from the user: (1) answers to a finite number of queries, each of which presents some behavior to the user, who responds informing whether the behavior is "correct" or not; and (2) an "equivalence" theory (set of formulae), which represents the users opinion about which pairs of behaviors are equivalent with respect to the specification; and (3) a "vocabulary", i.e., a set of formulae which provide the basic building blocks for the specification to be written. Alternatively, the user can specify a type theory and a simple relational grammar, and our method can generate the vocabulary and equivalence theories. Our method automatically generates behaviors using a satisfiability modulo theory solver. Since writing a specification consists of formalizing ideas that are initially informal, there must, by definition, be at least one "initial" step where an informal notion is formalized by the user in an ad hoc manner. This step is the provision of the equivalence theory and vocabulary; we call it the primitive formalization step. We contend that it is considerably easier to write an equivalence theory and vocabulary than to write a full-blown formal specification from scratch, and we provide experimental evidence for this claim. We also show how vocabularies can be constructed hierarchically, with a specification at one level providing vocabulary material for the next level.
- Publication:
-
arXiv e-prints
- Pub Date:
- July 2013
- DOI:
- 10.48550/arXiv.1307.6901
- arXiv:
- arXiv:1307.6901
- Bibcode:
- 2013arXiv1307.6901A
- Keywords:
-
- Computer Science - Software Engineering