An extension of a term rewriting system which uses graph reduction on terms represented by directed graphs to avoid duplication of work by sharing expressions.