%----------------------------------------------------------- 
%   (C)1992 Institute for New Generation Computer Technology 
%       (Read COPYRIGHT for detailed information.) 
%-----------------------------------------------------------
ICOT Free Software No.11
	
	Knowledge Representation Language:Quixote 
	(Ver.III: June 1, 1993)


[Overview]
Quixote is a DOOD (Deductive Object-Oriented Database) system
developed at ICOT.  
It provids fundamental facilities for knowledge information
processing, such as knowledge representation and inferences.

[Features]
Quixote provides several facilities for developing wide range of
experimental systems for knowledge information processing, such as
databases, natural language processing, genetic information
processing, and legal reasoning.
Quixote is a deductive object-oriented databases (DOOD) language and
can be seen as an extended logic-based language having
object-orientation features, subsumption constraints, and hierarchical
modules. The following are outstanding Quixote features.

1. Object identity defined over extended terms (object terms).
2. Constraints in terms of subsumption relation among object terms.
3. Property inheritance among objects.
4. Modularized and hierarchical knowledge bases defined by modules
and rule inheritance between them.
5. Queries having additional assertions to knowledge bases, and
answers with assumed constraints.

[Reference]
Kazumasa Yokota, Deductive Object-Oriented Databases, Computer
Software, Vol.9, No.4, pp3--18, 1992 (in Japanese).

Hideki Yasukawa, Hiroshi Tsuda, and Kazumasa Yokota,
Object, Properties, and Modules in QUIXOTE,
Proc. of FGCS92, pp257--268, 1992.

[System Configuration]
Quixote Ver.III consists of 
(1) Quixote client on UNIX with C, X-Window(X11R5), and GNU-Emacs, 
and
(2) Quixote server on PIM/PIMOS with KL1.
Both UNIX workstation (such as SS2) and PIM/PSI are required to run
this version of Quixote.

                     :   
     Quixote Client  :   Quixote Server
      (C,X,Emacs)    :     (KL1)
                     :
+-+                  :              +----+----+
|U|----Qmacs-----+   :              | QD | IP |
|S|     |         \  :              +----+----+
|E|----Wind        |=:===KL1/IF-----|   QC    | 
|R|     |         /  :       |      +---------+
| |----Qshell----+   :      PM
+-+         |        :        \
      [.src Library] :         \
                     :       (UNIX, Simpos, Kappa)
                     : 


[DIRECTORIES and FILES]
./
COPYRIGHT		IFS copyright file
COPYRIGHT.j			(in Japanese)
README			This file
README.j			(in Japanese)
INSTALL			Installation Guide
INSTALL.j			(in Japanese)
doc/
	dotsrc.tex	.src structure access function manual (in Japanese)
	datastruct.doc	internal data structure (in Japanese)
	intro.tex	Quixote introduction 
			(in Japanese, include quixote.tex and qxtv3.eps)
	qmacs.tex	Qmacs (Quixote Emacs) user's manual (in Japanese)
	qxtsyntax.doc	Quixote Ver.III Syntax
sample/
	cider.qxt	
	sumo.qxt	(in Japanese)
src/
       GNU/		(necessary GNU softwares)
	      alloca.c		--> QF/qshell/lib
              flex-2.3.7/	--> QF/
              readline/		--> QF/qshell
       QC/		(Quixote Constraint handler)
              cs/	(constraint solver)
              sd/	(solution description handler)
       QD/		(Quixote Data manager)
              dp/	(dispatcher)
              pc/	(program converter)
              qd2/
              rt/	(rule translator)
              spm/	(spy manager)
              um/	(update manager)
       QE/		(Quixote Execution)
              ip/	(interpreter)
       QF/		(Quixote interFace)
              config/
              control-d/
              dotsrc/
              emacs/
              flex-2.3.7/
	      parser/
	      pm_server/
	      qshell/	(Quixote shell)
			db/
			lib/
			shell/
			is/
			readline/
			ss/
			ts/
			term/
	      xanswer/
	      xlattice/
	      xmodule/
       QS/		(Quixote Server)
	      esp/
	      henkan/	(data conversion)
	      kl1IF/
	      pm/	(persistent manager)
	      server/
       tools/

[SOURCE FILES]
===================== tools
src/tools/		COMMON TOOLS
h3Common.kl1	henkan (conversion) common routine
reverseH.kl1	reverse converter routine
srcsp.kl1	dotsrc format common routine

===================== QS (Quixote Server) ===========
src/QS/henkan/		CONVERSION 4
qxtqf_mv3.kl1	henkan (conversion) process phrase 4

src/QS/server/		QUIXOTE SERVER
qifServer.kl1	Quixote server
termTable.kl1	communication table of term level protocol

