WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Document generation apparatus and methods    

Get related patents on CD
United States Patent5043891   
Link to this pagehttp://www.wikipatents.com/5043891.html
Inventor(s)Goldstein; Henry (Waltham, MA); Shannon; David F. (Nashua, NH); Bolling; Richard W. (Brookline, NH); Rustici; Eric (Londonderry, NH)
AbstractA document generation system which employs a definition-based expert system and an editor to produce an output document from a template document and expert system responses. The knowledge base of the expert system consists of a hierarchy of terms and their definitions. To produce an expert response, an inference engine component of the expert system evaluates a term by evaluating all of the definitions for the terms which are in that term's hierarchy of definitions. In the document generation system, the terms include fragment terms which are defined as portions of the template document.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History Custom Search
Inventor     Goldstein; Henry (Waltham, MA); Shannon; David F. (Nashua, NH); Bolling; Richard W. (Brookline, NH); Rustici; Eric (Londonderry, NH)
Owner/Assignee     Wang Laboratories, Inc. (Lowell, MA)
Patent assignment
All assignments
Company News
Publication Date     August 27, 1991
Application Number     07/403,256
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     September 5, 1989
US Classification     715/531 706/902 715/530
Int'l Classification     G06F 015/00
Examiner     MacDonald; Allen R.
Assistant Examiner    
Attorney/Law Firm     Shanahan; Michael H. Peterson; Scott K. ,
Address
Parent Case     CROSS-REFERENCES TO RELATED APPLICATIONS This application is a continuation-in-part of U.S. Ser. No. 371,434, filed 6/5/89, now U.S. Pat. No. 4,967,368 which in turn is a continuation-in-part of U.S. Ser. No. 030,250, filed 3/24/87, now U.S. Pat. No. 4,916,633 which itself is a continuation of U.S. Ser. No. 766,860, filed 8/16/85, now abandoned. The additional disclosure of the present application begins at Section 23 of the Description of a Preferred Embodiment and includes new FIGS. 10-14.
Priority Data    
USPTO Field of Search     364/513 364/419 364/200 364/900 364/274.5 364/943.44
Patent Tags     document generation methods
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
4649515
Thompson
706/52
Mar,1987

[0 after 0 votes]
4599692
Tan
706/12
Jul,1986

[0 after 0 votes]
4290114
Sinay
600/301
Sep,1981

[0 after 0 votes]
4286330
Isaacson
712/223
Aug,1981

[0 after 0 votes]
3716840
Masten
707/3
Feb,1973

[0 after 0 votes]
3715730
Smith
707/6
Feb,1973

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B

[0 market size comments]
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%

[0 market share comments]
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%

[0 reasonable royalty comments]
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

[0 Guesstimation of Royalty Value Comments]
License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
[0 license availability comments]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
[0 owner/assignee comments]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

[0 competitive advantage comments]
Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

[0 commercial alternatives comments]
 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. A document generation system for generating an output document comprising:

a template document;

an expert system knowledge base for storing knowledge base items;

editing means for editing the template document and the output document;

expert system knowledge base defining means for defining the knowledge base items in response to first user inputs, the knowledge base defining means including document portion defining means responsive to one of the first user inputs for defining a document portion knowledge base item associated with a portion of the template document by providing the editing means to the user to edit the portion and associating the edited portion with the document portion knowledge base item in the knowledge base; and

expert system inference engine means for providing expert responses in response to second user inputs and the knowledge base items, the inference engine means including output document generation means responsive to a document portion knowledge base item for employing the editing means to provide the document portion associated with the document portion knowledge base item to the output document when the document portion knowledge base item and the second user inputs so require.

2. The document generation system set forth in claim 1 wherein:

the editing means includes means for identifying a text string in a document portion as a term representing a value returned by the expert system inference engine means; and

the output document generation means detects the identified term in the provided document portion, provides the identified term to the inference engine, receives the value of the identified term from the inference engine, and outputs the received value to the output document in place of the identified term

3. A document generation system for generating an output document comprising:

a template document;

editing means for editing the template document and the output document;

a knowledge base including hierarchically defined terms and their definitions, the corresponding definition of each term defining its respective term using the value of one or more terms, each whose definitions is at a lower level of the hierarchy, and/or using one or more term-independent values which do not depend on the value of a term;

