ANN: PyIE - Python Inference Engine

Ralph Miller miller_ralph at
Wed Feb 15 23:34:58 CET 2006

	PyIE, Python Inference Engine, is now available at "", 
under "Our Source Repository", thanks to Jeff Rush. The current revision 
is 0.9.10.

What's PyIE ?

	PyIE is an hypothesis based, agenda driven, object oriented inference 
engine written in Python. Inferencing modes include back chaining, 
opportunistic forward chaining and explicit forward chaining. The object 
base supports classes, first-class objects and multiple, dynamic 
inheritance. PyIE uses a TMS (truth maintenance system) for 
non-monotonic reasoning. All objects are first class objects and all 
values are slot values, i.e. data members attached to some object. The 
GUI uses TKinter and consists of a main control panel and seven editors 
for the agenda, classes, objects, slots, rules, methods and commands.

	The knowledge base file types are currently XML and an older 
Python-like text format. A version is associated with all .py files and 
when the KBs are saved, this current version number is saved within the 
knowledge base source files. Only the XML format supports methods and is 
the default file type.

	Knowledge is usually, but not always, expressed in rules and the 
sequencing of the inferencing is controlled by a structure called an 
agenda. The current truth-values of each clause and each rule are kept 
in an hypothesis. Rules typically contain the main expression of 
knowledge and experience. Every rule must be associated with a hypo. 
Every rule has one or more antecedent clauses, usually termed the 'left 
hand side' (lhs). Rules may also have one or more consequent clauses; 
usually termed the 'right hand side' (rhs). In order to prove the 
associated hypo true, a rule must prove all antecedent clauses true.

	A hypothesis is simply a truth-value, in PyIE one of four possible 
values: True, False, Not Known or Unknown. 'Unknown' indicates that the 
hypo has not been tested, while 'Not Known' specifies that the hypo has 
been tested but proven neither 'True' nor 'False'. The engine proves 
hypotheses taken from an agenda. The agenda is hypothesis driven, that 
is, only hypotheses are contained in the agenda, not rules. The engine 
selects the relevant hypothesis to be proved and follows a specific set 
of steps to prove the hypo. Firing rules is only one method for proving 
a hypothesis.


	The current PyIE may be exported from the subversion repository:

	Compressed gzip and zip files will be available from time to time from:

External Dependencies

	PyIE relies on Python 2.3 and later and also TKinter. No other modules 
need be installed.


	The license is MIT.


	This is a research project. The documenetation is woefully incomplete. 
'Eval' and 'compile' are used in the "" module to process rules 
and methods. The underlying assumption is that there will be no 
malicious use.


	Ralph S. Miller
	miller_ralph at


More information about the Python-announce-list mailing list