Fairness
Parallel program design: a foundation
Parallel program design: a foundation
IWSSD '89 Proceedings of the 5th international workshop on Software specification and design
win and sin: predicate transformers for concurrency
ACM Transactions on Programming Languages and Systems (TOPLAS)
Derivation of efficient parallel programs: an example from genetic sequence analysis
International Journal of Parallel Programming
Mechanically Verifying Concurrent Programs with the Boyer-Moore Prove
IEEE Transactions on Software Engineering
On the analogy between propositions and types
Logical foundations of functional programming
Proof of distributed algorithms: an exercise
Developments in concurrency and communication
A simple proof of a simple consensus algorithm
Beauty is our business
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
Conditional rewriting logic as a unified model of concurrency
Selected papers of the Second Workshop on Concurrency and compositionality
A simple proof of a completeness result for leads-to in the UNITY logic
Information Processing Letters
Derivation of concurrent programs: two examples
Science of Computer Programming
An introduction to assertional reasoning for concurrent systems
ACM Computing Surveys (CSUR)
Models for the substitution axiom of UNITY logic
Information Processing Letters
ACM Transactions on Programming Languages and Systems (TOPLAS)
Invariants, composition, and substitution
Acta Informatica
Verification of sequential and concurrent programs (2nd ed.)
Verification of sequential and concurrent programs (2nd ed.)
Theoretical Computer Science - Special issue on algebraic methodology and software technology
Formal Verification of Concurrent Programs Using the Larch Prover
IEEE Transactions on Software Engineering
Elements of distributed algorithms: modeling and analysis with Petri nets
Elements of distributed algorithms: modeling and analysis with Petri nets
ACM Transactions on Computational Logic (TOCL)
Verifying properties of parallel programs: an axiomatic approach
Communications of the ACM
A discipline of multiprogramming: programming theory for distributed applications
A discipline of multiprogramming: programming theory for distributed applications
Formal Derivation of Concurrent Programs: An Example from Industry
IEEE Transactions on Software Engineering
Inductive Definitions in the system Coq - Rules and Properties
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
Program Verification using HOL-UNITY
HUG '93 Proceedings of the 6th International Workshop on Higher Order Logic Theorem Proving and its Applications
A Modular Coding of UNITY in COQ
TPHOLs '96 Proceedings of the 9th International Conference on Theorem Proving in Higher Order Logics
Formal Verification of Concurrent Programs in LP and in COQ: A Comparative Analysis
TPHOLs '97 Proceedings of the 10th International Conference on Theorem Proving in Higher Order Logics
Lazy Compositional Verification
COMPOS'97 Revised Lectures from the International Symposium on Compositionality: The Significant Difference
Soundness and Completeness of UNITY Logic
Proceedings of the 14th Conference on Foundations of Software Technology and Theoretical Computer Science
Mobile UNITY Coordination Constructs Applied to Packet Forwarding for Mobile Hosts
COORDINATION '97 Proceedings of the Second International Conference on Coordination Languages and Models
Towards a Compositional Approach to the Design and Verification of Distributed Systems
FM '99 Proceedings of the Wold Congress on Formal Methods in the Development of Computing Systems-Volume I - Volume I
Mechanically Verifying Safety and Liveness Properties of Delay Insensitive Circuits
CAV '91 Proceedings of the 3rd International Workshop on Computer Aided Verification
Proving the Correctness of Multiprocess Programs
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
The design of complex software systems fundamentally relies on the understanding of abstract components and their interactions. Although compositional techniques are being successfully employed in practice, the use of such techniques is often rather informal and intuitive, and typically a justification for correct behaviour of the composed system exists but is not expressed explicitly. In this paper, we show what can be gained from treating such justifications as first-class citizens. The fairly general setting for this paper is a formal development of a UNITY-style temporal logic for labeled transition systems in the calculus of inductive constructions which has been conducted using the Coq proof assistant in a formally rigorous way. Our development not only subsumes the original UNITY approach to program verification and the more recent approach of New UNITY, but goes beyond it in several essential aspects, such as the generality of the program/system model (arbitrary labeled transition systems instead of UNITY programs), the notion of fairness (weak group fairness instead of unconditional fairness), and the issue of compositionality (not only for safety but also for liveness assertions). The last aspect, which we feel is crucial in the foundations for software engineering, is subject of this paper. We present a general proof rule for compositional verification of liveness assertions in tightly coupled systems. It relies on a notion of compositional proofs, which in turn is closely related to classical work on interference-free proofs for parallel programs. The formulation of this new proof rule and the verification of its soundness does not only exploit the strong inductive reasoning capabilities of the calculus of inductive constructions, but it also uses the propositions-as-types interpretation and the associated proofs-as-objects interpretation in an essential way.