src/QS/kl1IF/		KL1 INTERFACE
qxtIF.kl1       KL1 interface process
qxtQFCM.kl1     CM process
qxtQFMCM.kl1    multi CM process
qxtQFMCMt.kl1   CM process table
qxtQFQS.kl1     QS process
qxtQFQSdb.kl1   QS database management
qxtQFQSdbin.kl1 QS database initialization
qxtQFQSuser.kl1 QS user management
qxtQFSV.kl1     SV process
qxtQFSVcopy.kl1 data copy routine of SV
qxtQFSVdb.kl1   .src management of SV
qxtQFtrace.kl1  treatment of trace command 

src/QS/pm/		PERSISTENT MANAGER
pm_client.kl1	PM client
pm.kl1		persistent manager$B!J(Bmain routine)
pm_simkap.kl1	persistent manager$B!J(Bsimpos, kappa IF routine)
pm.mac		Macro command definition for PM (main routine)
pm_io.esp	persistent manager (low level IF routine with KL1)
pm_if.esp	persistent manager (logical command IF routine with KL1)
pm.esp		persistent manager (main routine)
pm_simIF.esp	PM (Interface routine for SIMPOS file system)
pm_kapIF.esp	PM (Interface routine for Kappa database)
kapIFmac.esp	PM (Macro command definition for KappaIF)

===================== QD (Quixote Data Manager) ===========
src/QD/rt/		RULE TRANSLATOR
qdrt.mac     	RT macro
qdrt.kl1     	rule translation main routine
qdrtself.kl1  	evaluate 'self' module 
qdrtsat.kl1   	evaluate submodule relation
qdrtmkixt.kl1 	create module index table and rule index table
qdmkrule.kl1  	create rule table
qdrttrans.kl1 	rule translation (normalize etc.)
qdrtrev.kl1   	reverse rule translation
qdrttool.kl1  	RT tool routine
qxtQD_DAG.kl1 	create DAG routine

src/QD/spm/		SPY MANAGER
SPYmacro.mac	macro for compiling spy manager
qxtqd_spm.kl1	spy manager
qxtqd_spyeq.kl1	check equality between object terms in sources

src/QD/qd2/		QUIXOTE DATA MANAGER 
GR.kl1		get rules from the rule table
qxtQD_LM3n.kl1 	lattice manager
qxtidm.kl1	ID manager process

src/QD/um/		UPDATE MANAGER
UM.kl1		update manager
UMbox.kl1	subroutines for manipulating update data
UMtable.kl1	pool for updated data
UMtool.kl1	tools for update
UMupdt.kl1	main programs for update

src/QD/pc/		PROGRAM CONVERTER
henkan3.kl1     henkan (conversion) phase 3 process
henkan4.kl1	henkan (conversion) phase 4 routine
henkanobj.kl1   term conversion process
henkanrule.kl1  rule conversion process
qxtqd_pc.kl1	program conversion process
subroutine.kl1  section conversion routine

