Combining Algebraic and Set-Theoretic Specifications (Extended Version)
Specification frameworks such as B and Z provide power sets and cartesian<br />products as built-in type constructors, and employ a rich notation for<br />defining (among other things) abstract data types using formulae of predicate<br />logic and lambda-notation. In contrast, the so-called algebraic specification <br />frameworks often limit the type structure to sort constants and<br />first-order functionalities, and restrict formulae to (conditional) equations.<br />Here, we propose an intermediate framework where algebraic specifications<br />are enriched with a set-theoretic type structure, but formulae remain in the<br />logic of equational Horn clauses. This combines an expressive yet modest<br />specification notation with simple semantics and tractable proof theory.