knowledge base defining means for defining the terms in response to first user inputs, the knowledge base defining means including document portion term defining means for defining a document portion term of the terms which is associated with a portion of the template document, the document portion term defining means providing the editing means to the user to edit the portion and associating the edited portion with a definition of the document portion term in the knowledge base; and

inference engine means for responding to second user inputs by obtaining the definition of a given term from the knowledge base, computing the value of the given term from its corresponding definition by obtaining the value of any term and any term-independent value in the corresponding definition, the inference engine means including output document generation means for obtaining the value of a document portion term by employing the editing means to provide the document portion associated with the document portion term to the output document when the document portion knowledge base item and the second user inputs so require.

4. The document generation system set forth in claim wherein:

the editing means includes means for identifying a text string in a document portion as a term;

the document portion term defining means detects the identified term in the document portion and provides the detected term to the knowledge base defining means;

the knowledge base defining means responds to the detected term by determining whether there is a definition for the detected term in the knowledge base and if there is not, requesting first user inputs from the user and defining the detected term therefrom; and

the output document generation means detects the identified term in the provided document portion, provides the identified term to the inference engine, receives the value of the identified term from the inference engine, and outputs the received value to the output document in place of the identified term.

5. The document generation system set forth in claim 4 wherein:

the identified term is a document portion term referring to another portion of the template document.

6. The document generation system set forth in claim 3 wherein:

the document portion term defining means includes a condition dependent on the value of another term in the definition of the document portion term; and

the inference engine means computes the value of the other term and causes the output document generation means to obtain the value of the document portion term only if the condition is fulfilled.

7. The document generation system set forth in claim 3 wherein:

the editing means additionally edits the template document independently of the document portion term defining means and employs first identification means to identify a text string in the document portion defining the document portion term as the document portion term; and

the document portion term defining means additionally detects the document portion term in the document portion by means of the first identification means and responds thereto by defining the document portion term in the knowledge base and associating the document portion with the document portion term with the defined document portion term.

8. The document generation system set forth in claim 7 wherein: the editing means additionally employs second identification means

for identifying a text string in a document portion as a term other than the document portion term defined by the document portion; and

the document portion term defining means detects the identified other term in the document portion by means of the second identification means and provides the detected other term to the knowledge base defining means;

the knowledge base defining means responds to the detected other term by determining whether there is a definition for the detected term in the knowledge base and if there is not, requesting first user inputs from the user and defining the detected other term therefrom; and

the output document generation means detects the identified other term in the provided document portion by means of the second identification means, provides the identified other term to the inference engine, receives the value of the identified other term from the inference engine, and outputs the received value to the output document in place of the identified other term.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. FIELD OF THE INVENTION

The present invention relates to document generation systems implemented by means of digital computers and more particularly to document generation systems employing expert systems and to the knowledge base and inference engine components of expert systems.

