Abstract

Swinging types provide an integrated framework for specifying software on the basis of many-sorted logic in terms of “static” functions and relations as well as “dynamic” transition systems. Swinging types combine equational, Horn and modal logic for the purpose of using evaluation and proof rules from all three logics for rapid prototyping and verification. A swinging specification separates from each other visible sorts that denote domains of data identified by their structure; hidden sorts that denote domains of data identified by their behavior in response to observers; μ- predicates, i.e., least relations representing inductive(ly provable) properties of a system; and ν- predicates, i.e., greatest relations representing complementary “coinductive” properties, which often describe behavioral aspects “in the infinity”. Programming paradigms, such as functional, relational or state-oriented ones, and specification formalisms, such as algebraic, set-theoretic, rule-based, net-based, coalgebraic, order-theoretic ones, usually handle either static or dynamic components, either structural or behavioral aspects of a system. Swinging types admit the integrated design and analysis of these components and aspects. An integrated model is obtained naturally if all entities (objects, states, etc.) of the system are presented as terms built up of constructors for visible or hidden sorts, functions are specified in terms of conditional equations (=functional programs), least relations in terms of Horn clauses (=logic programs or transition system specifications) and greatest relations in terms of co-Horn clauses. Data equalities are either structural or behavioral, the former being least, the latter being greatest solutions of axioms that are determined by (components of) the type's signature. This paper mainly presents the theoretical foundations of swinging types, such as standard (term) models, criteria for structural and behavioral consistency, and proof rules. Swinging types admit flexible design guidelines, tailored to particular objectives or application fields. Suitable design methods may be based upon this and the companion paper [61] that explores various application areas and illustrates how swinging types may realize different programming or specification styles. As to structuring concepts for swinging types, parameterization and genericity are involved in this paper, while [64] deals with extensions and refinements.

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.