You can trace the rasoning so that you can see how ExperTalk
operated to get the result
You can have at any time an explanation of how any fact in the
factsbase has been produced, at the whole deep level or at the
level.
In the rules you can specify Universal quantifiers, see examples
Any Smalltalk object can be included in Facts
With the DBF access you can load the factsbase directly from .DBF
file data creating any facts you need from fields in the DBF file,
that are really common in PC applications (optional)
There is a Interactive mode that allow expertalk to be used
with incomplete factsbase, and that will ask the user to confirm
required facts it needs to demonstrate a fact, this will prompt
the user to answear the truth of the fact ExperTalk need, here the user
can answear Yes, No, a sure factor, or inspect the facts and rulebase,
asking for explanations, list of facts, list of rules, why expertalk
is asking the fact, and abort the rasoning process.
Every fact have an associated Sure factor that allow you to
deal with uncertanty, this means that not only true and false facts
can be used but every fact have its own sure factor that will be
propagated in the rasoning process. Sure factors are respresented by
Fuzzy logic value
ExperTalk is loop proof, it recognize when a demonstration cannot
be produced because it will generate an infinite loop and will cut that
branch of the rasoning automatically, so data engineers need not
to worry about the consistency of all the rules.
ExperTalk can access Smalltalk, executing blocks or compiling at
runtime sources of blocks populated with metavariables, and executing them. Glossary
ExperTalk can be easily customized and integrated with an existing
application.
A User interface is supplied to use it standalone or to inspect factsbase,
you can use more than one factsbase at a time,
The user interface allow you to simply create facts, load and save
facts and/or rules, load data from a DBF, and to run the rasoning
engines to demonstrate facts.
Create facts is really easy and the end user can easily create them
if you are not using it with special objects.
There is no functor to be used, but every element of the fact can be
used as a functor or as an attribute. The unification mechanism
will find the matching facts on the base of what is supplied.
Simple facts and rules can be esily read from strings.
if ?A is brother of ?B & ?A is brother of ?C
then ?C is brother of ?B
if ?U is brother of ?B & ?N is son of ?B
then ?U is uncle of ?N
Backward chaining
demonstrate: ?WHO is brother of ?WHOEVER
John is brother of Susan
John is brother of Jeff
Jeff is brother of Susan
Forward chaining
apply rules 1 time:
new facts:
Jeff is brother of Susan
Explanation
how: Jeff is brother of Susan
because:
appling rule:
if ?A is brother of ?B & ?A is brother of ?C
then ?C is brother of ?B
instantiated to:
if John is brother of Susan & John is brother of Jeff
then Jeff is brother of Susan