2. Prior Art Many business and legal documents are "written" by combining pieces of pre-existing text (often called "boilerplate" a required by the situation for which the document is being written and then adding to or editing the result, again as required by the situation. Many documents involving boilerplate were formerly produced rising forms from form books. The form's text contained the information which did not vary from transaction to transaction, while blanks were left for varying information.

With the development of text editing programs (generally termed "editors") for computers, it became possible to automate the form book. The originator of the form provided a template document which was stored in the computer, and people using the editor to make documents which used the form simply copied the template document into the document they were making and then filled in the missing information. The automation rapidly went beyond making a template document and copying it, and a class of systems called document generation systems emerged. A document generation system employs a template document and information provided interactively or from a data base to generate a document which is specifically tailored to the situation for which it is assembled. A survey of such systems may be found in the following article:

James A. Eidelman, "The Computer as Electronic Form Book, Available Software Tools", Legal Economics, May-June 1988

Various approaches have been taken to document generation. Some editing programs have macro languages, which permit the user to write programs executed by the editor. By including such a program with a template document, the template document became a document generation system. Other document generation programs separate the program which uses the template from the template. Some document generation systems even employ expert systems with knowledge bases. The information in the knowledge base is used to determine what questions should be asked the person for whom the document is being prepared and to determine to determine what information should be included in the document being generated.

A persistent problem in the design of document generation systems has been achieving power without undue complexity. Powerful document generation systems generally required that the person designing the system have a programmer's skills; document generation systems which did not require such skills often did little more than permit the user to select among parts of the template. In the case of document generation systems using expert systems, a particular problem has been the integration of the expert system which provided the information needed to produce the document with the editor which actually produced it. The foregoing and other problems are solved by the document generation apparatus and methods disclosed herein.

SUMMARY OF THE INVENTION

The document generation apparatus of the present invention is an expert system for generating an output document. The system includes a template document, a knowledge base for storing knowledge base items, an editor for editing the template document and an output document produced by the document generation apparatus, a knowledge base definer for defining knowledge base items in the knowledge base, and an inference engine which responds to inputs of information by using the knowledge base to produce an expert response based on the information. The knowledge base includes a document portion definer which responds to first user inputs to define a document portion knowledge base item which is associated with a portion of the document template. The document portion definer provides the editor to the user to edit the portion and associate the edited portion with the document portion knowledge base item. The inference engine includes an output document generator which responds to a document portion knowledge base item by employing the editing means to provide the document portion associated with the document knowledge base item to the output document when the document knowledge base item and the second user inputs so require.

In another aspect of the invention, the expert system of the invention is a definition-based expert system of the type disclosed in the parents of the present application and the document portions are associated with terms defined in the definition-based expert system's knowledge base. The portions in the template document may further contain other terms defined in the definition-based expert system's knowledge base, including other terms associated with document portions. When the output document generator encounters such a term, the output document generator obtains the term's present value from the knowledge base and outputs the output document with the value in the place of the term. Further, when the user of the document portion definer has finished defining a portion of the template document, the document portion definer determines whether the other terms in the portion have definitions in the knowledge base; if they do not, the knowledge base definer asks the user to provide a definition.

It is thus an object of the invention to provide improved apparatus and methods for generating documents.

It is another object of the invention to provide improved document generation apparatus and methods which employ expert systems.

It is a further object of the invention to provide document generation apparatus and methods which employ definition-based expert systems.

It is an additional object of the invention to provide a definition-based expert system in which a term may be defined as a portion of text and the portion of text may itself include terms defined in the definition-based expert system.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual block diagram of a prior art expert system.

FIG. 1A is a conceptual block diagram of a prior art expert system shell.

FIG. 2 is a conceptual block diagram of the expert system shell and expert system of the present invention.

FIG. 3 is a conceptual diagram of a hierarchy of definitions as used in the present invention.

FIG. 4 is a diagram of the terms and descriptions used to define the term FRAUD.

FIG. 5 is a diagram of a LISP environment.

FIG. 6 is an overview of a first prototype embodiment of the present invention.

FIG. 7 is a diagram of TDEF 617 of the first prototype embodiment.

FIG. 8 is a detailed diagram of the function DEFINE of the first prototype embodiment.

FIG. 9 is a diagram of certain improvements in the second prototype embodiment.

FIG. 10 is an example template document used in the document generation apparatus.

FIG. 11 is a conceptual block diagram of the document generation apparatus.

FIG. 12 is a diagram of the document structure of the example template document.

FIG. 13 is a diagram showing a merge term attribute in the document structure.

FIG. 14 is a diagram of the index employed in the document generation apparatus.

For ease of reference to figures, the reference numbers used in the description of the preferred embodiment have three digits. The two least-significant digits are reference numbers within a drawing; the most significant digit is the drawing number. For example, the reference number 901 refers to an item shown in FIG. 9.

DESCRIPTION OF A PREFERRED EMBODIMENT

The following description of a preferred embodiment first presents a conceptual overview of the expert system and expert system shell of the present invention and then presents a detailed description of a first prototype implementation of the invention. Certain improvements made in a second prototype implementation are discussed. Material added to this disclosure in the present continuation in part begins at Section 23.

1. Conceptual Overview of the Expert System Shell and Expert System of the Present Invention: FIG. 2

FIG. 2 is a conceptual block diagram of expert system shell 201 and expert system 202 of the present invention. Expert system shell 201 has four components: command processor (CP) 203, definition processor (DP) 207, term store (TS) 215, and term inference engine (TIE) 219. Expert systems 202 produced using expert system shell 201 have all of these components but DP 207. As will be explained in more detail below, CP 203 receives commands from users of shell 201 and system 202 and provides them to the other components; DP 207 processes definitions; TS 215 stores defined terms and their definitions; TIE 219 uses a term's definition from TS 215 to evaluate the term and perform other operations on it.

CP 203 converts commands from users of shell 201 and expert systems 202 into definition processor commands (DPCs) 204 and inference engine commands (IECs) 217. In the prototype, DPCs 204 permit the user of shell 201 to define a term, redefine a term, undefine a defined term, view a term's definition, save a set of definitions, and restore a set of definitions. IECs 217 permit the user of shell 201 or an expert system 202 produced by shell 201 to determine the current value of a term, find out how expert system 202 reached that value, have expert system 202 assume a different value for a term and see how that affects the value of other terms, reset the value of any one or all of the terms, and when the determination of the current value of a term requires a value to be supplied from outside the definition, to ask expert system 202 why the value is required.

Definition processor 207 defines TERMs 206. When a TERM 206 has been fully defined, TS 215 contains a defined term (DTERM) 211 corresponding to TERM 206 and a definition (DEF) 213 for DTERM 211. TERM 206 may be received either in a DPC 204 or from a description (DESC) 205 DP 207 requested from the user of expert system shell 201 in response to a TERM 206. DP 207 first determines whether there is already a DTERM 211 corresponding to TERM 206, i.e., whether TERM 206 is already defined. If it is, DP 207 retrieves DTERM 211 corresponding to TERM 206 from TS 215 and prepares it for use in the definition DP 207 is currently constructing. If it is not defined, DP 207 outputs a description request (DESC REQ) to the user of shell 201. The user provides a description (DESC) 205 of TERM 206 to DP 201, which then makes a DEF 213 for TERM 206 using the information in DESC 205. As will be described in more detail below, DESC 205 is written in a definition language which permits the user to specify other TERMs 206, constant values, and that a value is to be obtained from outside expert system 206 for which the definition is being provided. The definition further specifies operations which may be performed on the values represented by TERM 206, constants, and external values in the definition. If DESC 205 contains TERMs 206, DP 207 treats those TERMs 206 in the manner just described. If there is a DTERM 211 corresponding to TERM 206, DTERM 211 is used in DEF 213 being constructed; if there is not, DP 207 requests a DESC 205 defining TERM 206 and processes it as just described. The repetitive operation of DP 207 is shown in FIG. 2 by arrow 208 showing how UDESC 210, which contains at least one TERM 206, is again processed by DP 207. Processing continues in this fashion until the original DESC 205 and all of the TERMs 206 in any DESCs 205 produced for TERMs 206 required to define the TERMs 206 in the original DESC 205 have been defined, i.e, have corresponding DTERMs 211 and DEFs 213 in TS 215.

The DTERMs 211 and DEFs 213 resulting from operation of DP 207 are placed in TS 215. DTERM 211 may be located in TS 215 by name. DEF 213 corresponding to DTERM 211 is associated with DTERM 211, and may thus be used once DTERM 211 is located. Included in DEF 213 is a modified version of DESC 205 from which DEF 213 is derived.

The remaining operations specified by DPCs 204 are carried out in DP 207 and TS 215 as follows: when a TERM 206 is undefined, DP 207 removes the corresponding DTERM 211 and DEF 213 from TS 215; when a TERM 206 is redefined, DP 207 removes DEF 213 corresponding to TERM 206 and requests a new DESC 205 for TERM 206. That DESC 205 is then processed in the manner just described. When a DPC requests that a TERM 206's definition be displayed, DP 207 displays the DESC 205 which was incorporated into the DEF 213 for DTERM 211 corresponding to TERM 206. Finally, the save operation saves the contents of a given TS 215 to a file for later use and the restore operation restores the contents of the file to TS 215.

Term inference engine (TIE) 219 performs operations using the DTERMs 211 and DEFs 213 in TS 215. The primary operation is the what operation, which determines the value of a DTERM 211 from its definition and external values provided by the user of expert system 202 or shell 201. TIE 219 performs the what operation in response to an IEC 217 specifying the operation and a TERM 206 from CP 203. TIE 219 uses DTERM 211 corresponding to TERM 206 to locate DTERM 211's DEF 213 in TS 215. It then performs the operations specified in DEF 213 using the DTERMs 211, constants, and external values specified in the definition and returns the result, TRES 227, to the user of system 202 or shell 201.

The constants in DEF 213 are available for immediate use in calculating the value of DTERM 211; in the case of the external values, DTERM 211 contains a description of how the external value is to be obtained. TIE 219 uses the description to make a request for an external value (EXVAL REQ) to the source of the external value EXVAL) 225 and receives EXVAL 225 from the source. In the simplest case, the source is the terminal being used by the user of system 202 or shell 201 and the information is obtained by putting a question on the user's terminal screen and receiving his input; in more complex cases, the source may be a file or a data base.

