Monitoring and Diagnosing Railway Signalling with Logic-Based Distributed Agents