Formal Methods for Safety in Critical Systems

My experience in the application of formal methods covers process algebra, higher-order logic and temporal logic. I have had some success in applying these methods in the analysis of certain aspects of a computer controlled railway signalling system. In seeking to improve confidence in the design and overall safety of these systems, the challenge was to implement a means to mechanically verify the correctness of the data driving the generic control program. The main difficulty is perhaps unsurprising: it is very hard to bridge the divide between theoretical computer science (the needs of formal methods) and engineering practice (in this case, the needs of signal engineers).