[1] It has since been generalized to allow rewriting structures which are not graphs, and to handle negative application conditions,[2] among other extensions.
These can be non-overlapping, or share only preserved items, thus showing a kind of concurrency known as parallel independence,[4] or they may be incompatible, in which case either the applications can sometimes be executed sequentially, or one can even preclude the other.
It can be used as a language for software design and programming (usually a variant working on richer structures than graphs is chosen).
Termination for DPO graph rewriting is undecidable because the Post correspondence problem can be reduced to it.
[4] Axioms have been sought to describe categories in which DPO rewriting will work.