ABSTRACT
The increasing significance of concurrency and the need to address the challenges presented by concurrency motivate its formalization. In this paper, a methodology for modeling and verifying communications in a concurrent system developed in Erasmus, a process-oriented programming language, is proposed. The innovative aspects of this methodology include the use of category theory to model and verify properties of communications in Erasmus, and the use of data flow to analyze and abstract an implementation of Erasmus. The methodology is illustrated by a simple example.
- P. Grogono and B. Shearing. Modular concurrency: A new approach to manageable software. In Proceedings of the 3rd International Conference on Software and Data Technologies, pages 47--54, Porto, Portugal, 2008.Google Scholar
- P. Godefroid. Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem. Springer, Secaucus, United States, 1996. Google ScholarDigital Library
- A.T. Sampson. Process-Oriented Patterns For Concurrent Software Engineering. PhD thesis, University of Kent, Kent, United Kingdom, 2008.Google Scholar
- E.M. Clarke, O. Grumberg, and D. Peled. Model Checking. The MIT Press, Cambridge, United States, 2001.Google Scholar
- M. Zakeryfar. Static Analysis of a Concurrent Programming Language by Abstract Interpretation. PhD thesis, Concordia University, Montreal, Canada, 2014.Google Scholar
- P. Grogono and B. Shearing. Concurrent software engineering: Preparing for paradigm shift. In Proceedings of the 1st Canadian Conference on Computer Science and Software Engineering, pages 99--108, Montreal, Canada, 2008. Google ScholarDigital Library
- E.A. Lee. The problem with threads. IEEE Computer, 39(5):33--42, 2006. Google ScholarDigital Library
- F.E. Allen and J. Cocke. A program data flow analysis procedure. Communications of the Association for Computing Machinery, 19(3):137--147, 1976. Google ScholarDigital Library
- M.B. Dwyer and L.A. Clarke. Data flow analysis for verifying properties of concurrent programs. In Proceedings of the 2nd ACM SIGSOFT Symposium on Foundations of Software Engineering, pages 62--75, 1994. Google ScholarDigital Library
- B.C. Pierce. Basic Category Theory for Computer Scientists. The MIT Press, Cambridge, United States, 1991. Google ScholarDigital Library
- J.L. Fiadeiro. Categories for Software Engineering. Springer Berlin Heidelberg, Germany, 2005. Google ScholarDigital Library
- C.A.R. Hoare. Notes on an approach to category theory for computer scientists. In Proceedings of the NATO Advanced Study Institute on Constructive Methods in Computer Science, volume 55. Springer Berlin Heidelberg, Germany, 1989.Google Scholar
- H. Kuang, O. Ormandjieva, S. Klasa, and J. Bentahar. A formal specification of fault-tolerance in prospecting asteroid mission with reactive autonomic systems framework. In Proceedings of the International Conference on Application-Specific Systems, Architectures and Processors, pages 99--106, 2010.Google Scholar
Index Terms
- Using Category Theory and Data Flow Analysis for Modeling and Verifying Properties of Communications in the Process-Oriented Language Erasmus
Recommendations
Using Category Theory to Verify Implementation Against Design in Concurrent Systems
AbstractThe research has shown that process-oriented programming languages provide a suitable means for developing concurrent systems. However, in the development of a concurrent system, there is a challenge to manage consistency between design and ...
Verifying General Safety Properties of Ada Tasking Programs
The isolation approach to symbolic execution of Ada tasking programs provides a basis for automating partial correctness proofs. The strength of this approach lies in its isolation nature; tasks are symbolically executed and verified independently, and ...
Verifying data- and control-oriented properties combining static and runtime verification: theory and tools
Static verification techniques are used to analyse and prove properties about programs before they are executed. Many of these techniques work directly on the source code and are used to verify data-oriented properties over all possible executions. The ...
Comments