A skeleton LSD account for a travelling by bus scenario ... agent route { oracle bus_number, origin, terminus derivate stops is list_of_locations(bus_number, origin, terminus) } agent bus { state bus_location, onstop derivate atstop state livery state bus_number state destination state origin state bell_has_been_rung state bus_stopping = bell_has_been_rung } agent ticketmachine { state fare_offered } agent ticket(ID) { state ID } agent driver { state next_stop oracle bus_destination protocol bus_stoppping --> bus_location = nextstop; onsstop = true fare_offered > fare_required --> ID++; ticket(ID) } agent passenger { state passenger_location, passenger_destination role joiningBus { oracle bus_destination, bus_location } role onBus { oracle bus_location derivate passenger_location is bus_location } role leavingBus { oracle bus_location protocol pa passenger_destination == bus_destination --> passenger_location = bus_location }