Saturday, March 15, 2008

MIKE - The forgotten hybrid rule engine

Micro Interpreter for Knowledge Engineering (Mike)

Mike is a hybrid rule engine by retired Open University Professor Marc Eisenstraat and Hull University's Dr Mike Brayshaw. The last release was version 2.50 in 1990 - so it's 18 years old. Mike formed part of the Open Universities "knowldge engineering" study pack. What's interesting is that 18 years ago they combined both prolog and rete for a hybrid reasoning system around frames (classes) - they even released the source code. As well as being a hybrid engine it also offers truth maintenance a few varieties of uncertaintity - standard, Bayes, Shortliffe and Buchanan uncertaintity. Marc Eisenstraat released a 1990 BYTE magazine article called "Build your own knowledge engineering toolkit" which was a two part overview of Mike. Mike itself is based on a 1989, almost 20 years old, paper "Building an Expert System in Prolog" by Dennis Merrit, founder of Amzi. You start to get the feeling that the mainstream rule engine development has forgotten more now than it knew 20 years ago.

7 comments:

  1. the only real downside is MIKE is written in prolog. I've looked at a few RETE engines and expert systems written in prolog. They tend to be slow.

    ReplyDelete
  2. yeah I always think the 80s was a high point of software - most things were done and known by the late 80s (if not well before) its just the computing power to execute was quite expensive.

    ReplyDelete
  3. I think a performance of up to 50 millions of inferences per second is not too bad for todays Prolog systems like the one from LPA.

    Furthermore, LPA offers (and maintains) Flex, a rule engine based on Prolog that offers forward and backward inferencing as well as frames and uncertainty handling for about 20 years now. Furthermore, Flex is available for other Prolog implementations (e.g. Quintus) as well.

    ReplyDelete
  4. It' not a pure prolog engine. They have a Rete impl and a prolog impl - both in C and fully integrated.

    ReplyDelete
  5. Whom do you mean by "they"? LPA's Prolog is basically implemented in hand-optimized Assembler code complemented by some C and Prolog libraries.

    ReplyDelete
  6. I've only looked at pure prolog implementations. Using assembly and C would definitely help make it faster.

    ReplyDelete
  7. "I've only looked at pure prolog implementations. "

    Can you point me to a verison of RETE implemented in prolog?

    Or do you mean it's a expert system in prolog?

    ReplyDelete