;;;
;;;   KNOWBEL knowledge representation system
;;;    
;;;    author: Bryan M. Kramer
;;;    
;;;    
;;; Copyright (c) 1990, 1991 University of Toronto, Toronto, ON
;;;
;;; Permission is granted to any individual or institution to use, copy,
;;; modify, and distribute this software, provided that this complete
;;; copyright and permission notice is maintained, intact, in all copies and
;;; supporting documentation.
;;;
;;; The University of Toronto provides this software "as is" without
;;; express or implied warranty.
;;;




Loading knowbel.lisp into common lisp will automatically compile
missing .fasl files and load all files into lisp

If you are running Franz's Allegro Common Windows
loading knowbelw.lisp also compiles and loads a graphical
browsing package.

A KNOWBEL manual is located in the Manual subdirectory.

The program has been tested on a Sun SPARCStation 1+,
a Silicon Graphics 4d both in Franz's Allegro Common Lisp,
version 4.0.

It also runs successfully on a Mactintosh with Allegro
Common Lisp.


WARNING!!!!! - functions relying on ndprog will not execute
properly interpreted. The system must be compiled to work.


CONTENTS OF THIS FILE:

1) TESTING: two examples of the use of KNOWBEL
2) KNOWN BUGS


TESTING:

Calling the function (test-dr) initializes the KB and runs
a few tests involving constraint checking, deduction, and
meta-rules. The output should be the following:


<cl> (test-dr)

DEF-SINGLE-CLASS <single-class>

INST-SINGLE-CLASS
 (ERROR INST-SC
        ((INTEGRITY-CONSTRAINT-FAILURE
          ((INST [attr x2 4 (#)#,# 11:9:46,+]
            [attr x <number> (#)#,# 11:9:46,+])
           single-constraint (MULTIPLE-VALUE . 1)
           [attr x2 4 (T)tp1,tp0 11:9:46,+] [attr x1 3 (T)tp1,tp0 11:9:46,+]
           INST-ALL-PATHS))))

CLASS <aclass>

OBJ <aobj1>

QUERY

--> ($2<proposition> 5748653990 $3<proposition> $6(t)tp1,tp0)
comp_a4
META
mr1
VARP
NOW
2874326992
comp_a3
META
mr1
VARP
NOW
2874326992
<>( a2 ): 6 [(T)tp1,tp0][11:9:51,+]

--> ($2<proposition> 2874327003 $3<proposition> $4(t)tp1,tp0)
comp_a4
META
mr1
VARP
NOW
2874326992
comp_a3
<>( a1 ): 5 [(T)tp1,tp0][11:9:51,+]
<>( a2 ): 6 [(T)tp1,tp0][11:9:51,+]

--> ($0<proposition> 2874327006 $1<proposition> $4(t)tp1,tp0)
comp_a4
<>( a1 ): 5 [(T)tp1,tp0][11:9:51,+]
comp_a3
META
mr1
VARP
NOW
2874326995
<>( a2 ): 6 [(T)tp1,tp0][11:9:51,+]

--> ($0<proposition> 16 $1<proposition> $2(t)tp1,tp0)
comp_a4
<>( a1 ): 5 [(T)tp1,tp0][11:9:51,+]
comp_a3
<>( a1 ): 5 [(T)tp1,tp0][11:9:51,+]
<>( a2 ): 6 [(T)tp1,tp0][11:9:51,+]

T 
<cl> 

------------------------------------------------------

flight.lisp contains an example knowledge base making use
of best first search, a metarule, and description objects.

To test it run the following (loadkb initializes the knowledge base
by default):

<cl> (loadkb "flight.lisp")

NIL
<cl> (ask-flight 'toronto 'chengdu '($x $cost))
True
	$X	@/desc4/(((<proto-flight-path> $0-,+)) ((from
                                         (_ <toronto>
                                          $41970/1/1-0:0:0,1988/12/31-11:59:59))
                                        (to
                                         (_ <chengdu>
                                          $41970/1/1-0:0:0,1988/12/31-11:59:59))
                                        (flight
                                         (_ <flight3502>
                                          $41970/1/1-0:0:0,1988/12/31-11:59:59))
                                        (cost
                                         (_ 1600
                                          $41970/1/1-0:0:0,1988/12/31-11:59:59))
                                        (subpath
                                         (_
                                          @/desc5/(((<proto-flight-path> $1-,+)) ((# #) (# #) (# #) (# #) (# #)))
                                          $41970/1/1-0:0:0,1988/12/31-11:59:59))))
	$COST	1600

T 
<cl> 



-----------------------------