In the case of a further DTERM 211 in DEF 213 for the DTERM 211 being evaluated. TIE 219 obtains the further DTERM 211's DEF 213 and computes that DTERM 211's value from its DEF 213, evaluating as it does so any DTERMs 211 in that DEF 213, and continuing thus until all DTERMs 211 from which the DTERM 211 whose value is being sought in the what operation is dependent have been evaluated. The constants, external values, and DTERMs 211 specified in each DEF 213 are dealt with in the manner just described. When all DEFs 213 have been evaluated the value of DTERM 211 whose value is being sought is computed and returned as TRES 227.

In a preferred embodiment, EXVALs 225 which are obtained during evaluation of a given DEF 213 become part of that DEF 213's definition; thus, if the what operation is performed a second time on DTERM 211, TIE 219 will not produce any EXVAL REQs, but will simply use the stored EXVALs 225 to recompute the value of DTERM 211. A preferred embodiment has two IECs 217 for modifying the stored EXVALs 225. The first, reset, simply removes all of the stored EXVALs 225 from the DEFs 213 for the DTERMs 211 specified in the reset command. Thus, when what is again performed, a new EXVAL 225 will be obtained as previously explained. The second, assume, permits a new EXVAL 225 to be provided to DEF 213 for TERM 206 specified in the assume command. When what is again performed in this case, the specified EXVAL 225 is used to derive the value of DTERM 211 for which the what operation is being performed.

