Programming MYCIN rules

Author(s): Angel Fernandez Pineda.

MYCIN databases are declared as Prolog modules containing mycin rules. Those rules are given a certainty factor (CF) which denotates an expert's credibility on that rule:

  • A value of -1 stands for surely not.

  • A value of 1 stands for certainly.

  • A value of 0 stands for I don't know.

Intermediate values are allowed.

Mycin rules work on a different way as Prolog clauses: a rule will never fail (in the Prolog sense), it will return a certainty value instead. As a consequence all mycin rules will be explored during inference, so the order in which rules are written is not significant. For this reason, the usage of the Prolog cut (!) is discouraged.

Usage and interface

  • Library usage:
    In order to declare a mycin database you must include the following declaration as the first one in your file:
               :- mycin(MycinDataBaseName).
    
  • New declarations defined:
    export/1.

Documentation on new declarations

DECLARATION
This directive allows a given mycin predicate to be called from Prolog programs. The way in which mycin rules are called departs from Prolog ones. For instance, the followin mycin predicate:
:- export p/1.

must be called from Prolog Programs as: mycin(p(X),CF), where CF will be binded to the resulting certainty factor. Obviously, the variables on P/1 may be instantiated as you wish. Since the Prolog predicate mycin/2 may be imported from several mycin databases, it is recommended to fully qualify those predicate goals. For example : mydatabase:mycin(p(X),CF).

Usage: :- export(Spec).

  • Description: Spec will be a callable mycin predicate.

Known bugs and planned improvements

  • Not fully implemented.
  • Dynamic mycin predicates not implemented: open question.
  • Importation of user-defined mycin predicates requires further design. This includes importation of mycin databases from another mycin database.