LearnViz CompSci
Home / Learn / Software Engineering / Formal Verification

Advanced Topic 44 of 50 Software Engineering

Formal Verification

Mathematically proving software meets its specification.

How it works

Formal verification uses mathematical methods to prove that a system satisfies a specification, rather than testing sample inputs. Techniques include model checking, which exhaustively explores the state space against properties in temporal logic, theorem proving with proof assistants such as Coq, Isabelle and Lean, SMT-based verification and static analysis with abstract interpretation. Specifications state invariants, preconditions and postconditions.

Step-by-step walkthrough

  1. Write the property precisely, such as the lock is never held by two threads.
  2. Model the program mathematically.
  3. A proof assistant or model checker examines all behaviors.
  4. It proves the property or finds a counterexample.
  5. It gives stronger guarantees than tests, but takes effort.

Where it is used

Safety-critical and security-critical systems use it: processor designs, the seL4 microkernel, cryptographic libraries, aircraft control, railway interlocking and smart contracts.

Common pitfall

It is expensive and demands expertise. A proof is only as good as its specification, so wrong or incomplete specs give false assurance, and the model may differ from the real system or hardware. State explosion limits model checking. Use it for the small, critical core and combine it with testing and review.

Where it fits in the course

Formal Verification is topic 44 of 50 in Software Engineering, rated Advanced. It follows Performance Profiling. The next topic is Mutation Testing.

Practice and explore

How to study this topic

  1. Read the explanation above and restate the definition in your own words.
  2. Open the interactive lesson and answer its mini quiz.
  3. Read the common pitfall, then write a short example that avoids it.
  4. Check your understanding in the Software Engineering quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is Formal Verification?
Mathematically proving software meets its specification. It belongs to Software Engineering and is an advanced-level topic.
Where do people use Formal Verification?
Safety-critical and security-critical systems use it: processor designs, the seL4 microkernel, cryptographic libraries, aircraft control, railway interlocking and smart contracts.
What is the most common mistake with Formal Verification?
It is expensive and demands expertise.
What should I learn before this topic?
Start with Performance Profiling, the topic just before it in Software Engineering.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Software Engineering quiz.
Is Formal Verification hard to learn?
It is an Advanced topic. Expect to read the explanation more than once and to connect it with earlier topics. Working through a small example by hand helps most.
How long does it take to learn Formal Verification?
Most learners can read the explanation and finish the interactive lesson in under an hour. Fluency comes from applying the idea, so plan a few short practice sessions with the quiz.
Which topics are related to Formal Verification?
Performance Profiling, Mutation Testing, Cyclomatic Complexity are closely connected. The full list is in the related topics section of this page.
What should I study after Formal Verification?
Continue with Mutation Testing, the next topic in Software Engineering.

Related topics