src/QD/dp/		DISPATCHER
qxtQD.kl1	Quixote$B!!(Bdata manager(QD) $B!J(Bmain routine$B!K(B
qxtQD_DP.kl1	Dispatcher for QD
qxtQD_ptm.kl1	QD program table manager
qxtQD_DP.mac	Macro command definition for QD	

===================== QC (Quixote Constraint handler) ===========
src/QC/cs/cs		CONSTRAINT SOLVER
CSlib.doc	documentation (in Japanese)
qunify.kl1	term unifier
qoneway.kl1	term one-way unification
qequal.kl1	term equality
qshallow.kl1	term dereference
qgc.kl1		Garbage Collection of variable environments
qrename.kl1	term renaming
qmeet.kl1	meet between ground terms
qjoin.kl1	join between ground terms
qsubsume.kl1	subsumption between ground terms
qset.kl1	subroutines for set constraints
qcs.kl1		constraint solver
qpool.kl1	constraint pool (subprocess of constraint solver)
qnorm.kl1	initial constraint solver (normalization)
qxtdata.kl1	hasher and sorter for Quixote terms
qtool.kl1	common tools for constraint solver

src/QC/sd/		SOLUTION DESCRIPTION HANDLER
RM.kl1		rule manager for QE
RMinh.kl11	get inherit rules
RMtool.kl1	tools for rules
SD.kl1		top module for SD
SDadd.kl1	subroutines for adding dot terms into SD
SDgc.kl1	garbage collection of SD
SDinc.kl1	check inclusion relation of dot constraints
SDinc2.kl1	check inclusion relation of dot constraints
SDinh.kl1	subroutines for applying inheritance relations
SDlucp.kl1	copy SD for lookup process
SDmerge.kl1	merge SD
SDren.kl1	rename terms with new variables
SDsbsm.kl1	check subsumption relations between SD
SDshllw.kl1	subroutines for shallowing SD
SDsol.kl1	take up solutions from SD
SDtool.kl1	tools for SD
SDtools2.kl1	tools for SD
SDupdt.kl1	add update information into SD

===================== QE (Quixote Execution) ===========
src/QE/ip/		INTERPRETER
IPmacro.mac	macro file for commonly used data structure in interpreter
QEmacro.mac	macro file for commonly used data structure in QE
TRCmacro.mac	macro file for compiling tracer
debug.h		header file for debug flag
qxtqe_adc.kl1	aggregating of dot constraint
qxtqe_ah.kl1	applying head dot constraint
qxtqe_dl.kl1	delay: main routine
qxtqe_dlom.kl1	delay: or merge routine
qxtqe_eb.kl1	evaluating body dot constraint
qxtqe_ih.kl1	inheritance
qxtqe_ip.kl1	interpreter: main routine
qxtqe_iptool.kl1	tool routines commonly used in interpreter
qxtqe_lk.kl1	lookup: main routine
qxtqe_lkdata.kl1	lookup: comparing solutions
qxtqe_rn.kl1	rule node: main routine
qxtqe_rndata.kl1	rule node: subroutine
qxtqe_sdif.kl1	interface routine for SD predicates
qxtqe_sm.kl1	solution manager
qxtqe_sn.kl1	subgoal node
qxtqe_so.kl1	solution structure
qxtqe_tp.kl1	QE main routine
qxtqe_gim.kl1	management of sequence ID 
qxtqe_ins.kl1	inspector 
qxtqe_trc.kl1	top module of tracer
qxtqe_trceq.kl1	judgment of equality between object terms
qxtqe_trclp.kl1	loop for trace command
qxtqe_trctl.kl1	tracer's tool
qxtqe_bc.kl1	bound check of solutions
qxtqe_om.kl1	top-level interface of solution merger
qxtqe_omc.kl1	common subroutines for solution merger
qxtqe_omd.kl1	routines processing non-ground solutions
qxtqe_omn.kl1	routines processing ground solutions
qxtqe_omx.kl1	interface routines for external modules
qxtqe_tr.kl1	transaction controller processing
qxtqe_ud.kl1	update controller top-level interface
qxtqe_udc.kl1	common subroutines for update processing
qxtqe_udm.kl1	interface routines for solution merger
qxtqe_udn.kl1	routines processing ground update controllers
qxtqe_udp.kl1	routines processing non-ground update controllers
qxtqe_udx.kl1	interface routines for external modules

================= QF (Quixote Interface) ==========
src/QF/parser/		PARSER
parse.c		conversion routine from Quixote text to dotsrc format
unparse.c	conversion routine from dotsrc format to term string
answer.c	conversion routine from answer term string to dotsrc format
pprint.c	conversion routine from dotsrc format to text format
qxt2term.c	conversion program from Quixote text to term string
term2qxt.c	conversion program from answer term string to text format
pp.c		pretty-print Quixote text
cmmn.c		print intermediate data
rule_l.l	lexical analyzer for Quixote program and query
term_l.l	lexical analyzer for term string
rule_y.y	parser for Quixote program and query
answer_y.y	parser for term string answer

src/QF/dotsrc/		DOTSRC STRUCTURE HANDLER
README		read me
common.c	commonly used subroutines
common.h	header file for commonly used subroutines
dotsrc1.c	.src library source file (part I)
ex1.h		external reference file (part I)
hash.c		hash library
hash.h		header file for hash library
idm1.h		header file for identification macro
mdebug.h	header file for memory allocation macro
rm1.h		header file for reading macros
test1.c		functional test (part I)
test1.h		header file for functional test (part I)
test_f.c	functional test: main routine
test_h.c	header file test
wm1.h		header file for write macros

src/QF/pm_server/	PERSISTENT MANAGER SERVER
pm_server.c	main program
pm.c		child process, calls the command processing function
get_command.c	function to search the command string
pmtool.c	utility functions
pmdata.c	data definitions
c_check.c	function to execute the check command
c_createpm.c	function to execute the create_PM command
c_endpm.c	function to execute the end_PM command
c_getdb.c	function to execute the get_DB command
c_getlver.c	function to execute the get_lsat_version command
c_gettxtdb.c	function to execute the get_text_DB command
c_ls.c		function to execute the ls command
c_lsl.c		function to execute the ls_l command
c_mkdir.c	function to execute the mkdir command
c_purge.c	function to execute the purge command
c_putdb.c	function to execute the put_DB command
c_putdbq.c	function to execute the put_DB_with_qxt command
c_reset.c	function to execute the reset command
c_rm.c		function to execute the rm command
c_rmall.c	function to execute the rm_all command
c_rmdir.c	function to execute the rmdir command
c_updatedb.c	function to execute the update_DB command
diropr.c	functions to execute the UNIX commands
fileopr.c	functions to read/write files
stropr.c	functions to search strings
stropr2.c	functions to search strings, the other

----------------
[A] Qmacs
src/QF/emacs/		QUIXOTE EMACS
ChangeLog	Change Log file
Imakefile	Imakefile (to be used by imake)
Makefile	Makefile generated from Imakefile
Makefile.n	makefile (when you don't have imake)
README		How to use Qmacs
TAGS		Tag file for Emacs
qxt-mode.elc	qxt-mode.el compiled version
qxt-all.elc	qxt-all.el compiled version

comm.el		Communication(QIF protocol)
databases.el	Database Session Commands
interact.el	Interactive Execution
lex.el		Quixote Program Lexical Analyzer
parse.el	Quixote Program Parser
qshell.el	Batch Processing Function
qxt-all.el	all = comm.el + databases.el + interact.el +
			lex.el + parse.el + qshell.el + result.el +
			server-s.el + table.el + trace-s.el
qxt-mode.el	Quixote mode
result.el	Result Dispatcher
server-s.el	Server Session Commands
table.el	Miscellaneous Tables used in interact.el
trace-s.el	Trace Session Commands

[B] Qshell
  (Except GNU readline library and GNU alloca)
src/QF/qshell/		QUIXOTE SHELL
Imakefile       Imakefile (to be used by imake)

src/QF/qshell/shell/          shell interpreter
  Imakefile     Imakefile (to be used by imake)
  metacommand.c meta-command routines
  parse.y       command line parser
  qshell.c      main routine
  qshell.h      definition header file for shell
  read_config.c configuration reader

src/QF/qshell/lib/
  Imakefile     Imakefile (to be used by imake)
  alloc.c       memory allocation
  alloca.c      GNU alloca (alloca is needed for ME, I guess Sun also)
  error.c       error handling routine
  kl1term.c     Term output routine
  qio.c         QIF protocol input/output
  qxt.h         definition header file for Quixote library
  read_stream.c stream input/output
  use_alloca.c  wrapper for alloc.c

src/QF/qshell/readline/
  GNU readline library here.

src/QF/qshell/ss/
  Imakefile     Imakefile (to be used by imake)
  qsh.conf      server session configuration file
  cd.c          cd command
  crd.c         create-database command
  ls.c          ls command
  mkdir.c       mkdir command
  open.c        open command
  pwd.c         pwd command
  rmdir.c       rmdir command
  show_status.c show-status command

src/QF/qshell/db/
  Imakefile     Imakefile (to be used by imake)
  qsh.conf      database session configuration file
  cld.c         close-database command
  delete_db.c   delete-database command
  query.c       query command

src/QF/qshell/is/
  Imakefile     Imakefile (to be used by imake)
  qsh.conf      inspect session configuration file

src/QF/qshell/ts/
  Imakefile     Imakefile (to be used by imake)
  qsh.conf      trace session configuration file

[C] control-d
src/QF/control-d/	
Imakefile	Imakefile (to be used by imake)
Makefile.n	makefile (when you don't have imake)
control-d.pl	Command which close standard output when it read
		Control-d (in Perl).  Used in Qmacs.
-------------
src/QF/term/		TERM TRANSLATION
term2lisp.c	translate KL1 term to LISP S-expression
term.c		utility functions for term
term.h		header file of term.c
term_yacc.y	syntax analysis of term
term_lex.l	lexical analysis of term

---------------
src/QF/xlattice/	LATTICE WINDOW
Imakefile       Imakefile
Lattice.c       Lattice Widget source program
Lattice.h       Lattice Widget global header file
LatticeP.h      Lattice Widget private header file
lattice.h       data structure definition
gram.y          parser for input data (Yacc)
lex.l           parser for input data (Lex)
main.c          main routine
lattice.c       user interface for main window
search.c        user interface for search window
subsum.c        construct internal data structure
Quixote.ad      X resources for Lattice Window program

src/QF/xmodule/		MODULE HIERARCHY WINDOW
Imakefile       Imakefile
Module.c        Module Widget source program
Module.h        Module Widget global header file
ModuleP.h       Module Widget private header file
module.h        data structure definition
gram.y          parser for input data (Yacc)
lex.l           parser for input data (Lex)
main.c          main routine
module.c        user interface for main window
search.c        user interface for search window
data.c          construct internal data structure
rule.c		user interface for rule window
Quixote.ad      X resources for Module Window program
src/QF/xanswer/		answer window
Imakefile       Imakefile
term.h		data structure definition
term_yacc.h	data structure definition (Yacc)
explanation.h   constant definition
term_yacc.y     parser for input data (Yacc)
term_lex.l      parser for input data (Lex)
term.c	        parser for input data
answer.c        main routine
xanswer.c       user interface for answer window
explanation.c	explanation tree
xexplanation.c	user interface fore xplanation window

[HISTORY]
1992.9  Tentative Version release
1993.7	Ver.III release
