A feature of Prolog is its use of type free variables which can represent widely different data structures. This allows any variable in a clause to represent a number, a string, a list of numbers, a list of strings, a list of strings and numbers etc. Prolog variables can even be used to represent clauses. This last use of variables leads to a technique called meta-programming,
where the clauses in one part of a program can manipulate other clauses as data. This ’meta-level’ ability is one reason why Prolog has been widely used in the realm of expert systems.inference engine, which automatically infers