Evaluator which traverses the structure of the evaluated term, where variables are represented by Prolog atoms like a, b or c, so they do not correspond to Prolog variables.
Source: Guide to Prolog Programming (on-line tutorial)
Program source code: evaluator.pl