These are variables which are visible in the whole program, not in one clause only. Syntactically these are the variables which begin with G_.
Global variables are very convenient as illustrated in the examples.
Certainly you can do without them (when you need a value somewhere in the
program, then you can assert it or you can get it passing it from clause
to clause as an extra argument). In 90% of the cases by global variables
and by := (evaluation resistant on backtracking) you can avoid the use
of assert and make your program more readable..