 A formal specification is a mathematical description of software or hardware that may be used to develop an implementation.It describes "what" the system should do, not (necessarily) "how" the system should do it.Given such a specification, it is possible to use formal verification techniques to demonstrate that a candidate system design is correct with respect to that specification.