This was done by Bob Boyer @ SRI

DUMPING MASTERSCOPE'S KNOWLEDGE

To obtain a file containing a complete dumping of all of Masterscope's
information about a selected set of atoms and a selected set of 
Masterscope relations, one may use the function tellabout,
or the simpler tellabouteveryone, or the simple basistellabout.



tellabout[subjects; universe; omitquestions; dumpfile]
	subjects is a list of atoms about which information is
	desired.  universe is a list of those atoms which
	will be printed when related to a subject. 
	omitquestions is a list of positive integers, the numbers
	of questions that are not to be asked.  dumpfile is
	the file to which output is to be directed.  For each
	subject in subjects (in alphbetical order) there will be
	printed an entry that contains for every question produced
	by ennumeratequestions excepting those on omitquestions
	all of the members of the universe which make the question
	true when subject is substituted for * in the question and
	the member of the universe is substituted for Who or Whom.
	tellabout assumes that Masterscope has previously been invoked
	to ANALYZE those functions which are the source of
	the desired information.  At the end of the file,
	tellabout prints the questions asked and the universe.
	dumpfile is both opened and closed.



ennumeratequestions[] 
	prints to the terminal a list of questions, each prefixed
	by an integer.  The questions exhaust the list of simple
	relations that Masterscope stores.  Many of the questions
	are overlapping.  For example, the question Who smashes X?
	is answered by the union of the answers to Who smashes
	X locally, globally, and freely?  The details of
	overlapping may be gleaned from the manual section on RELATIONS 
	or precisely determined by inspection of the list
	msdatabaselst.

	Currently, ennumeratequestions prints:
	 1.  Whom does * bind?
	 2.  Whom does * bind locally?
	 3.  Whom does * bind as an argument?
	 4.  Whom does * call?
	 5.  Whom does * use?
	 6.  Whom does * use freely?
	 7.  Whom does * use locally?
	 8.  Whom does * use globally?
	 9.  Whom does * use as a record?
	10.  Whom does * use as a field?
	11.  Whom does * use as a property?
	12.  Whom does * use as a Clisp I.S.operator?
	13.  Whom does * set?
	14.  Whom does * set freely?
	15.  Whom does * set locally?
	16.  Whom does * set globally?
	17.  Whom does * smash?
	18.  Whom does * smash freely?
	19.  Whom does * smash locally?
	20.  Whom does * smash globally?
	21.  Whom does * test?
	22.  Whom does * test freely?
	23.  Whom does * test locally?
	24.  Whom does * test globally?
	25.  Whom does * reference?
	26.  Whom does * reference freely?
	27.  Whom does * reference locally?
	28.  Whom does * reference globally?
	29.  Who binds *?
	30.  Who binds * locally?
	31.  Who binds * as an argument?
	32.  Who calls *?
	33.  Who uses *?
	34.  Who uses * freely?
	35.  Who uses * locally?
	36.  Who uses * globally?
	37.  Who uses * as a record?
	38.  Who uses * as a field?
	39.  Who uses * as a property?
	40.  Who uses * as a Clisp I.S.operator?
	41.  Who sets *?
	42.  Who sets * freely?
	43.  Who sets * locally?
	44.  Who sets * globally?
	45.  Who smashs *?
	46.  Who smashs * freely?
	47.  Who smashs * locally?
	48.  Who smashs * globally?
	49.  Who tests *?
	50.  Who tests * freely?
	51.  Who tests * locally?
	52.  Who tests * globally?
	53.  Who references *?
	54.  Who references * freely?
	55.  Who references * locally?
	56.  Who references * globally?

reasonableomissions
	the variable reasonableomissions contains the numbers of
	many questions whose answers are supersets of 
	simpler questions.  The only information lost by omission of
	these questions concerns the use of I.S.OPR's.

everyone[]
	returns with a list of everything that Masterscope has seen
	excepting system functions and I.S.OPRS.  In particular,
	it returns the result of appending the answers to the
	Masterscope questions:
	1.  WHO IS KNOWN?
	2.  WHO IS USED?
	3.  WHO IS USED AS A PROPERTY?
	4.  WHO IS USED AS A FIELD?
	5.  WHO IS USED AS A RECORD?


tellabouteveryone[omitquestions, dumpfile]
	calls tellabout[everyone[], everyone[], dumpfile].


basistellabout[dumpfile]
	calls tellabouteveryone[reasonableomissions, dumpfile].
	If you have analyzed the functions that you are interested
	in, then basistellabout will produce an exhaustive
	but not overly redundant dump of all the simple
	relational information Masterscope has stored.
	A scenario for obtaining the information that
	Masterscope can extract from a system built from
	the files (FILE1 FILE2 FILE3) would then be
	MASTERSCOPE((ANALYZE ANY CONTAINED IN '(FILE1 FILE2 FILE3)))
	BASISTELLABOUT(FILE1-FILE2-FILE3.DUMP)
	If Masterscope has previously analyzed
	functions from other files which one does not want
	included in the dump, he should first call
	MASTERSCOPE((ERASE)).