CSP||B is an integration of the process algebra Communicating Sequential Processes (CSP), and the B-Method, which enables consistent controllers to be written for B machines in a verifiable way. Controllers are consistent if they call operations only when they are enabled. Previous work has established a way of verifying consistency between controllers and machines by translating control flow to AMN and showing that a control loop invariant is preserved. This paper offers an alternative approach, which allows fragments of control flow expressed as annotations to be associated with machine operations. This enables designers' understanding about local relationships between successive operations to be captured at the point the operations are written, and used later when the controller is developed. Annotations provide a bridge between controllers and machines, expressing the relevant aspects of control flow so that controllers can be verified simply by reference to the annotations without the need to consider the details of the machine operations. This paper presents the approach through two instances of annotations with their associated control languages, covering recursion, prefixing, choice, and interrupt.
[1]
Didier Bert.
B’98: Recent Advances in the Development and Use of the B Method
,
1998,
Lecture Notes in Computer Science.
[2]
Helen Treharne.
Combining control executives and software specifications
,
2000
.
[3]
Steve A. Schneider,et al.
CSP theorems for communicating B machines
,
2005,
Formal Aspects of Computing.
[4]
Jean-Raymond Abrial,et al.
Introducing Dynamic Constraints in B
,
1998,
B.
[5]
C. A. R. Hoare,et al.
Communicating sequential processes
,
1978,
CACM.
[6]
Steve A. Schneider,et al.
Concurrent and Real-time Systems: The CSP Approach
,
1999
.
[7]
Steve A. Schneider,et al.
A verified development of hardware using CSP/spl par/B
,
2006,
Fourth ACM and IEEE International Conference on Formal Methods and Models for Co-Design, 2006. MEMOCODE '06. Proceedings..
[8]
Jean-Raymond Abrial,et al.
The B-book - assigning programs to meanings
,
1996
.
[9]
Edsger W. Dijkstra,et al.
A Discipline of Programming
,
1976
.