Formal verification represents intended behavior as a mathematical specification and proves that an implementation satisfies it. Unlike testing, which examines selected examples, a proof can cover every input described by the model and specification.
The guarantee is only as meaningful as the specification and the assumptions around the verified code. People still need to review what was specified, connect the formal model to the production system and account for hardware, dependencies and behavior outside the proof boundary.
Acronyms and aliases
program verification variant
Related terms
Frequently asked questions
How is formal verification different from software testing?
Testing checks chosen executions, while formal verification uses logic to establish a property for every case covered by the specification and proof assumptions.
Can formal verification prove that software has no bugs?
It can prove specified properties within a defined model, but it cannot cover requirements that were omitted, incorrect assumptions or unverified parts of the real system.