| Addresses  | is a list of name/3 
or name_seq/3 addresses for the services 
to be monitored.  | 
| Goal  | is a predicate that will be called when 
a worker's publication status changes. The Goal is called 
exactly once per event with its the last argument unified with the 
structure:
published(-NameSeq, -PortId)- when the worker binds its socket to the address.
 
withdrawn(-NameSeq, -PortId)- when the worker unbinds its socket from the address.
 
 
  | 
| Timeout  | is optional. It is one of:
- Timeout
 - a non-negative real number that specifies the number of seconds that 
surveillance is to be continued.
 
- infinite
 - causes the monitor to run forever in the current thread (e.g. never 
returns).
 
detached(-ThreadId)- causes the monitor to run forever as a separate thread. ThreadId is 
unified with the thread identifier of the monitor thread. This is useful 
when the monitor is required to provide continuous surveillance, while 
operating in the background.
 
 
  |