37 research outputs found
Applying the Cogito Program Development Environment to Real-Time System Design
We show how a formal program development environment, previously used for sequential, non-real-time applications only, can be exploited for parallel, real-time system design. A pragmatic approach is adopted, making best use of existing technologies, in order to quickly achieve useful results.
Using theory interpretation to mechanise the reals in a theorem prover
AbstractThe mechanisation of the real numbers within theorem provers is of practical benefit for the verification of real-time systems. The real numbers provide a foundation within the theorem prover for classical mathematical analysis such as differentiation and integration. The approach we have taken makes extensive use of the theory interpretation facilities of the interactive theorem prover Ergo to maximise theory reuse and hence minimise theorem redundancy. The theory developed is compared with Harrison's HOL version
Contextual matching of software library components
Many automated programming environments construct software by integrating predefined components from a software library. A fundamental challenge in this process is to match the programmer's specified requirements against the stated capabilities of the components. We explain how the chances of successfully achieving a match can be increased by taking the program context surrounding each requirement into consideration. Formal rules, based on program refinement theory, are defined for context-based matching. The rules allow properties that can be proven to hold at a particular point in the program to justify matching with components that operate correctly only in such a context
A Set-Theoretic Model for Real-Time Specification and Reasoning
Abstract. Timed-trace formalisms have emerged as a powerful method for specifying and reasoning about concurrent real-time systems. We present a simple variant which builds methodically on set theory, and is thus suitable for use by programmers with little formal methods experience.
Formally analysing a security protocol for replay attacks
The Kerberos-One-Time protocol is a key distribution protocol promoted for use with Javacards to provide secure communication over the GSM mobile phone network. From inspection we suspected a replay attack was possible on the protocol. To check this, we formally specified the protocol using Object-Z and then analysed its behaviour in the presence of an attacker using the Symbolic Analysis Laboratory's model checker. To produce accurate results efficiently, our formalism included an abstraction of the protocol's data structures that captured just those characteristics that we believed made the protocol vulnerable. Ultimately, the model checker's analysis confirmed our suspicions about the protocol's weakness
Refinement rules for real-time multi-tasking programs
We present several formal program refinement rules for designing multi-tasking programs with hard real-time constraints
Real-time schedulability tests for preemptive multitasking
When developing multitasking real-time systems, schedulability tests are used to formally prove that a given task set will meet its deadlines. A wide range of such tests have appeared in the literature. This tutorial acts as a guide to the major tests available for preemptive multitasking applications.
Formal definition of priority in CSP
The process models of Ada and occam are formally based on the CSP process algebra. However, for fine-tuning real-time performance, they include “prioritized” constructs that have no counterparts in CSP. These constructs therefore lack any formal definition, a situation that leaves room for misunderstandings. We extend CSP with a formal definition of the notion of priority. The definition is then used to assess the transputer implementation of priority in occam and the definition of priority in Ada
