Virtual Library
Computing
Software Engineering
Education
Please contact
Jonathan Bowen
if you know of relevant on-line information not included here
or would like to maintain information on a particular topic.
Use the
comp.specification.misc
newsgroup, for general
formal methods queries.
This document contains some pointers to information on
Formal Methods,
useful for mathematically describing and reasoning about
computer-based systems,
available around the world on the
World Wide Web (WWW).
Formal methods are a fault avoidance technique that help in the
reduction of errors introduced into a system, particularly
at the earlier stages of design.
They complement fault removal techniques like testing.
Links for accessing on-line
information in the following categories are available:
indicates new entries.
indicates a (subjectively!) recommended link for especially good
on-line information. If enough people email me,
I will add a star to entries recommended by others.
Selected resources:
This space will be used to indicate selected new entries
and developments in the
formal methods pages.
-
Abstract State Machines (ASM).
See also
ASM - Europe, University of Paderborn, Germany.
Formerly known as
Evolving Algebras.
-
ACL2
(A Computational Logic for Applicative Common Lisp)
Version 1.9 theorem prover (1997), a successor to the
Nqthm
Boyer-Moore theorem prover.
-
ACSR (Algebra of Communicating Shared Resources)
and
Graphical Communicating Shared Resources (GCSR),
a formal language for the specification,
refinement, and analysis of real-time systems.
See the tools
VERSA (Verification Execution and Rewrite System for ACSR)
and
PARAGON for visual specification and verification of
real-time systems.
-
Action Semantics, a framework for specifying formal semantics
of programming languages.
-
Alcoa:
Alloy Constraint Analyzer, based on a
Z-like language for object models.
-
Autofocus for specifying distributed systems.
First prize winner in the tool competition at
FM'99.
-
Algebraic Design Language,
a higher-order software specification language.
-
Argos, an imperative synchronous language with verification support.
-
Assertion Definition Language Translator (ADLT),
a specification based testing toolset.
-
BDDs (Binary Decision Diagrams) for
finite-state verification problems.
-
B-Method, including the B-Tool and B-Toolkit.
-
Boyer-Moore theorem prover
(a forerunner of
Nqthm and
ACL2).
Available via
ICOT Free Software for use under Unix at
ICOT (Japan) and
SICS (Sweden).
-
CafeOBJ, an algebraic specification and programming language.
A successor of
OBJ.
-
CCS (Calculus of Communicating Systems).
An algebra for specifying and reasoning about concurrent systems.
See
tool support and
Communication and Concurrency book.
-
Circal (CIRcuit CALculus) System supporting a process algebra which
may be used to rigorously describe, verify and simulate concurrent
systems.
See
spftware.
-
CLaReT: The Computer Language Reasoning Tool.
-
CoFI: The Common Framework Initiative,
for algebraic specification and development.
-
COLD (Common Object-oriented Language for Design),
a wide-spectrum specification language.
-
Concurrency Factory, a "next generation"
Concurrency Workbench toolkit.
-
Coq proof assistant.
See also
CtCoq, a working environment for Coq.
-
COSPAN (COordinated SPecification ANalysis),
a general-purpose rapid-prototyping tool,
using the S/R (selection/resolution) language.
-
CSP (Communicating Sequential Processes) including the
FDR2 (Failures-Divergence Refinement) tool.
-
CWB
(Edinburgh Concurrency Workbench)
automated toolset.
See also the
Concurrency Factory and
CWB-NC (The Concurrency Workbench of North Carolina),
which includes a
LOTOS interface, diagnostic infomation, etc.
Note: The CWB and CWB-NC
have a common ancestor, but are each under separate development.
-
DisCo specification method for reactive systems including an
animation tool,
Finland.
-
Duration Calculus (DC), an interval logic for real-time systems.
-
Escher tool and ESEL language.
-
Estelle Formal Description Technique (IS 9074).
See also
EDT (Estelle Development Toolset).
-
Esterel language and tools for synchronous reactive systems,
including
Xeve, an Esterel Verification Environment.
-
EVES tool, based on ZF set theory, from
ORA, Canada.
See also
Z/EVES which provides a
Z notation front-end to EVES.
Both are now available for
on-line distribution.
-
Extended ML
framework for the specification and formal development of
modular Standard ML programs.
-
FormalCheck tool for verifying the functionality of ASIC and
digital IC designs in Verilog or VHDL from
Bell Labs,
based on the
COSPAN
model checker.
-
GIL, a graphical interval logic tool.
See also
publications by
Laura Dillon).
-
HOL mechanical theorem proving system, based on
Higher Order Logic.
-
HyTech
(The HYbrid TECHnology Tool),
an automatic tool for the analysis of embedded systems which
computes the condition under which a linear hybrid system satisfies
a temporal-logic requirement.
-
IMPS, an Interactive Mathematical Proof System intended to provide
mechanical support for traditional mathematical techniques and styles
of practice.
-
Interval Temporal Logic (ITL).
See also
publications.
-
Isabelle, a generic theorem prover, supporting
higher-order logic, ZF set theory, etc.
-
Jape (Just Another Proof Editor).
A framework for building interactive proof editors.
-
KIV (Karlsruhe Interactive Verifier).
A tool for the development of correct software using stepwise
refinement.
-
Kronos, a verification tool for safety and liveness
properties of real-time systems.
Uses timed automata, TCTL (an extension of temporal logic) and
model-checking.
-
Larch and LP
(
Larch Prover).
See also DEC SRC's
Larch Home Page and the
Larch Project at
CMU.
The
Larch tool set
(look at the
README
file first) is available.
-
LeanTaP, a tableau-based deduction theorem prover for classical
first-order logic.
-
LEGO proof assistant.
-
LOTOS (Language of Temporal Ordering Specifications).
See also information from
Madrid,
Ottawa and
Stirling.
-
LPV Linear Programming based software Validation technology,
including proofs and testing.
-
Lustre synchronous declarative language for programming
reactive systems, including verification.
-
MALPAS static analysis tool-set.
-
Maintainer's Assistant,
a tool for reverse engineering and re-engineering code using
formal methods.
-
MathSpad structure editor,
especially for mathematical calculations.
-
Meije tools for the verification of concurrent programs.
Includes ATG
, a graphical editor/visualizer.
Mizar tool, a long-term effort aimed at developing software
to support a working mathematician in preparing papers.
Model checking at CMU, a method for formally verifying
finite-state concurrent systems.
Available packages include:
-
BDD library with extensions for sequential verification.
-
CV, a VHDL model checker.
-
CSML and MCB, a language for compositional description of
finite state machines and a (non-symbolic) model checker for CTL.
-
SMV (Symbolic Model Verifier) model checker for finite-state
systems, using the specification language CTL (Computation Tree Logic),
a propositional branching-time temporal logic. See also
Word-level SMV for verifying arithmetic circuits efficiently.
Murphi description language and verifier tool for
finite-state verification of concurrent systems.
NP-Tools
(a framework for mathematically proving safety properties),
including
Prover
(a theorem prover for propositional logic extended with finite
integer arithmetic) from
Logikkonsult.
Prover is also marketed by
NPL in the UK.
Nqthm 1992, the latest
Boyer-Moore theorem prover.
Also
accessible via FTP.
Includes the Pc-Nqthm interactive ``Proof-checker''.
Nuprl tool based on intuitionistic type theory.
OBJ - OBJ3, 2OBJ,
CafeOBJ, etc. Term rewriting and algebraic specification.
Otter, an automated deduction system.
Petri Nets, a formal graphical notation
for modelling systems with concurrency.
See also
conferences and
tools.
Pi-calculus, a calculus for mobile processes.
See also the
Mobility Workbench and a
searchable bibliography.
Pobl.
A development method for concurrent object-based programs.
ProofPower is a commercial tool, developed by
ICL,
supporting development and checking of specifications and formal proofs
in Higher Order Logic and/or Z.
Support for Z uses a deep(ish) embedding of Z into HOL, but includes
syntax and type checking customized for Z.
PVS (Prototype Verification System) tool based on classical typed
higher-order logic.
RAISE (Rigorous Approach to Industrial Software Engineering).
Includes RSL (RAISE Specification Language).
Rapide language and toolset, for building large-scale
distributed multi-language systems.
Refinement Calculus by Ralph Back et al..
SCR (Software Cost Reduction),
a tabular notation for specifying requirements and
tools for creating and analyzing requirements specifications.
SDL (Specification and Description Language) from the
SDL Forum Society.
See also previous site
here.
SGM (State Graph Manipulator).
A real-time
model checking verification tool.
Signal language for synchronous systems.
(Information in French.)
See also the related
Esterel amd
Lustre.
SPARK secure subset of Ada, including
SPARK Examiner tool for program analysis and verification.
SPIN is an automated verification tool
(model checker), using
PROMELA (Pocess Meta Language), a language loosely based on
CSP, for finite state systems, such as protocols or
validation models of distributed systems, developed at
Bell Laboratories.
STeP, the Stanford Temporal Prover.
TAM'97 (Trace Assertion Method).
A formal method for abstract specification of module interfaces.
Temporal-Rover - formal specification and testing tool based on
temporal logic.
TLA (Temporal Logic of Actions),
a logic for specifying and reasoning about concurrent and
reactive systems.
See also
Tools for TLA project.
TPS and ETPS, the Theorem Proving System and the Educational
Theorem Proving System.
TRIO language and tools for
real-time systems, based on temporal logic.
TTM/RTTL framework for real-time reactive systems.
UNITY, a programming notation and a logic to reason about
parallel and distributed programs.
UPPAAL verification and validation tools for real-time systems.
Model checking and simulation with a graphical interface.
VeriSoft, Bell Laboratories, Lucent Technologies.
A model checking tool for systematic software
testing of concurrent/reactive/real-time systems. Automatically
searches for coordination problems (deadlocks, etc.) and assertion
violations. Supports C, C++, etc.
VDM (Vienna Development Method).
VIS (Verification Interacting with Synthesis),
a system for formal verification, synthesis, and
simulation of finite state systems, especially logic circuits.
Includes a Verilog HDL front-end.
Z notation for formal specification.
See also:
The following electronic mailing lists cover general issues
concerning formal methods:
There are a significant number of mailing lists concerning
individual formal methods. Please see the relevant pages
for the formal methods of interest for details.
See also information on:
Last updated by
Jonathan Bowen,
Centre for Applied Formal Methods,
SCISM,
South Bank University, London,
28 November 2000.
Further information for possible inclusion is welcome.
Part of the OUCL
archive.
Supported by
ProCoS.