Formal Methods

Mathematical specification and verification of software.


field tier

Formal Methods addresses mathematical specification and verification of software. It sits within Programming and Languages and inherits that area’s core questions about correctness, scale, and tractability. This page surveys the conceptual axes of the topic and points to the references that frame ongoing research and teaching. The intent is to be useful both as an entry point for newcomers and as an index for practitioners cross-checking their mental model against the field’s primary sources.

Work on formal methods can be organised around a few interlocking concerns: the formal objects under study, the algorithms or systems that compute over them, the resource trade-offs (time, memory, communication, statistical efficiency), and the empirical or theoretical guarantees that practitioners rely on. The sources cited below approach the topic from a mix of these angles.

Foundational references

Baier, Principles of Model Checking (2008) is a standard reference for this material and is used both as a curriculum anchor and as a long-form survey of techniques.

Supporting and complementary work

Huth, Logic in Computer Science: Modelling and Reasoning about Systems (2004) provides supporting material that complements the primary references — readers comparing approaches will find useful framings, alternative notations, or extensions there.

Open methodological questions in formal methods cluster around how to compose the techniques above under realistic constraints — scale, adversarial inputs, partial observability, and shifting workloads. The cited references give the precise statements, proofs, and empirical evaluations that this overview only sketches; downstream topic pages drill into specific subfields.

Prerequisites

Sources

  • textbook · primary · 2008
    Principles of Model Checking
    baier-2008
  • textbook · supporting · 2004
    Logic in Computer Science: Modelling and Reasoning about Systems
    huth-2004

In context

Where this topic sits in the prerequisite graph. Click any node to jump.

Open in full atlas →

Explore

  1. 01

    Model Checking

    Exhaustive state-space exploration for finite-state systems.

  2. 02

    Symbolic Model Checking

    BDD- and SAT-based model checking and bounded model checking.

  3. 03

    Temporal Logics

    LTL, CTL, and CTL* for specifying reactive systems.

  4. 04

    SAT Solvers

    DPLL, CDCL, and modern Boolean satisfiability engines.

  5. 05

    SMT Solvers

    Satisfiability modulo theories and decision procedures.

  6. 06

    Separation Logic

    Reasoning about heap-manipulating programs and concurrency.

  7. 07

    Refinement Types

    Types augmented with logical predicates for lightweight verification.

  8. 08

    Proof Assistants

    Coq, Lean, Isabelle, and Agda as interactive proof environments.

  9. 09

    Program Synthesis

    Automatic generation of programs from specifications or examples.

  10. 10

    Symbolic Execution

    Path-based program analysis using symbolic inputs.

  11. 11

    Concurrency Verification

    Verifying safety and liveness of concurrent and distributed systems.


Review this topic

This page was drafted by an agent and is waiting on expert review. Spotted a wrong prerequisite, a missing concept, a misattributed source, or a factual slip? Tell us — your review opens a tracked issue maintainers act on.