If a user of shell 201 or system 202 wants to know why TIE 219 is asking for a given EXVAL 225, he can respond to an EXVAL REQ with the command for the why operation. In response to that command, TIE 219 outputs DESC 205 from DEF 213 for the DTERM 211 whose value was being computed when the EXVAL 225 was required, and the user can determine from DESC 205 why the given EXVAL 225 is important. The user can further use why to ask why any of the DTERMs 211 whose values are required to obtain the value of the DTERM 211 whose evaluation produced the EXVAL REQ are required, and TIE 219 provides the DESCs 205 for those DTERMs 211.

3. The Hierarchy of Definitions: FIG. 3

In defining any term, DP 207 produces a hierarchy of DEFs 213. If DEF 213 for the term being defined itself contains no terms, the hierarchy has only one level. If DEF 13 for the term contains a further term, that term must be defined before the first term can be defined, and the first term is the top term in a hierarchy with two levels. If any of the DEFs 213 at the second level contains a further term, that term must be defined, and the hierarchy has three levels. The hierarchy thus continues to deepen until none of the DEFs 213 for the terms upon which other terms depend contains a further term, but is instead defined solely in terms of operations on constants or external values. As is clear from the above discussion, a DEF 213 is always the top DEF 213 in the hierarchy of DEFs 213 required to define the DTERM 211 which DEF 213 defines, but may at the same time be at a lower level in the hierarchy of DEFs 213 required to define some other DTERM 211.

FIG. 3 is a conceptual illustration of one such hierarchy of DEFs 213. Hierarchy 305 contains DEFs 213(A) through 213(E) corresponding to DTERMS 211(A) through 211(E) belonging to set of DTERMS 301. The topmost definition in hierarchy 305 is DEF 213(A), corresponding to DTERM 211(A). The notation OP(B,C) in DEF 213(A) indicates that DEF 213(A) specifies that the value of DTERM 211(A) is obtained by performing an operation on the values of DTERMs 211 (B) and (C). Similarly, DEF 213 B specifies that the value of DTERM 211(B) is obtained by performing an operation on the values of DTERMs 211(D) and (E). Consequently, hierarchy 305 for DEF 213(A) has three levels: level 1 307, containing only DEF 213(A), level 2 309, containing DEF 213(B) and DEF 213(C), and level 3 311, containing DEFs 213(D) and 213(E). DEFs 213(C), 213(D), and 213(E) do not define DTERMs 211 C, D, and E with other DTERMs 211, and cannot give rise to lower levels. Such DEFs 213 are termed terminal definitions 312.

