This partitioned file contains the source of a very simple expert system called FAULTFINDER, and a sample database for it to work on. A brief description of the idea, though not of the program itself (which is pretty much common sense), can be found in the file 'FF'. FAULTFINDER is really a general system, and you need to create specific fault hierarchy descriptios for it to work on. There is an example in ECMI01.FF_GASHEATER. Look at 'FF' to find out more. The files in the partitioned file ECMI01.FF are README this file EXPLAIN the explanation sub-system FF the file to read in to get everything else read in It also has a terse description of the system. GASHEATER the specific example (a gas water heater) LOAD the routines to load a file such as 'GASHEATER' MAIN the top level of FAULTFINDER RULES the guts of FAULTFINDER UTILS some utilities used in 'explain', 'main' and 'rules' To get started, use 'util' so that member/2 and memberchk/2 are available: | ?- reconsult('ECMI01.FF_FF'). will reconsult alll the files necessary for the general bit of FAULTFINDER. | ?- ffload('ECMI01.FF_GASHEATER'). will get the specific example loaded into the internal database. | ?- find_fault. will start it. You don't have to reload the specific example each time, find_fault/0 does the tidying up necessary after any previous run.