Specification Construction Using Behaviours, Equivalences, and SMT Solvers
Paul C. Attie, Fadi A. Zaraket, Mohamad Noureddine, Farah El-Hariri

TL;DR
This paper introduces a method for constructing formal specifications using behaviors, equivalence theories, and SMT solvers, simplifying the formalization process through interactive queries and hierarchical vocabularies.
Contribution
It presents a novel interactive approach to specification construction that leverages behaviors, equivalence theories, and SMT solvers, reducing formalization effort.
Findings
The method effectively generates behaviors using SMT solvers.
Formalizing equivalence theories and vocabularies is easier than full specifications.
Hierarchical vocabulary construction enables layered specification development.
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsFormal Methods in Verification · Logic, programming, and type systems · Software Engineering Research