In constructing hierarchy 305 DP 207 begins with TERM 206(A) corresponding to DTERM 211(A), which it receives from a DESC 205 from which a DEF 213 at a higher level is being constructed or from a define or redefine DPC 204 DP 207 then requests a DESC 205 for DTERM 211(A). DESC 205 defines DTERM 211(A) in terms of an operation on two TERMS 206, B and C. If DEF 213(B) and DEF 213(C) already exist, DP 207 can make DEF 213(A) and need go no further. If either DEF 213(B) or DEF 213(C) does not exist, DP 207 must produce those DEFs 213 before it can make DEF 213A. DP 207 thus asks for a DESC 205 for TERM 206(B) and for TERM 206(C). In the case of TERM 206(C), DESC 205 defines TERM 206(C) only in terms of EXVAL(C) 225, and DEF 213(C) can be constructed immediately. In the case of TERM 206(B), DESC 205 defines TERM 206(B) in terms of two additional TERMs 206, D and E; consequently, DP 207 must descend another level and produce DEFs 213 for those TERMs 206. Again, DP 207 requests DESCs 206 for those terms. In both cases, the TERMs 206 are defined in terms of EXVALs 225, and consequently, both DEFs 213 can be constructed. DEFs 213 for all TERMs 206 involved in the definition of TERM 206 A have now been constructed, DTERMs 211(B) through (E) corresponding to TERMs 206 (B) through (E) exist, DEF 213(A) can be constructed, and TERM 206(A) now has a DTERM 211(A) corresponding to it.

Because hierarchy 305 is constructed repetitively beginning with the top DEF 213 in hierarchy 305 and only TERMs 206 which have no corresponding DTERM 211 are defined, no DTERM 211 can have two DEFs 213 and no DEF 213 in hierarchy 305 can refer to a DEF 213 which is above it in hierarchy 305. Consequently, the DEFs 213 in hierarchy 305 are necessarily complete and consistent with regard to DEF 213(A) in hierarchy 305 or to the top DEF 213 in any hierarchy incorporating DEF 213(A).

4. The Description Language for Descriptions 205

As previously indicated, DP 207 makes DEFs 213 from descriptions (DESCs) 205. In the prototype, DESCs 205 are made using a description language. The description language includes predefined terms specifying operations on terms, a case statement, and operations for obtaining external values.

The operations include Boolean operations, arithmetic operations, and text concatenation. The case statement is a list of boolean expression-value pairs of the form:

______________________________________ (boolean.sub.-- exp.sub.-- 1) value 1 . . . (boolean.sub.-- exp.sub.-- n) value.sub.-- n (OTHERWISE) otherwise.sub.-- value ______________________________________

When DEF 213 containing a case statement is evaluated, the boolean expressions 1 through n are evaluated in order until one of them is true. The value corresponding to the true boolean expression becomes the value of DTERM 211 defined by DEF 213. If none of the boolean expressions is true, the value corresponding to OTHERWISE becomes the value of DTERM 211.

The description language of the prototype permits specification of two classes of operations for obtaining external values. The first class, the ASK operations, obtains values from the terminal of the user of expert system 202. The first class, the ASK operations, are used to obtain external values from the terminal. The second class, the RECORD operations, are used to obtain external values from a data base system. In both cases, the external values may be numbers, text strings, or boolean values, or they may select one of a set of alternative literal terms, i.e., terms which represent nothing but themselves.

ASK to obtain a numeric value has the form:

ASK NUMBER "prompt.sub.-- string"

When the DEF 213 containing such an ASK operation is evaluated, DP 207 outputs the prompt string to the terminal and waits for a number input from the terminal. That number is then used in the evaluation of DEF 213. The prompt string ma itself contain a previously-defined term, and consequently, a user's response may be made to depend on the value of a previously-evaluated term. The ASK operations for boolean and text string values are specified in the same fashion as the ASK operation for numeric values, except that NUMBER in the above operation is replaced by YES-NO when a boolean value is sought and TEXT when a text string is sought.

ASK which selects one of a number of literal terms has the form:

______________________________________ ASK CHOICE "prompt.sub.-- string" (literal.sub.-- term.sub.-- 1 . . literal.sub.-- term.sub.-- ______________________________________ n)

When the DEF 213 containing ASK CHOICE is evaluated, the prompt string is output and the user is asked to select one of the literal terms. That literal term may then be used in DEF 213 to compute the value of DTERM 211 defined by DEF 213.

The RECORD operations are generally analogous to the ASK operations, except that the RECORD operation specifies how the external value is to be located in the data base and the data base supplies the value at the specified location.

