Formal methods are mathematical techniques for the specification, development and verification of software and hardware systems.