A Reversible Algorithm is a member of a pair of transformation algorithms that iterate over their input sequence(s) in opposite directions For each reversible algorithm x there exists a counterpart algorithm reverse_x  that exhibits the exact semantics of x except that the elements of its input sequence argument(s) are processed in the reverse order