An inference engine is a software system that is designed to draw conclusions by analyzing problems in light of a database of expert knowledge it draws upon. It reaches logical outcomes based on the premises the data establishes. Sometimes inference engines are also capable of going beyond strict logical processing, and utilize probability calculations to reach conclusions that the knowledge database doesn't strictly support, but instead merely implies or hints at.
Most inference engines designed in the field of artificial intelligence are based on the concept of the expert system. A expert system is built to solve problems in a specific and sometimes narrowly defined field, such as certain medical specialties. The inference engine component of an expert system is the control structure that produces initial output based on whatever data currently exists in the knowledge base and the programming rules of the expert system, then apply it to the specific problem in a meaningful way. Because inference engine results are a result of the data, they change as the data is updated, and can also change as the data is searched in different ways by the inference engine itself. If the data in the system is weighted towards one or more conclusions over another, this can change the results that the inference engine generates.
Software that uses a inference engine can be seen as an active selective mechanism, where processing actions are directed by the most current state of the data. Expert systems have two general ways of processing this stored data, referred to as forward chaining or backward chaining. In forward chaining, the rules of the expert system analyze data fed to it by the inference engine, and the results are fed back into the system's data storage as new data. This triggers new solutions to problems as the system refines the data and weighs it by inductive inference, meaning that conclusions reached will not necessarily reflect the original data or premises that were used to start the analysis.
Backward chaining is more probability-oriented, with the stored data being weighted for value from the start. Rules are used to test the conditions of the data for validity in light of the given problem, and, as this is done, new probability values are assigned to the data. Also referred to as hypothesis-driven, backward chaining does not draw strict conclusions until continual testing of the data against conditions established by the rules of the expert system meet a minimum level of proof for the question or problem being studied.
Bayesian logic is one of the probability-oriented forms of inference engine software that utilize backward chaining, named for Thomas Bayes, an English mathematician of the mid-18th century. Such logic uses a knowledge base of prior events to predict future outcomes through repeated tests of the knowledge, and it factors in additional evidence of the outcomes of the trials into new trials, with the goal of producing more and more accurate results. Fuzzy logic software architecture can also rely on the inference engine as part of its system. The difference with fuzzy logic is that the output is a fuzzy set or range of possible solutions that are then aggregated into one group and, through logic and probability, narrowed to one optimal conclusion or action.