% H4 / ECAL diagnosis (simplified) connected(h4, crystal). connected(crystal, apd). connected(testpulse_injector, apd). connected(apd, readout). good_path(X,Y) :- not bad(X), not bad(Y), connected(X, Y). good_path(X,Z) :- good_path(X,Y), good_path(Y, Z). bad(crystal) v bad(apd). testpulse_readout_ok :- good_path(testpulse_injector, readout). beam_readout_ok :- good_path(h4, readout). :- not beam_readout_ok. :- not testpulse_readout_ok.