A formal specification translates requirements into a language with defined mathematical meaning. It can describe permitted states, function behavior, invariants, preconditions and postconditions so verification tools can reason about them without relying on ambiguous prose.
Writing the specification is a critical human responsibility because every later proof depends on it. A perfectly verified implementation can still solve the wrong problem when the specification is incomplete, so teams should review and test the specification against real intent.
Acronyms and aliases
formal methods specification variant
Related terms
Frequently asked questions
Can a formal specification be written from natural language?
A tool can help translate natural language into a formal statement, but people must review the result because subtle changes can alter the property being proved.
What does a formal specification contain?
It can contain definitions, input assumptions, required outputs, invariants, allowed state transitions and conditions that must hold before and after an operation.