object travel { 
travel
var cities = [amsterdam, paris, london]. travel() :- accept( all ), travel(). reachable(X) :- member(X, cities). add(X) :- append( cities, [X], R), cities := R. }

Usage

   ?- O = new travel(), O!reachable(X), write(X).
  

slide: DLP -- objects (3)