5. Operation of Shell 201 and System 202: FIG. 4

The operation of shell 201 will be explained in detail using a hierarchy of definitions from which it may be determined whether someone has been defrauded. The legal definition of fraud requires that one party knowingly made a misrepresentation to the other party and that the other party relied on the misrepresentation to his detriment. FIG. 4 shows a hierarchy of DTERMs 211 which corresponds to that legal definition.

Creation of the hierarchy of FIG. 4 begins when CP 203 receives the DEFINE FRAUD command. CP 203 then passes TERM 206 FRAUD to DP 207, which requests a DESC 206 from the expert making the definition. The expert provides the DESC 206

KNOWING.sub.-- MISREPRESENTATION AND DETRIMENTAL.sub.-- RELIANCE

This DESC 206 contains two further TERMs 206 and the boolean AND operator. Thus, the value of FRAUD is to be computed by obtaining the values of the DTERMs 211 corresponding to the TERMs 206 and performing an AND operation on them.

Since the further TERMS 206 are undefined, DP 207 asks for their definitions. The expert provides the DESC 205

MISREPRESENTATION AND DEFENDANT.sub.-- KNEW.sub.-- MISREPRESENTATION

KNOWING.sub.-- MISREPRESENTATION and the DESC 205.sub.-- RELIANCE.sub.-- BY PLAINTIFF AND LOSS.sub.-- BY.sub.-- PLAINTIFF for DETRIMENTAL.sub.-- RELIANCE. Again, these further TERMs 206 are undefined, so DP 207 asks for their definitions and the expert provides the definitions show in FIG. 4. While DP 207 may ask for definitions in any order, a preferred embodiment defines all TERMs 206 necessary to define a given undefined TERM 206 before going on to the next undefined TERM 206.

In the above example, the DESCs 205 for MISREPRESENTATION, DEFENDANT.sub.-- KNEW.sub.-- MISREPRESENTATION, RELIANCE.sub.-- BY.sub.-- PLAINTIFF, and LOSS.sub.-- BY.sub.-- PLAINTIFF all contain only the system-defined DTERMS 211 used in the ASK YES-NO operation, so DP 207 is now able to produce DEFs 213 for all of the terms in the hierarchy. The values of all of the DTERMs 211 in the hierarchy depend ultimately on the values which the ASK YES NO operation requests from the user of expert system 202 which employs the FRAUD definition, and thus depends ultimately on what the plaintiff says about what happened to him.

Use of the FRAUD definition hierarchy in expert system 202 begins with the WHAT FRAUD command which the user of expert system 202 inputs to CP 203 CP 203 generates a corresponding WHAT FRAUD IEC 217 for TIE 219. TIE 219 then determines the value of FRAUD by evaluating its DEF 213. In order to do that, it must evaluate the DEFs 213 for other DTERMs 211 in the hierarchy, beginning with KNOWING.sub.-- MISREPRESENTATION. The evaluation of KNOWING.sub.-- MISREPRESENTATION requires the evaluation of MISREPRESENTATION. The evaluation of that DTERM 211 results in the execution of the WHAT YES-NO operation in its DEF 213, and TIE 219 outputs the prompt "Did he tell you anything that wasn't true?" If the user answers "no", MISREPRESENTATION is false, KNOWING.sub.-- MISREPRESENTATION is false, and FRAUD is false, so TIE 219 returns TRES 227 to the user indicating that there is no fraud. If the user answers "yes", TIE 219 evaluates DEFENDANT.sub.-- KNEW.sub.-- MISREPRESENTATION, which again results in a question to the user. Depending on the answer to the question, evaluation continues or is finished. TIE 219 proceeds in the above fashion until it has computed a value for FRAUD.

As previously mentioned, a user of expert system 202 may use the HOW user command to determine how expert system 202 arrived at its value for FRAUD. Assuming that the user answered "no" when asked "Did he tell you anything that wasn't true" (in the definition of MISREPRESENTATION), TIE 219 in the prototype will respond to HOW FRAUD by outputting

______________________________________ FRAUD is defined to be (KNOWING.sub.-- MISREPRESENTA- TION AND DETRIMENTAL.sub.-- RELIANCE) where (KNOWING.sub.-- MISREPRESENTATION) equals FALSE. ______________________________________

