A DifferenceList is a way to express how a list differs from another list. It is a concept quite common in languages with PatternMatching or Unification, such as PrologLanguage or OzLanguage. For example, a list expressed as Head = [a,b,c] Tail = [c] is equivalent to difflist = [a,b] since c is what you get subtracting tail from head. Read http://homepages.inf.ed.ac.uk/pbrna/prologbook/node180.html for some explanation.