Category
page 1Formal methods
set theory
branch of mathematics that studies sets, which are collections of objects
Turing machine
abstract computation model; mathematical model of computation that defines an abstract machine which manipulates symbols on a strip of tape according to a table of rules
lambda calculus
formal system in mathematical logic
formal methods
mathematical program specification intended to allow correctness proofs, including algorithmically
boolean satisfiability problem
problem of determining if a Boolean formula could be made true
programming language semantics
the field concerned with the rigorous mathematical study of the meaning of programming languages
Rational Unified Process
process by which software is developed
formal verification
act of proving or disproving the correctness of intended algorithms
Liskov substitution principle
object-oriented programming principle stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S without altering any of the desirable properties of the program (correctness, etc.)
automated theorem proving
subfield of automated reasoning dealing with proving theorems by computer programs
assertion
in computer programming, statement that a predicate is always true at that point in code execution
software quality engineering
discipline that ensures software quality
loop invariant
invariants used to prove properties of loops
dependability
In systems engineering, dependability is a measure of a system's availability, reliability, maintainability, and in some cases, other characteristics such as durability, safety and security. In real-time computing, dependability is the ability to provide services that can be trusted within a time-period. The service guarantees must hold even when the system is subject to attacks or natural failures.
Mastercard Mondex
right|125x125px
Mondex was a smart card electronic cash system, implemented as a stored-value card and owned by Mastercard.
computer-assisted proof
mathematical proof at least partially generated by computer
invariant
condition that can be relied upon to be true during execution of a program, or during some portion of it
formal specification
mathematically based techniques whose purpose are to help with the implementation of systems and software
logic in computer science
academic discipline
satisfiability modulo theories
problem of determining whether a mathematical formula is satisfiable
bisimulation
In theoretical computer science, a bisimulation is a binary relation between state transition systems, associating systems that behave in the same way in that one system simulates the other and vice versa.
homotopy type theory
variant of type theory incorporating the univalence axiom of Voevodsky
Lustre
programming language
predicate transformer semantics
reformulation of Floyd-Hoare logic
life-critical system
system whose failure or malfunction may result in death, serious injury or other severe damage
postcondition
In computer programming, a postcondition is a condition or predicate that must always be true just after the execution of some section of code or after an operation in a formal specification. Postconditions are sometimes tested using assertions within the code itself. Often, postconditions are simply included in the documentation of the affected section of code.
precondition
In computer programming, a precondition is a condition or predicate that must always be true just prior to the execution of some section of code or before an operation in a formal specification.
Vienna Development Method
formal software development method
abstract state machine
state machine operating on states that are arbitrary data structures
static timing analysis
simulation technique in computer hardware design
TLA+
TLA+ is a formal specification language developed by Leslie Lamport. It is used for designing, modelling, documentation, and verification of programs, especially concurrent systems and distributed systems. TLA+ is considered to be exhaustively-testable pseudocode,

B-Method
The B-Method is a method of software development based on B, a tool-supported formal method based on an abstract machine notation, used in the development of computer software.
Language Of Temporal Ordering Specification
Formal specification language in computer science
Hindley–Milner
type system supporting type inference
process validation
analysis of data gathered throughout the design and manufacturing of a product in order to confirm that the process can reliably output products of a determined standard
McCarthy 91 function
recursive functions studied in computer science
Formal equivalence checking
stage of electronic circuit design verification