As previously mentioned, DP 207 places DESC 205 for a DTERM 211 in the DTERM 211's DEF 213, and TIE 219 also stores the external values it receives in evaluating a DTERM 211's DEF 213 in DEF 213. In performing the HOW operation, TIE 219 first fetches and outputs DESC 205 from DEF 213 for the DTERM 211 being inquired about and then evaluates the DTERMS 211 in DEF 213 as required to obtain the value of DTERM 211 being inquired about. The DTERMs 211 are then output together with their values. If a user wishes to inquire further, he need only repeat the HOW operation on the other DTERMS 211 specified in the DESC 205 output in the HOW operation.

As also previously mentioned, a user may respond to a request for an external value with the WHY command instead of a value. If a user responds in the case of the FRAUD example with WHY when TIE 219 asks "Did he tell you anything that wasn't true", TIE 219 responds with:

______________________________________ MISREPRESENTATION is needed to determine the value of KNOWING.sub.-- MISREPRESENTATION, which is defined to be MISREPRESENTATION AND SUBJECT.sub.-- KNEW.sub.-- MISREPRESENTATION ______________________________________

and repeats the question.

Again, the information used to respond to the WHY command comes from the DESCs 205 stored in the DEFs 213 in the hierarchy used to define FRAUD. If the user wants to know more at this point, he can apply HOW to the DTERMs 211 mentioned in the response to the WHY command.

6. The LISP Environment of the Prototype Embodiments: FIG. 5

Having thus provided a conceptual overview of the structure and operation of shell 201 and system 202, the discussion proceeds to a detailed description of the implementation of the first prototype.

Both the first and second prototype embodiments are implemented in the LISP programming language and execute in the LISP environment. The LISP programming language and environment are frequently used to implement prototype and production expert systems and are well-known in the expert system art. The specific LISP dialect used for the prototype embodiments is COMMON LISP, which is described in Guy L. Steele, Jr., COMMON LISP, the Language, Digital Press, 1984. Only so much of the LISP environment and language are described here as is required for a clear understanding of the mode of operation of the prototype embodiments.

Beginning with the LISP language, the language differs from languages such as FORTRAN or PASCAL in that is is chiefly concerned with the processing of symbols, as opposed to the processing of data which is represented in a program by symbols. The fundamental components of a LISP program are atoms. An atom may be a symbol, such as ABC, or a constant. The components are organized into programs by means of lists which may have no members or members including atoms and other lists. A list is made by enclosing its members in parentheses: (ABC) is a list with one member, the symbol ABC. Functions appear in LISP as lists in which the first symbol in the list represents the function and the other atoms represent the function's arguments. For example, the add function is represented in LISP by the symbol +, and the list (+2 3) specifies that the + operation is to be applied to the atoms 2 and 3. Any atom or list which has a value when evaluated by a LISP interpreter is called a form. 5 and (+2 3) are forms, and if the symbol ABC has a value, it is a form.

Functions are defined in LISP by means of the DEFUN function, in which the remaining items of the list define the function's name, its arguments, and the value it returns. For example, (defun five () 5) defines a function which takes no arguments and always returns the value 5.

Among the things LISP programs can do with symbols and lists is make them. Since a function definition is only a kind of list, a LISP program can provide a symbol to DEFUN as the name of the new symbol being created by DEFUN and then use the symbol to execute the newly-created function. Symbols may either represent themselves as symbols or values. When a symbol is representing itself as a symbol in a LISP list, it is preceded by a' mark. In the case of symbols representing functions, the value of the symbol is the function. However, if the function is placed in a list with its arguments and the list evaluated, the result is the value of that execution of the function. Thus, 'five represents the symbol five, while five represents the function defined by DEFUN above, and (five) represents the value of an execution of the function five, i.e., 5.

LISP programs are written and executed in a LISP environment. That used for the prototype embodiments was made by Gold Hill Computers, Inc. for the Professional Computer manufactured by Wang Laboratories, Inc. FIG. 5 is a conceptual block diagram of a typical LISP environment 501. Environment 501 has two main components, LISP interpreter 503, which evaluates LISP forms, and LISP symbol space 505, which stores LISP symbols (SYM 501) and their definitions (SYMDEF 509). DEFUN and certain other LISP functions create and define new LISP symbols or redefine previously-existing LISP symbols when they are evaluated; consequently, LISP interpreter 503 may be seen as not only an evaluator of symbols, but also as a creator, defi