Gensym (Generate Symbols) is an old library for 
generating unique symbols (atoms). Such symbols are generated from a 
base atom which gets a sequence number appended. Of course there is no 
guarantee that `catch22' is not an already defined atom and therefore 
one must be aware these atoms are only unique in an isolated context.
The SWI-Prolog gensym library is thread-safe. The sequence numbers 
are global over all threads and therefore generated atoms are unique 
over all threads.
- gensym(+Base, 
-Unique)
- 
Generate a unique atom from base Base and unify it with Unique.
Base should be an atom. The first call will return <base>1 
, the next <base>2 , etc. Note that this is no 
guarantee that the atom is unique in the system.
- reset_gensym(+Base)
- 
Restart generation of identifiers from Base at <Base>1. 
Used to make sure a program produces the same results on subsequent 
runs. Use with care.
- reset_gensym
- 
Reset gensym for all registered keys. This predicate is available for 
compatibility only. New code is strongly advised to avoid the use of 
reset_gensym or at least to reset only the keys used by your program to 
avoid unexpected side effects on other components.