Widening (computer science)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In computer science, especially model checking and abstract interpretation, widening refers to at least two different techniques in the analysis of abstract transition systems where infinite progressions of abstract states are replaced by a (computed or guessed[1]) least fixed point. The use of the term in model checking is closely related to acceleration techniques, some authors reserving acceleration for exact computations.[2]


While many computer programs can be understood in terms of machine states and transitions (see formal semantics of programming languages), their state spaces may be too large to fully represent and analyse. Modern analysis techniques therefore try to reason about abstract states, which correspond to many concrete states.

Often, the abstract states are structured in such a way that by repeatedly following the effect of program steps or by coarsening the abstraction, one obtains a chain of abstractions that is proven to terminate.

Use in Model Checking[edit]

Widening techniques and the closely related acceleration techniques are used in the forward analysis of systems in the discipline of symbolic model checking. The techniques detect cycles, i.e. sequences of abstract state transitions that could be repeated. When such a sequence can be repeated over and over, yielding new states (e.g. a variable might be incremented at every repetition), the symbolic analysis of the program will not explore all of these states in finite time. For several important families of systems such as pushdown systems, channel systems or counter systems, subclasses amenable to so-called flat acceleration have been identified[2] for which a complete analysis procedure exists that computes the whole set of reachable states. This type of forward analysis is also related to well structured transition systems, but well-structuredness alone is not sufficient for such procedures to be complete (for example, the coverability graph of a Petri net is always finite but in general, it overapproximates the true state space).

Use in Abstract Interpretation[edit]

Cousot and Cousot [3] have introduced a notion of widening while defining the framework of abstract interpretation. An example for the widening of an abstract domain that appears in abstract interpretation[4][5] would be replacing the upper bound of an interval by .


  1. ^ Ahmed Bouajjani and Tayssir Touili (2012), "Widening techniques for regular tree model checking", STTT, Vol. 14, No. 2, pp. 145 -- 165 [1]
  2. ^ a b Sébastien Bardin, Alain Finkel, Jérôme Leroux and Philippe Schnoebelen, Flat acceleration in symbolic model checking (2005), Automated Technology for Verification and Analysis, pp. 474--488, Springer
  3. ^ Patrick Cousot and Radhia Cousot, Abstract Interpretation: {A} Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints (1977), Conference Record of the Fourth {ACM} Symposium on Principles of Programming Languages, Los Angeles, California, USA, January 1977, pp. 238 -- 252
  4. ^ P. Cousot, R. Cousot (Aug 1992). "Comparing the Galois Connection and Widening / Narrowing Approaches to Abstract Interpretation" (PDF). In Maurice Bruynooghe and Martin Wirsing. Proc. 4th Int. Symp. on Programming Language Implementation and Logic Programming (PLILP). LNCS. 631. Springer. pp. 269–296.
  5. ^ Agostino Cortesi (Aug 2008), Widening Operators for Abstract Interpretation (PDF)