Divergence (computer science)
In computer science, a computation is said to diverge if it does not terminate or terminates in an (unobservable) exceptional state. Otherwise it is said to converge. In domains where computations are expected to be infinite, such as process calculi, a computation is said to diverge if it fails to be productive (always produces an action within a finite amount of time.)
Various subfields of computer science use varying, but mathematically precise, definitions of what it means for a computation to converge or diverge.
In abstract rewriting a reduction is called convergent if and only if it is both confluent and terminating. The notation t ↓ n means term t reduces to normal form n in zero or more reductions, t↓ means t reduces to some normal form in zero or more reductions, and t↑ means t does not reduce to a normal form.
In the calculus of communicating sequential processes, divergence is a drastic situation where a process performs an endless series of hidden actions. For example, consider the following process, defined by CSP notation:
The traces of this process are defined as:
Now, consider the following process, which conceals the tick event of the Clock process:
By definition, P is called a divergent process.
- Baader, Franz; Nipkow, Tobias (1998). Term Rewriting and All That. Cambridge University Press.
- Pierce, Benjamin C. (2002). Types and Programming Languages. MIT Press.
- J. M. R. Martin and S. A. Jassim (1997). "How to Design Deadlock-Free Networks Using CSP and Verification Tools: A Tutorial Introduction" in Proceedings of the WoTUG-20.
|This computer science article is a stub. You can help Wikipedia by expanding it.|