[comp.ai.shells] S1 and COPERNICUS info wanted

wang@ai.toronto.edu (Huaiqing Wang) (03/31/90)

Hi,

  I would like some information about an expert system shell called
'S1' or 'COPERNICUS'.  Specifically, I want to know what kind
of control language is available using the shell.  For example,
can the programmer specify how a task would be broken into 
sub-tasks and for each sub-task, can the programmer specify 
a particular inference routine (specifically, forward-chaining, 
backward-chaining, depth-first search, breadth-first search, 
best-first-search, or any other inference routines)?

  Any information would be welcome.  Thank you in advance.

  wang@ai.utoronto.ca

joshua@athertn.Atherton.COM (Flame Bait) (04/10/90)

Warning: biases ahead!  In the past I've worked for Teknowledge (now
Cimflex-Teknowledge).  I was responsible for the maintenance of S.1 and
help to develop COPERNICUS.  I left Teknowledge about 2 years ago, so
my information is that old.

wang@ai.toronto.edu (Huaiqing Wang) writes:
> I would like some information about an expert system shell called
> 'S1' or 'COPERNICUS'.  

They are two different shells, COPERNICUS is a newer version of S.1.
Internally we called COPERNICUS "S.2" or "S.3".

> Specifically, I want to know what kind of control language is 
> available using the shell.  

It is sort of like PASCAL, except that it has statements which trigger
reasoning activity in the rule based part of the system.  In COPERNICUS
the control language picked up some ideas from C.

> For example,
> can the programmer specify how a task would be broken into 
> sub-tasks and for each sub-task, can the programmer specify 
> a particular inference routine (specifically, forward-chaining, 
> backward-chaining, depth-first search, breadth-first search, 
> best-first-search, or any other inference routines)?

I think the answer is "yes" to all your questions, but here are some
things I know you can do:
   In COPERNICUS (but not S.1) you can specify a rule as being forward
      chaining or backward chaining or both.
   In either product, you can specify a procedure to be used in determining
      at attribute's value.  This feature is usually used to control the
      order in which sub-attributes are determined, and generally, the 
      order in which things are done.
   In theory I believe that you can use this feature to implement whatever
      kind of searching you want, but I suspect it will require a lot of
      programming on your part.
   You can also group rules into rule sets, and then have the system attempt
      to determine an attribute's value using one rule set, then another rule
      set, etc.  
   I can not tell you which searching stratigy is used by default, but I
      thought it was in the documentation.
   
Joshua Levy   (joshua@atherton.com)

cscott@teknowledge.com (Carli Scott) (04/10/90)

The expert system shell COPERNICUS(tm), developed by Teknowledge, Inc., was
first released in 1988; the shell is now available from Cimflex Teknowledge
Corporation.  (Last year Teknowledge merged with American Cimflex.)  S.1 was
an earlier expert system shell, also developed by Teknowledge.  S.1 was
similar in many respects to COPERNICUS, but the latter a supports richer
representation and a more flexible inference engine.  The main difference
between the two shells, however, is that S.1 was designed primarily for
building stand-alone expert systems, while COPERNICUS is designed for
integrated systems.  As a result, it is easy to embed COPERNICUS in other
programs (written in C) as well as to call programs from COPERNICUS.  The
standard COPERNICUS user interface can be removed for a non-interactive expert
system, or can be replaced by an interface that is customized for a particular
application.  Another difference between the two shels is that COPERNICUS is
modular, so that you can create a delivery system with just the modules that
the particular application needs.  (For example, you could omit the modules
that are used for developing and debugging knowledge bases.)

The COPERNICUS control language is a fairly complete structured programming
language that includes all the standard control structures (e.g., conditionals,
iteration, recursion).  Using this language, it is very easy to specify how to
break a task into subtasks.  COPERNICUS provides serveral built-in control
mechanisms for its inference engine; the most important are goal-directed
backward chaining, data-directed forward chaining, and attached procedures
that act as demons.  Both backward chaining and forward chaining are coupled
with breadth-first search.  If depth-first search or best-first search is
desirable, the knowledge engineer would have to program the search strategy
explicitly (but the COPERNICUS language makes it easy to do so).  The
COPERNICUS language includes statements that initiate the built-in backward
chaining process.  No such statements are available to start forward
chaining--forward chaining is always triggered by the addition of information
to working memory.  It would be easy, however, to program the explicit
initiation of forward chaining.  By the way, the COPERNICUS documentation
provides guidelines and examples to help knowledge engineers to make effective
use of the tool's various features.  A "sample knowledge systems" notebook
gives detailed descriptions of three small expert systems (each with a
knowledge base of 100 to 200 entries).  This notebook includes a listing of
all three knowledge bases, plus the external C code that they use.

If you have additional technical questions, send a message to
cscott@teknowledge.com.  For pricing and other sales-related information, send
a message jbrownfi@teknowledge.com, or telephone (415) 424-0500 and ask for
Jay Brownfield in Product Support.