The library(broadcast) 
library was invented to realise GUI applications consisting of 
stand-alone components that use the Prolog database for storing the 
application data. Figure 
12 illustrates the flow of information using this design

The broadcasting service provides two services. Using the `shout' service, an unknown number of agents may listen to the message and act. The broadcaster is not (directly) aware of the implications. Using the `request' service, listening agents are asked for an answer one-by-one and the broadcaster is allowed to reject answers using normal Prolog failure.
Shouting is often used to inform about changes made to a common database. Other messages can be ``save yourself'' or ``show this''.
Requesting is used to get information while the broadcaster is not aware who might be able to answer the question. For example ``who is showing X?''.
        ...,
        broadcast_request(age_of('John', Age)),
If there is an agent (listener) that registered an `age-of' service and knows about the age of `John' this question will be answered.
?- listen(Term, (writeln(Term),fail)). ?- broadcast(hello(world)). hello(world) true.
:- pce_begin_class(name_item, text_item).
variable(id,    any,    get, "Id visualised").
initialise(NI, Id:any) :->
        name_of(Id, Name),
        send_super(NI, initialise, name, Name,
                   message(NI, set_name, @arg1)),
        send(NI, slot, id, Id),
        listen(NI, name_of(Id, Name),
               send(NI, selection, Name)).
unlink(NI) :->
        unlisten(NI),
        send_super(NI, unlink).
set_name(NI, Name:name) :->
        get(NI, id, Id),
        retractall(name_of(Id, _)),
        assert(name_of(Id, Name)),
        broadcast(name_of(Id, Name)).
:- pce_end_class.