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)).