Hierarchical correctness proofs for distributed algorithms
PODC '87 Proceedings of the sixth annual ACM Symposium on Principles of distributed computing
Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the Fourth Annual Symposium on Logic in computer science
Contracts: specifying behavioral compositions in object-oriented systems
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
In transition from global to modular temporal reasoning about programs
Logics and models of concurrent systems
Model checking and modular verification
ACM Transactions on Programming Languages and Systems (TOPLAS)
A methodology for hardware verification using compositional model checking
Science of Computer Programming - Special issue on mathematics of program construction
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
You Assume, We Guarantee: Methodology and Case Studies
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
Assume-Guarantee Verification of Source Code with Design-Level Assumptions
Proceedings of the 26th International Conference on Software Engineering
Breaking up is hard to do: an investigation of decomposition for assume-guarantee reasoning
Proceedings of the 2006 international symposium on Software testing and analysis
Formal Software Analysis Emerging Trends in Software Model Checking
FOSE '07 2007 Future of Software Engineering
Proofs of Networks of Processes
IEEE Transactions on Software Engineering
A Notion of Glue Expressiveness for Component-Based Systems
CONCUR '08 Proceedings of the 19th international conference on Concurrency Theory
SPIN'03 Proceedings of the 10th international conference on Model checking software
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Model-checking behavioral programs
EMSOFT '11 Proceedings of the ninth ACM international conference on Embedded software
Symbolic compositional verification by learning assumptions
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
A closer look at aspect interference and cooperation
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Behavioral interface specification languages
ACM Computing Surveys (CSUR)
Communications of the ACM
Unblockable compositions of software components
Proceedings of the 15th ACM SIGSOFT symposium on Component Based Software Engineering
Hi-index | 0.00 |
We present a method and a tool for composing a reactive system and for accompanying the development and documentation process with a proof of its correctness. The approach is based on behavioral programming (BP) and the Z3 SMT solver. We show how program verification can be automated and streamlined by combining properties of individual modules, specified and verified separately, with application-independent specifications both of the BP semantics and of general theories. The method may yield an exponential acceleration of the verification process when compared with model-checking the composite application. We show that formalization of properties of independent modules in preparation for the correctness proofs can be useful as documentation for future development. We view this work as a further step towards making formal correctness proofs standard practice in the development of reactive systems, and carried out by programmers at large.