| To: Distribution From: Meyer Billmers
Cathy Naylor
Dan Theriault
Dept: A. I. Applications
Loc: HLO2-3/M10
Date: July 25, 1986
Subject: Announcing Base Level 1 of Foxglove
Summary
In December, 1985 the Artificial Intelligence Applications Group announced a
new expert system prototyping and development language named Foxglove. This
language is being developed by AIAG for its own internal use, but we want
to share it with the remainder of the DEC AI community. We believe Foxglove
offers a greatly improved environment for developing expert system
applications, and we would be happy to have a user community to provide us
with bug reports and feedback.
The overview of the language that was contained in the original
announcement of Foxglove can be found at the end of this memo. Those who
have already seen the language will probably be more interested in the
differences between Baselevel 1 (BL1) and the previous version, BL0.
Highlights of Baselevel 1
Baselevel 1 is an implementation of the Foxglove spec which runs under
Lisp V2.0. A User's Manual has been written which describes both the syntax
of the language and the environment in which it runs. Various and sundry
enhancements have been added, and are described briefly below, and in more
detail in the manual.
The basic structure of Foxglove as a language is stabilizing. Recent effort
has concentrated more on the development of an environment for the Foxglove
user, and only slightly on enhancements to the language itself. In the
former category we have provided such features as saved cases, through
which Foxglove can inform you if changes to the knowledge base will affect
conclusions of previous runs; enhanced debugging and tracing support; a
graphical rule base browser; and a simple explanation facility which can
cite Foxglove rules using an English-like syntax. In the language extensions
category, Foxglove now supports confidence factors and rule salience to
help focus question asking and rule firing on the most promising lines of
search.
Significant new functionality, in the form of constraint propogation and
representation of structured data, is in the works. These features will be
included in the next release.
Current Status
This is an annoucement of baselevel 1. It is still an experimental version,
which is likely to contain bugs, so the usual caveats about its use apply.
How To Get Started
Foxglove requires VAX Lisp V2.0. It is available as a Lisp suspend file.
Documentation exists in the form of the LaTeX source for the language spec,
a User's Manual, and on-line documentation bound to the symbol ``?'', plus
documentation strings for the various functions.
Foxglove is available as a VMSINSTAL kit on
RAYNA::FOXGLOVE$KIT:FOXGLOVE010.A
You may install it by logging in as SYSTEM, setting the default directory to
SYS$UPDATE, and running @VMSINSTAL FOXGLOVE010 RAYNA::FOXGLOVE$KIT:
This will copy the .sus file, the LaTeX source and .LNO files for the
language spec, User's Manual, and this release notice, and a number of short
example programs so you can see some real live instances of the syntax. If
you do not have access to an LN01, send mail to RAYNA::BILLMERS, and you will
be mailed a physical copy of the language spec and User's Manual.
There is now a notes conference, RAYNA::FOXGLOVE, available for user feedback
and discussion.
REFERENCES
[1] Billmers, M. and Theriault, D., ``Foxglove spec, second revision", AIAG
memorandum, October 30, 1985.
[2] Billmers, M., Announcing a New Expert System Development Language, AIAG
memorandum, January 2, 1986
[3] Theriault, D., VAX Foxglove/VMS User's Manual, July 25, 1986
Original Foxglove Announcement
ANNOUNCING
FOXGLOVE
-- AN EXPERT-SYSTEM DEVELOPMENT LANGUAGE --
Summary
The Artificial Intelligence Applications Group is pleased to announce a new
expert system prototyping and development language code named Foxglove.
This language is being developed by AIAG for its own internal use, but we
would like to share it with the remainder of the DEC AI community. We
believe Foxglove offers a greatly improved environment for developing
expert system applications, and we would be happy to have a user community
to provide us with bug reports and feedback.
Motivation and Description
We at AIAG have been developing applications for various customers. In the
process we have done demos (a few days or weeks), prototypes (a few
months), and large systems (many man years). Our work has been limited to
the tools available under VMS: OPS5, EXPERT, PROLOG, LISP, ART...
None of these languages has been totally satisfactory. OPS5 is often
cumbersome and requires lots of user interface programming; EXPERT is
limited in the scope of problems it can address, and both suffer from
inadequate control over the program. ART is VERY slow, and LISP requires
lots of start-up coding.
Foxglove combines features of these languages that we have found useful into
a single, integrated programming environment, thus filling a major gap in
the range of available tools for expert system development. Foxglove
provides a tool for the serious developer accustomed to the rich
programming environment of Lisp. It is based on the real experience of AIAG
in developing a variety of practical applications. Initial comparisons with
some of our applications show Foxglove to cut implementation time and
increase programmer productivity (dramatically in some cases). When running
on large (more than 1000 rules) systems, Foxglove has maintained a high level of
performance. The current implementation of Foxglove is in VAX Lisp.
Features
Foxglove is a forward-chaining rule based language layered on top of VAX
Lisp. The language contains the following groups of features:
* fast pattern matching on state variables
* user interface for consultation models
* access to Lisp
* block-structured control mechanisms
Discussion
The remainder of this memo elaborates upon the main features of the
language, provides some performance data, and describes how to get started
with Foxglove.
The following features are implemented in baselevel 0 (BL0).
1. Fast pattern matching on state variables
Foxglove borrows from OPS5 the idea of state variables against which rules
can perform fast pattern matching. Use of wild cards in rule Left Hand Side
patterns can cause multiple instantiations of a rule. A discrimination net
stores the results of computations so that rule LHS evaluation is performed
only when needed. Wildcards (local variables) can then be used on the LHS
to restrict instantiations, or on the Right Hand Side.
2. The user interface
From EXPERT we borrow the concept of a user interface integrated into the
language. Foxglove has Findings and Conclusions. Through a declarative
semantics, the user may specify information (such as minimum and maximum
values, defaults, sets of acceptable values, domain specific help text,
even user-supplied predicates or query functions) so that the built-in user
interface can prompt the user for a Finding when a rule refers to it. Any
such information, if supplied, will be enforced by the user interface. In
addition, the interface informs the user when a Conclusion has been
reached. I/O is thus done entirely by the Foxglove user interface in a
friendly and consistent way, and the knowledge engineer need not worry
about user I/O at all.
In addition, we are implementing saved cases (so that Foxglove will inform
you if changes to the knowledge base will affect Conclusions of previous
runs), confidence factors which help to focus questioning and rule firing
on the most promising lines of search, and an explanation capability.
3. Lisp-like behavior
LISP comes for free. Foxglove runs on top of VAX Lisp, and Lisp code (with
a few simple restrictions) is permitted in rule left hand sides. Right hand
sides of rules may contain arbitrary Lisp code. Foxglove draws upon Lisp to
allow richer data types than are allowed in OPS or EXPERT, such as arrays,
lists, strings, symbols, numbers, and booleans. EXPERT's checklists and
multiple-choice menus are supported and turned into lists in Foxglove.
In addition, Foxglove offers Lisp-like debugging support (such as breaks
and tracing) oriented toward Foxglove objects.
4. Block-structured control mechanisms
In order to give the programmer more control over execution of his model,
we have implemented Rule-blocks in Foxglove. A rule block is pushed as a
right hand side action and may be thought of as a recursive call to the
interpreter with computation restricted to a named subset of rules.
Rule-blocks may recursively push additional rule blocks, or they may
explicitly pop themselves. The judicious use of rule blocks is a convenient
way to exercise control over certain rules or sets of rules which should be
executed in a particular order. It is also a nice way to focus the
attention of the model.
|
|
I N T E R O F F I C E M E M O R A N D U M
To: Distribution From: Dan Theriault
Cathy Naylor
Dept: A. I. Applications
Loc: HL02-3/M10
Date: February 20, 1987
Subject: Announcing Version V3.0 of Foxglove
Summary
In December, 1985 the Artificial Intelligence Applications Group announced
a new expert system prototyping and development language named Foxglove.
This language is being developed by AIAG for its own internal use, but we
want to share it with the remainder of the DEC AI community. We believe
Foxglove offers a greatly improved environment for developing expert system
applications, and we would be happy to have a user community to provide
us with bug reports and feedback.
The overview of the language that was contained in the original announce-
ment of Foxglove can be found at the end of this memo. Those who have
already seen the language will probably be more interested in the differences
between version V3.0 and the previous releases.
Highlights of Foxglove version V3.0
V3.0 is an implementation of the Foxglove manual [3] which runs under VAX
LISP/VMS. The manual describes both the syntax of the language and the
environment in which it runs. Enhancements are summarized briefly below,
and in more detail in the release notes and manual.
� We have screen-oriented question-asking and explanation facilities, along
with a programmer interface to the utilities. (Foxglove will still run on
non-workstations.)
Announcing Version V3.0 of Foxglove 2
� Menu-based end-user interface.
� We support retraction of answers to questions.
� Explanation facilities have matured considerably.
� The saved-case mechanism now handles a broader class of models.
� The Foxglove implementation has been "packaged," to lessen the chance
of name conflicts with application program.
� Pseudo-English translations have changed to take advantage of the new
VAX LISP pretty-printer.
� Random bug fixes and enhancements.
We have other goodies in the works, and will provide them in an update to
this release in the near future.
The following summarizes the previous official release of Foxglove, as de-
scribed in its release announcement:
The basic structure of Foxglove as a language is stabilizing.
Recent effort has concentrated more on the development of an
environment for the Foxglove user, and only slightly on enhance-
ments to the language itself. In the former category we have pro-
vided such features as saved cases, through which Foxglove can
inform you if changes to the knowledge base will affect conclusions
of previous runs; enhanced debugging and tracing support; and
a simple explanation facility which can cite Foxglove rules using
an English-like syntax. In the language extensions category, Fox-
glove now supports confidence factors and rule salience to help
focus question asking and rule firing on the most promising lines
of search.
How To Get Started
Note: Our cluster recently moved from area 6 to area 37, so if you have any
problems, use 38644:: and ask your system manager to update your netnode
database.
Announcing Version V3.0 of Foxglove 3
Foxglove requires VAX LISP V2.1. It is available as a Lisp suspend file.
Documentation is distributed for LN01, LN03 and character devices. On-line
documentation is bound to the symbol "?", and available as documentation
strings for the various functions.
Foxglove is available as a VMSINSTAL kit on
ZHORA::FOXGLOVE$KIT:FOXGLOVE030.A
You may install it by logging in as SYSTEM, setting the default directory to
SYS$UPDATE, and running
@VMSINSTAL FOXGLOVE030 ZHORA::FOXGLOVE$KIT:
This will create the .SUS file and copy .LNO, .LN3 and .MEM files for the
manual, this release announcement, release notes, and a number of short
example programs so you can see some real live instances of the syntax.
There is now a notes conference, AIAG::FOXGLOVE, available for user feed-
back and discussion. If you run into any problems, let us know.
REFERENCES
[1] Billmers, M. and Theriault, D., "Foxglove spec, second revision," AIAG
memorandum, October 30, 1985.
This is now of historical significance only, and is not distributed with the kit.
[2] Billmers, M., "Announcing a New Expert System Development Lan-
guage," AIAG memorandum, January 2, 1986
[3] Theriault, D. and Naylor, C., "VAX Foxglove/VMS V3.0 User's Manual"
Original Foxglove Announcement 4
ANNOUNCING
FOXGLOVE
-- AN EXPERT-SYSTEM DEVELOPMENT LANGUAGE --
Summary
The Artificial Intelligence Applications Group is pleased to announce a new
expert system prototyping and development language code named Foxglove.
This language is being developed by AIAG for its own internal use, but we
would like to share it with the remainder of the DEC AI community. We
believe Foxglove offers a greatly improved environment for developing expert
system applications, and we would be happy to have a user community to
provide us with bug reports and feedback.
Motivation and Description
We at AIAG have been developing applications for various customers. In
the process we have done demos (a few days or weeks), prototypes (a few
months), and large systems (many man years). Our work has been limited
to the tools available under VMS: OPS5, EXPERT, PROLOG, LISP, ART...
None of these languages has been totally satisfactory. OPS5 is often cumber-
some and requires lots of user interface programming; EXPERT is limited in
the scope of problems it can address, and both suffer from inadequate control
over the program. ART is VERY slow, and LISP requires lots of start-up
coding.
Foxglove combines features of these languages that we have found useful into
a single, integrated programming environment, thus filling a major gap in
the range of available tools for expert system development. Foxglove pro-
vides a tool for the serious developer accustomed to the rich programming
environment of Lisp. It is based on the real experience of AIAG in de-
veloping a variety of practical applications. Initial comparisons with some
of our applications show Foxglove to cut implementation time and increase
programmer productivity (dramatically in some cases). When running on
large (more than 1000 rules) systems, Foxglove has maintained a high level
of performance. The current implementation of Foxglove is in VAX Lisp.
Features
Original Foxglove Announcement 5
Foxglove is a forward-chaining rule based language layered on top of VAX
Lisp. The language contains the following groups of features:
� fast pattern matching on state variables
� user interface for consultation models
� access to Lisp
� block-structured control mechanisms
Discussion
The remainder of this memo elaborates upon the main features of the lan-
guage, provides some performance data, and describes how to get started
with Foxglove.
The following features are implemented in baselevel 0 (BL0).
1. Fast pattern matching on state variables
Foxglove borrows from OPS5 the idea of state variables against which rules
can perform fast pattern matching. Use of wild cards in rule Left Hand Side
patterns can cause multiple instantiations of a rule. A discrimination net
stores the results of computations so that rule LHS evaluation is performed
only when needed. Wildcards (local variables) can then be used on the LHS
to restrict instantiations, or on the Right Hand Side.
2. The user interface
From EXPERT we borrow the concept of a user interface integrated into the
language. Foxglove has Findings and Conclusions. Through a declarative se-
mantics, the user may specify information (such as minimum and maximum
values, defaults, sets of acceptable values, domain specific help text, even
user-supplied predicates or query functions) so that the built-in user inter-
face can prompt the user for a Finding when a rule refers to it. Any such
information, if supplied, will be enforced by the user interface. In addition,
the interface informs the user when a Conclusion has been reached. I/O is
thus done entirely by the Foxglove user interface in a friendly and consistent
way, and the knowledge engineer need not worry about user I/O at all.
Original Foxglove Announcement 6
In addition, we are implementing saved cases (so that Foxglove will inform
you if changes to the knowledge base will affect Conclusions of previous runs),
confidence factors which help to focus questioning and rule firing on the most
promising lines of search, and an explanation capability.
3. Lisp-like behavior
LISP comes for free. Foxglove runs on top of VAX Lisp, and Lisp code (with
a few simple restrictions) is permitted in rule left hand sides. Right hand
sides of rules may contain arbitrary Lisp code. Foxglove draws upon Lisp
to allow richer data types than are allowed in OPS or EXPERT, such as
arrays, lists, strings, symbols, numbers, and booleans. EXPERT's checklists
and multiple-choice menus are supported and turned into lists in Foxglove.
In addition, Foxglove offers Lisp-like debugging support (such as breaks and
tracing) oriented toward Foxglove objects.
4. Block-structured control mechanisms
In order to give the programmer more control over execution of his model,
we have implemented Rule-blocks in Foxglove. A rule block is pushed as
a right hand side action and may be thought of as a recursive call to the
interpreter with computation restricted to a named subset of rules. Rule-
blocks may recursively push additional rule blocks, or they may explicitly
pop themselves. The judicious use of rule blocks is a convenient way to
exercise control over certain rules or sets of rules which should be executed
in a particular order. It is also a nice way to focus the attention of the model.
Original Foxglove Announcement 7
Distribution
AI Technology Center
AIAG Monthly Status Report Distribution List
Foxglove User Community
|