axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] 20090304.01.tpd.patch (bookvol5 add user level command


From: daly
Subject: [Axiom-developer] 20090304.01.tpd.patch (bookvol5 add user level command roots)
Date: Thu, 5 Mar 2009 05:39:41 -0600

The root code for the zsystemdevelopment, workfiles, with, and what commands
were moved to bookvol5. These multiple roots will be used to tree-shake
the rest of the system for live code.

Tim.
===========================================================================
diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index 5f323e0..33d51d4 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -3678,7 +3678,7 @@ difference(getDomains 'IndexedAggregate,getDomains 
'Collection)
 --R ApplicationProgramInterface  is a package constructor
 --R Abbreviation for ApplicationProgramInterface is API 
 --R This constructor is exposed in this frame.
---R Issue )edit bookvol10.4.pamphlet to see algebra source code for API 
+--R Issue )edit bookvol10.4.spad.pamphlet to see algebra source code for API 
 --R
 --R------------------------------- Operations --------------------------------
 --R getDomains : Symbol -> Set Symbol    
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index c2c2f17..2b28252 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -1543,6 +1543,42 @@ system function and constructor caches.
 \cmdhead{close}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+\par\noindent{\bf User Level Required:} interpreter
+
+\par\noindent{\bf Command Syntax:}
+\begin{list}{}
+\item{\tt )close}
+\item{\tt )close )quietly}
+\end{list}
+\par\noindent{\bf Command Description:}
+
+This command is used to close down interpreter client processes.
+Such processes are started by HyperDoc to run Axiom examples
+when you click on their text. When you have finished examining or modifying the
+example and you do not want the extra window around anymore, issue
+\begin{verbatim}
+)close
+\end{verbatim}
+to the Axiom prompt in the window.
+
+If you try to close down the last remaining interpreter client
+process, Axiom will offer to close down the entire Axiom
+session and return you to the operating system by displaying something
+like
+\begin{verbatim}
+   This is the last AXIOM session. Do you want to kill AXIOM?
+\end{verbatim}
+Type ``{\tt y}'' (followed by the Return key) if this is what you had in mind.
+Type ``{\tt n}'' (followed by the Return key) to cancel the command.
+
+You can use the {\tt )quietly} option to force Axiom to
+close down the interpreter client process without closing down
+the entire Axiom session.
+
+\par\noindent{\bf Also See:}
+\fnref{quit} and 
+\fnref{pquit}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \cmdhead{compiler}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -2243,7 +2279,6 @@ next brace but the problem does not arise in practice.
 \cmdhead{edit}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-
 \par\noindent{\bf User Level Required:} interpreter
 
 \par\noindent{\bf Command Syntax:}
@@ -5970,7 +6005,6 @@ executed when you press, say, a function key.
 \cmdhead{read}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-
 \par\noindent{\bf User Level Required:} interpreter
 
 \par\noindent{\bf Command Syntax:}
@@ -6010,6 +6044,35 @@ The {\tt )quiet} option suppresses output while the file 
is being read.
 \cmdhead{savesystem}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+\par\noindent{\bf User Level Required:} interpreter 
+ 
+\par\noindent{\bf Command Syntax:}
+\begin{list}{}
+\item {\tt )savesystem filename}
+\end{list}
+\par\noindent{\bf Command Description:} 
+ 
+This command is used to save an AXIOM image to disk.  This creates an
+executable file which, when started, has everything loaded into it
+that was there when the image was saved.  Thus, after executing commands
+which cause the loading of some packages, the command:
+ 
+\begin{verbatim}
+)savesystem /tmp/savesys
+\end{verbatim}
+
+will create an image that can be restarted  with the UNIX command:
+
+\begin{verbatim}
+axiom -ws /tmp/savesys
+\end{verbatim}
+
+This new system will not need to reload the packages and domains that
+were already loaded when the system was saved.
+
+There is currently a restriction that only systems started with the 
+command "AXIOMsys" may be saved.
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \cmdhead{set}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -6705,11 +6768,11 @@ undo(l) ==
                  (eq (qcdr tmp1) nil)
                  (progn (spadlet key (qcar tmp1)) t)))
        (cond
-        ((|stringPrefix?| (spadlet s (pname key)) (makestring "redo"))
+        ((|stringPrefix?| (spadlet s (pname key)) "redo")
           (spadlet |$options| nil) 
           (|read| '(|redo.input|)))
-        ((null (|stringPrefix?| s (makestring "before")))
-          (|userError| (makestring "only option to undo is \")redo\"")))
+        ((null (|stringPrefix?| s "before"))
+          (|userError| "only option to undo is \")redo\""))
         (t 
           (spadlet undoWhen '|before|)))))
     (if (null l)
@@ -6719,7 +6782,7 @@ undo(l) ==
       (spadlet n (parse-integer (pname n)))
       (cond
        ((null (fixp n)) 
-         (|userError| (makestring "undo argument must be an integer")))
+         (|userError| "undo argument must be an integer"))
        (t 
          nil)))
     (spadlet |$InteractiveFrame| (|undoSteps| (|undoCount| n) undoWhen))
@@ -6978,7 +7041,7 @@ reportUndo acc ==
       (exit
        (progn
         (|sayBrightly|
-          (strconc '|Properties of | (pname name) (makestring " ::")))
+          (strconc '|Properties of | (pname name) " ::"))
         (spadlet curproplist (lassoc name (caar |$InteractiveFrame|)))
         (do ((tmp2 proplist (cdr tmp2)) (tmp3 nil))
             ((or (atom tmp2) 
@@ -6994,14 +7057,10 @@ reportUndo acc ==
           (exit
            (progn
             (|sayBrightlyNT|
-             (cons
-              (makestring "  ")
-              (cons prop (cons (makestring " was: ") nil))))
+             (cons "  " (cons prop (cons " was: " nil))))
             (|pp| value)
             (|sayBrightlyNT| 
-             (cons 
-              (makestring "  ") 
-              (cons prop (cons (makestring " is:  ") nil))))
+             (cons "  " (cons prop (cons " is:  " nil))))
             (|pp| (lassoc prop curproplist)))))))))))))) 
 
 @
@@ -7045,10 +7104,8 @@ undoCount(n) ==  --computes the number of undo's, given 
$IOindex
     (cond
      ((>= m |$IOindex|)
        (|userError| 
-        (strconc
-         (makestring 
-           "Magnitude of undo argument must be less than step number (")
-           (stringimage |$IOindex|) (makestring ")."))))
+        (strconc "Magnitude of undo argument must be less than step number ("
+           (stringimage |$IOindex|) ").")))
      (t m)))))) 
 
 @
@@ -7304,7 +7361,7 @@ removeUndoLines u == --called by writeInputLines
          (seq
           (exit
            (cond
-            ((null (|stringPrefix?| (makestring ")history") x))
+            ((null (|stringPrefix?| ")history" x))
               (setq tmp0 (cons x tmp0))))))))))
      (spadlet u (append u xtra))
      (cond
@@ -7317,7 +7374,7 @@ removeUndoLines u == --called by writeInputLines
            (seq
             (exit
              (setq tmp2 
-               (or tmp2 (|stringPrefix?| (makestring ")undo") x))))))))) u)
+               (or tmp2 (|stringPrefix?| ")undo" x))))))))) u)
       (t
         (spadlet savedIOindex |$IOindex|)
         (spadlet |$IOindex| 1)
@@ -7328,11 +7385,11 @@ removeUndoLines u == --called by writeInputLines
            (cond
             ((boot-equal (elt (spadlet x (car y)) 0) (|char| '|)|))
               (cond
-               ((|stringPrefix?| (makestring ")undo") 
+               ((|stringPrefix?| ")undo"
                                  (spadlet s (|trimString| x)))
                 (spadlet s1 (|trimString| (substring s 5 nil)))
                 (cond
-                  ((nequal s1 (makestring ")redo"))
+                  ((nequal s1 ")redo")
                     (spadlet m (|charPosition| (|char| '|)|) s1 0))
                     (spadlet code
                      (cond
@@ -7341,13 +7398,13 @@ removeUndoLines u == --called by writeInputLines
                     (spadlet s2 (|trimString| (substring s1 0 m)))))
                 (spadlet n
                  (cond
-                  ((boot-equal s1 (makestring ")redo"))
+                  ((boot-equal s1 ")redo")
                      0)
-                  ((nequal s2 (makestring ""))
+                  ((nequal s2 "")
                     (|undoCount| (parse-integer s2)))
                   (t (spaddifference 1))))
                 (rplaca y
-                  (concat (makestring ">") code (stringimage n))))
+                  (concat ">" code (stringimage n))))
                (t nil)))
             (t (spadlet |$IOindex| (plus |$IOindex| 1)))))))
         (spadlet acc nil)
@@ -7380,7 +7437,7 @@ removeUndoLines u == --called by writeInputLines
                  (spadlet acc (cons c acc)))))
             (t (spadlet acc (cons x acc)))))))
         (spadlet |$IOindex| savedIOindex)
-        acc))))))) 
+        acc)))))))
 
 @
 
@@ -7478,18 +7535,514 @@ The command synonym  {\tt )apropos} is equivalent to
 \fnref{set}, and
 \fnref{show}
 
+\begin{verbatim}
+what l == whatSpad2Cmd l
+\end{verbatim}
+<<defun what>>=
+(defun |what| (l)
+ (|whatSpad2Cmd| l)) 
+
+@
+
+\begin{verbatim}
+whatSpad2Cmd l ==
+  $e:local := $EmptyEnvironment
+  null l => reportWhatOptions()
+  [key0,:args] := l
+  key := selectOptionLC(key0,$whatOptions,nil)
+  null key => sayKeyedMsg("S2IZ0043",NIL)
+  args := [fixpat p for p in args] where
+    fixpat x ==
+      x is [x',:.] => DOWNCASE x'
+      DOWNCASE x
+  key = 'things =>
+    for opt in $whatOptions repeat
+      not MEMQ(opt,'(things)) => whatSpad2Cmd [opt,:args]
+  key = 'categories =>
+    filterAndFormatConstructors('category,'"Categories",args)
+  key = 'commands =>
+    whatCommands(args)
+  key = 'domains =>
+    filterAndFormatConstructors('domain,'"Domains",args)
+  key = 'operations =>
+    apropos args
+  key = 'packages =>
+    filterAndFormatConstructors('package,'"Packages",args)
+  key = 'synonyms =>
+    printSynonyms(args)
+\end{verbatim}
+
+<<defun whatSpad2Cmd,fixpat>>=
+(defun |whatSpad2Cmd,fixpat| (|x|)
+ (prog (|x'|)
+  (return
+   (seq
+    (if (and (pairp |x|) (progn (spadlet |x'| (qcar |x|)) t))
+      (exit (downcase |x'|)))
+    (exit (downcase |x|)))))) 
+
+@
+<<defun whatSpad2Cmd>>=
+(defun |whatSpad2Cmd| (|l|)
+ (prog (|$e| |key0| |key| |args|)
+  (declare (special |$e|))
+  (return
+   (seq
+    (progn
+     (spadlet |$e| |$EmptyEnvironment|)
+     (cond
+      ((null |l|) (|reportWhatOptions|))
+      (t
+        (spadlet |key0| (car |l|))
+        (spadlet |args| (cdr |l|))
+        (spadlet |key| (|selectOptionLC| |key0| |$whatOptions| nil))
+        (cond
+         ((null |key|) (|sayKeyedMsg| 's2iz0043 nil))
+         (t
+          (spadlet |args|
+           (prog (t0)
+            (spadlet t0 nil)
+            (return
+              (do ((t1 |args| (cdr t1)) (|p| nil))
+                  ((or (atom t1)
+                       (progn (setq |p| (car t1)) nil))
+                 (nreverse0 t0))
+               (seq
+                (exit
+                 (setq t0 (cons (|whatSpad2Cmd,fixpat| |p|) t0))))))))
+          (seq
+           (cond
+            ((boot-equal |key| '|things|)
+              (do ((t2 |$whatOptions| (cdr t2)) (|opt| nil))
+                  ((or (atom t2) (progn (setq |opt| (CAR t2)) nil)) nil)
+               (seq
+                (exit
+                 (cond
+                  ((null (memq |opt| '(|things|)))
+                    (exit (|whatSpad2Cmd| (cons |opt| |args|)))))))))
+            ((boot-equal |key| '|categories|)
+              (|filterAndFormatConstructors| '|category| "Categories" |args|))
+            ((boot-equal |key| '|commands|) (|whatCommands| |args|))
+            ((boot-equal |key| '|domains|)
+              (|filterAndFormatConstructors| '|domain| "Domains" |args|))
+            ((boot-equal |key| '|operations|)
+               (|apropos| |args|))
+            ((boot-equal |key| '|packages|)
+              (|filterAndFormatConstructors| '|package| "Packages" |args|))
+            (t
+             (cond ((boot-equal |key| '|synonyms|)
+                      (|printSynonyms| |args|))))))))))))))) 
+
+@
+\begin{verbatim}
+filterAndFormatConstructors(constrType,label,patterns) ==
+  centerAndHighlight(label,$LINELENGTH,specialChar 'hbar)
+  l := filterListOfStringsWithFn(patterns,whatConstructors constrType,
+        function CDR)
+  if patterns then
+    null l =>
+      sayMessage ['"   No ",label,'" with names matching patterns:",
+        '%l,'"   ",'%b,:blankList patterns,'%d]
+    sayMessage [label,'" with names matching patterns:",
+      '%l,'"   ",'%b,:blankList patterns,'%d]
+  l => pp2Cols l
+\end{verbatim}
+
+<<defun filterAndFormatConstructors>>=
+(defun |filterAndFormatConstructors| (|constrType| |label| |patterns|)
+ (prog (|l|)
+  (return
+   (progn (|centerAndHighlight| |label| $linelength 
+           (|specialChar| '|hbar|))
+    (spadlet |l|
+     (|filterListOfStringsWithFn| |patterns|
+       (|whatConstructors| |constrType|)
+       (|function| cdr)))
+    (cond (|patterns|
+     (cond
+      ((null |l|)
+       (|sayMessage|
+        (cons "   No "
+         (cons |label|
+          (cons " with names matching patterns:"
+           (cons '|%l|
+            (cons "   "
+             (cons '|%b|
+              (append (|blankList| |patterns|)
+               (cons '|%d| nil))))))))))
+      (t
+        (|sayMessage|
+         (cons |label|
+          (cons " with names matching patterns:"
+           (cons '|%l|
+            (cons "   "
+             (cons '|%b|
+              (append (|blankList| |patterns|)
+               (cons '|%d| nil))))))))))))
+    (cond (|l| (|pp2Cols| |l|)))))))
+
+@ 
+
+\begin{verbatim}
+whatConstructors constrType ==
+  -- here constrType should be one of 'category, 'domain, 'package
+  MSORT [CONS(GETDATABASE(con,'ABBREVIATION), STRING(con))
+    for con in allConstructors()
+      | GETDATABASE(con,'CONSTRUCTORKIND) = constrType]
+\end{verbatim}
+
+<<defun whatConstructors>>=
+(defun |whatConstructors| (|constrType|)
+ (prog nil
+  (return 
+   (seq
+    (msort
+     (prog (t0)
+      (spadlet t0 nil)
+      (return
+       (do ((t1 (|allConstructors|) (cdr t1)) (|con| nil))
+           ((or (atom t1) (progn (setq |con| (car t1)) nil)) (nreverse0 t0))
+        (seq
+         (exit
+          (cond
+           ((boot-equal (getdatabase |con| 'constructorkind)
+                        |constrType|)
+             (setq t0
+              (cons
+               (cons
+                (getdatabase |con| 'abbreviation)
+                (string |con|))
+               t0)))))))))))))) 
+
+@
+\begin{verbatim}
+apropos l ==
+  -- l is a list of operation name fragments
+  -- this displays all operation names containing these fragments
+  ops :=
+    null l => allOperations()
+    filterListOfStrings([(DOWNCASE STRINGIMAGE p) for p in l],allOperations())
+  ops =>
+    sayMessage '"Operations whose names satisfy the above pattern(s):"
+    sayAsManyPerLineAsPossible MSORT ops
+    sayKeyedMsg("S2IF0011",[first ops])
+  sayMessage '"   There are no operations containing those patterns"
+  NIL
+\end{verbatim}
+
+<<defun apropos>>=
+(defun |apropos| (|l|)
+ (prog (|ops|)
+  (return
+   (seq
+    (progn
+     (spadlet |ops|
+      (cond 
+       ((null |l|) (|allOperations|))
+       (t
+         (|filterListOfStrings|
+          (prog (t0)
+           (spadlet t0 nil)
+           (return
+            (do ((t1 |l| (cdr t1)) (|p| nil))
+                ((or (atom t1) (progn (setq |p| (car t1)) nil))
+                  (nreverse0 t0))
+            (seq (exit (setq t0 (cons (downcase (stringimage |p|)) t0)))))))
+          (|allOperations|)))))
+     (cond
+      (|ops|
+       (|sayMessage| "Operations whose names satisfy the above pattern(s):")
+       (|sayAsManyPerLineAsPossible| (msort |ops|))
+       (|sayKeyedMsg| 's2if0011 (cons (car |ops|) nil)))
+      (t
+       (|sayMessage| "   There are no operations containing those patterns")
+       nil))))))) 
+
+@
+
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \cmdhead{with}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+; )library top level command  -- soon to be obsolete
+
+<<defun with>>=
+(defun |with| (args)
+ (|library| args))
+
+@
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \cmdhead{workfiles}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{verbatim}
+workfiles l == workfilesSpad2Cmd l
+\end{verbatim}
+<<defun workfiles>>=
+(defun |workfiles| (l)
+ (|workfilesSpad2Cmd| l)) 
+
+@
+\begin{verbatim}
+workfilesSpad2Cmd args ==
+  args => throwKeyedMsg("S2IZ0047",NIL)
+  deleteFlag := nil
+  for [type,:.] in $options repeat
+    type1 := selectOptionLC(type,'(boot lisp meta delete),nil)
+    null type1 => throwKeyedMsg("S2IZ0048",[type])
+    type1 = 'delete => deleteFlag := true
+  for [type,:flist] in $options repeat
+    type1 := selectOptionLC(type,'(boot lisp meta delete),nil)
+    type1 = 'delete => nil
+    for file in flist repeat
+      fl := pathname [file,type1,'"*"]
+      deleteFlag => SETQ($sourceFiles,DELETE(fl,$sourceFiles))
+      null (MAKE_-INPUT_-FILENAME fl) => sayKeyedMsg("S2IZ0035",[namestring 
fl])
+      updateSourceFiles fl
+  SAY " "
+  centerAndHighlight(" User-specified work files ",$LINELENGTH,specialChar 
'hbar)
+  SAY " "
+  null $sourceFiles => SAY '"   no files specified"
+  SETQ($sourceFiles,SORTBY('pathnameType,$sourceFiles))
+  for fl in $sourceFiles repeat sayBrightly ["   " ,namestring fl]
+\end{verbatim}
+<<defun workfilesSpad2Cmd>>=
+(defun |workfilesSpad2Cmd| (|args|)
+ (prog (|deleteFlag| |type| |flist| |type1| |fl|)
+  (return
+   (seq
+    (cond 
+     (|args| (|throwKeyedMsg| 's2iz0047 nil))
+     (t
+       (spadlet |deleteFlag| nil)
+       (do ((t0 |$options| (cdr t0)) (t1 nil))
+           ((or (atom t0)
+                (progn (setq t1 (car t0)) nil)
+                (progn (progn (spadlet |type| (car t1)) t1) nil))
+             nil)
+        (seq
+         (exit
+          (progn 
+           (spadlet |type1|
+            (|selectOptionLC| |type| '(|boot| |lisp| |meta| |delete|) nil))
+           (cond
+            ((null |type1|)
+              (|throwKeyedMsg| 's2iz0048 (cons |type| nil)))
+            ((boot-equal |type1| '|delete|)
+              (spadlet |deleteFlag| t)))))))
+       (do ((t2 |$options| (cdr t2)) (t3 NIL))
+           ((or (atom t2)
+            (progn (setq t3 (CAR t2)) nil)
+            (progn
+             (progn 
+              (spadlet |type| (car t3))
+              (spadlet |flist| (cdr t3)) t3)
+             nil))
+            nil)
+       (seq
+        (exit
+         (progn
+          (spadlet |type1|
+           (|selectOptionLC| |type| '(|boot| |lisp| |meta| |delete|) nil))
+          (cond
+           ((boot-equal |type1| '|delete|) nil)
+           (t
+            (do ((t4 |flist| (CDR t4)) (|file| nil))
+                ((or (atom t4) (progn (setq |file| (car t4)) nil)) nil)
+             (seq
+              (exit
+               (progn
+                (spadlet |fl|
+                 (|pathname|
+                  (cons |file| (cons |type1| (cons "*" nil)))))
+                (cond 
+                 (|deleteFlag|
+                  (setq |$sourceFiles| (|delete| |fl| |$sourceFiles|)))
+                 ((null (make-input-filename |fl|))
+                  (|sayKeyedMsg|
+                   's2iz0035 (cons (|namestring| |fl|) nil)))
+                 (t (|updateSourceFiles| |fl|)))))))))))))
+       (say " ")
+       (|centerAndHighlight|
+        '| User-specified work files |
+        $linelength
+        (|specialChar| '|hbar|))
+       (say " ")
+       (cond
+        ((null |$sourceFiles|)
+          (say "   no files specified"))
+        (t
+          (setq |$sourceFiles| (sortby '|pathnameType| |$sourceFiles|))
+          (do ((t5 |$sourceFiles| (cdr t5)) (|fl| nil))
+              ((or (atom t5) (progn (setq |fl| (car t5)) nil)) nil)
+           (seq
+            (exit
+             (|sayBrightly|
+               (cons "   " (cons (|namestring| |fl|) nil)))))))))))))) 
+
+@
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \cmdhead{zsystemdevelopment}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{verbatim}
+zsystemdevelopment l == zsystemDevelopmentSpad2Cmd l
+\end{verbatim}
+<<defun zsystemdevelopment>>=
+(defun |zsystemdevelopment| (|l|)
+ (|zsystemDevelopmentSpad2Cmd| |l|)) 
+
+@
+\begin{verbatim}
+zsystemDevelopmentSpad2Cmd l == zsystemdevelopment1 (l,$InteractiveMode)
+\end{verbatim}
+<<defun zsystemDevelopmentSpad2Cmd>>=
+(defun |zsystemDevelopmentSpad2Cmd| (|l|)
+ (|zsystemdevelopment1| |l| |$InteractiveMode|)) 
+
+@
+\begin{verbatim}
+zsystemdevelopment1(l,im) ==
+  $InteractiveMode : local := im
+  fromopt := nil
+  -- cycle through once to see if )from is mentioned
+  for [opt,:optargs] in $options repeat
+    opt1 := selectOptionLC(opt,'(from),nil)
+    opt1 = 'from => fromopt := [['FROM,:optargs]]
+  for [opt,:optargs] in $options repeat
+    if null optargs then optargs := l
+    newopt := APPEND(optargs,fromopt)
+    opt1 := selectOptionLC(opt,'(from),nil)
+    opt1 = 'from => nil
+    opt = "c"   => _/D_,1 (newopt ,_/COMP(),NIL,NIL)
+    opt = "d"   => _/D_,1 (newopt ,'DEFINE,NIL,NIL)
+    opt = "dt"  => _/D_,1 (newopt ,'DEFINE,NIL,true)
+    opt = "ct"  => _/D_,1 (newopt ,_/COMP(),NIL,true)
+    opt = "ctl"  => _/D_,1 (newopt ,_/COMP(),NIL,'TRACELET)
+    opt = "ec"  => _/D_,1 (newopt ,_/COMP(),true,NIL)
+    opt = "ect" => _/D_,1 (newopt ,_/COMP(),true,true)
+    opt = "e"   => _/D_,1 (newopt ,NIL,true,NIL)
+    opt = "version" => version()
+    opt = "pause" =>
+      conStream := DEFIOSTREAM ('((DEVICE . CONSOLE) (QUAL . V)),120,0)
+      NEXT conStream
+      SHUT conStream
+    opt = "update" or opt = "patch" =>
+      $InteractiveMode := nil
+      upf := [KAR optargs or _/VERSION, KADR optargs or _/WSNAME,
+              KADDR optargs or '_*]
+      fun := (opt = "patch" => '_/UPDATE_-LIB_-1; '_/UPDATE_-1)
+      CATCH('FILENAM, FUNCALL(fun, upf))
+      sayMessage '"   Update/patch is completed."
+    null optargs =>
+      sayBrightly ['"   An argument is required for",:bright opt]
+    sayMessage ['"   Unknown option:",:bright opt,"    ",'%l,
+      '"   Available options are", _
+      :bright '"c ct e ec ect cls pause update patch compare record"]
+\end{verbatim}
+<<defun zsystemdevelopment1>>=
+(defun |zsystemdevelopment1| (|l| |im|)
+ (prog (|$InteractiveMode| |fromopt| |opt| |optargs| |newopt| |opt1|
+        |conStream| |upf| |fun|)
+  (declare (special |$InteractiveMode|))
+  (return
+   (seq
+    (progn
+     (spadlet |$InteractiveMode| |im|)
+     (spadlet |fromopt| NIL)
+     (do ((t0 |$options| (cdr t0)) (t1 NIL))
+         ((or (atom t0)
+              (progn (setq t1 (car t0)) nil)
+              (progn
+               (progn
+                (spadlet |opt| (CAR t1))
+                (spadlet |optargs| (CDR t1))
+                t1)
+               nil))
+           nil)
+      (seq
+       (exit
+        (progn
+         (spadlet |opt1| (|selectOptionLC| |opt| '(|from|) nil))
+         (cond
+          ((boot-equal |opt1| '|from|)
+            (spadlet |fromopt| (cons (cons 'from |optargs|) nil))))))))
+     (do ((t2 |$options| (cdr t2)) (t3 NIL))
+         ((or (atom t2)
+              (progn (setq t3 (car t2)) nil)
+              (progn
+               (progn
+                (spadlet |opt| (car t3))
+                (spadlet |optargs| (cdr t3))
+                t3)
+               nil))
+          nil)
+      (seq
+       (exit
+        (progn
+         (cond ((null |optargs|) (spadlet |optargs| |l|)))
+         (spadlet |newopt| (append |optargs| |fromopt|))
+         (spadlet |opt1| (|selectOptionLC| |opt| '(|from|) nil))
+         (cond
+          ((boot-equal |opt1| '|from|)
+            nil)
+          ((boot-equal |opt| '|c|)
+            (|/D,1| |newopt| (/COMP) nil nil))
+          ((boot-equal |opt| '|d|)
+            (|/D,1| |newopt| 'define nil nil))
+          ((boot-equal |opt| '|dt|)
+            (|/D,1| |newopt| 'define nil t))
+          ((boot-equal |opt| '|ct|)
+            (|/D,1| |newopt| (/COMP) nil t))
+          ((boot-equal |opt| '|ctl|)
+            (|/D,1| |newopt| (/COMP) nil 'tracelet))
+          ((boot-equal |opt| '|ec|)
+            (|/D,1| |newopt| (/COMP) t nil))
+          ((boot-equal |opt| '|ect|)
+            (|/D,1| |newopt| (/COMP) t t))
+          ((boot-equal |opt| '|e|)
+            (|/D,1| |newopt| nil t nil))
+          ((boot-equal |opt| '|version|)
+            (|version|))
+          ((boot-equal |opt| '|pause|)
+            (spadlet |conStream|
+              (defiostream '((device . console) (qual . v)) 120 0))
+            (next |conStream|)
+            (shut |conStream|))
+          ((or 
+              (boot-equal |opt| '|update|)
+              (boot-equal |opt| '|patch|))
+            (spadlet |$InteractiveMode| nil)
+            (spadlet |upf|
+             (cons
+              (or (kar |optargs|) /version)
+              (cons
+               (or (kadr |optargs|) /wsname)
+               (cons (or (kaddr |optargs|) '*) nil))))
+            (spadlet |fun|
+             (cond
+              ((boot-equal |opt| '|patch|) '/update-lib-1)
+              (t '/update-1)))
+            (catch 'filenam (funcall |fun| |upf|))
+            (|sayMessage| "   Update/patch is completed."))
+          ((null |optargs|)
+           (|sayBrightly|
+            (cons
+             "   An argument is required for"
+             (|bright| |opt|))))
+          (t
+           (|sayMessage|
+            (cons
+             "   Unknown option:"
+             (append
+              (|bright| |opt|)
+              (cons '|    | (cons '|%l| (cons "   Available options are"
+                 (|bright|
+                   "c ct e ec ect cls pause update patch compare record")
+                )))))))))))))))))
 
+@
 \chapter{The Spad Server Mechanism}
 <<initvars>>=
 (defvar $openServerIfTrue t "t means try starting an open server")
@@ -7611,6 +8164,7 @@ load the file \verb|exposed.lsp| to set up the exposure 
group information.
 <<initvars>>
 
 <<defun addNewInterpreterFrame>>
+<<defun apropos>>
 
 <<defun browse>>
 
@@ -7636,6 +8190,7 @@ load the file \verb|exposed.lsp| to set up the exposure 
group information.
 <<defun emptyInterpreterFrame>>
 
 <<defun fetchOutput>>
+<<defun filterAndFormatConstructors>>
 <<defun findFrameInRing>>
 <<defun frame>>
 <<defun frameEnvironment>>
@@ -7744,6 +8299,13 @@ load the file \verb|exposed.lsp| to set up the exposure 
group information.
 <<defun updateHist>>
 <<defun updateInCoreHist>>
 
+<<defun what>>
+<<defun whatConstructors>>
+<<defun whatSpad2Cmd>>
+<<defun whatSpad2Cmd,fixpat>>
+<<defun with>>
+<<defun workfiles>>
+<<defun workfilesSpad2Cmd>>
 <<defun writify>>
 <<defun writify,writifyInner>>
 <<defun writifyComplain>>
@@ -7753,6 +8315,9 @@ load the file \verb|exposed.lsp| to set up the exposure 
group information.
 
 <<defun yesanswer>>
 
+<<defun zsystemdevelopment>>
+<<defun zsystemdevelopment1>>
+<<defun zsystemDevelopmentSpad2Cmd>>
 @
 \chapter{The Global Variables}
 \section{Star Global Variables}
diff --git a/changelog b/changelog
index 6d8ab58..eda3d93 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,11 @@
+20090304 tpd src/axiom-website/patches.html 20090304.01.tpd.patch
+20090304 tpd books/bookvol10.4 fix typo
+20090304 tpd books/bookvol5 add user level command roots
+20090304 tpd src/input/Makefile add unittest1
+20090304 tpd src/input/unittest1.input unit test axiom commands
+20090304 tpd src/interp/daase.lisp move commands to bookvol5
+20090304 tpd src/interp/i-syscmd.boot move commands to bookvol5
+20090303 tpd books/bookvol10.4 fix API failing regression test
 20090302 tpd src/axiom-website/patches.html 20090302.03.tpd.patch
 20090302 tpd src/algebra/Makefile add Nag help files
 20090302 tpd books/bookvol10.4 add Nag documentation
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 8ac75a0..18722ce 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -985,5 +985,7 @@ bookvol5 add user command documentation<br/>
 bookvol10.4 add API ApplicationProgramInterface<br/>
 <a href="patches/20090302.03.tpd.patch">20090302.03.tpd.patch</a>
 bookvol10.4 add Nag documentation<br/>
+<a href="patches/20090304.01.tpd.patch">20090304.01.tpd.patch</a>
+bookvol5 add user level command roots<br/>
  </body>
 </html>
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index f373c0f..57c7c6b 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -378,7 +378,8 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress 
alist.regress  \
     tanhcoth.regress  tanatan.regress  tbagg.regress    test.regress \
     textfile.regress  torus.regress \
     triglim.regress   tsetcatvermeer.regress            tutchap1.regress \
-    typetower.regress void.regress      uniseg.regress
+    typetower.regress void.regress      uniseg.regress \
+    unittest1.regress
 
 IN=     ${SRC}/input
 MID=   ${INT}/input
@@ -687,7 +688,7 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    
${OUT}/algfacob.input \
        ${OUT}/tutchap1.input ${OUT}/tutchap2.input   ${OUT}/tutchap3.input \
        ${OUT}/tutchap4.input ${OUT}/tutchap67.input  ${OUT}/typetower.input \
        ${OUT}/typo.input     \
-       ${OUT}/uniseg.input   ${OUT}/up.input \
+       ${OUT}/uniseg.input   ${OUT}/up.input         ${OUT}/unittest1.input \
        ${OUT}/vector.input   ${OUT}/vectors.input    ${OUT}/viewdef.input \
        ${OUT}/void.input     ${OUT}/wiggle.input   \
        ${OUT}/wutset.input \
@@ -1044,7 +1045,8 @@ DOCFILES= \
   ${DOC}/tutchap3.input.dvi    ${DOC}/tutchap4.input.dvi   \
   ${DOC}/tutchap67.input.dvi   ${DOC}/typetower.input.dvi  \
   ${DOC}/typo.input.dvi       \
-  ${DOC}/uniseg.input.dvi      ${DOC}/up.input.dvi         \
+  ${DOC}/uniseg.input.dvi      ${DOC}/unittest1.input.dvi \
+  ${DOC}/up.input.dvi         \
   ${DOC}/vector.input.dvi      ${DOC}/vectors.input.dvi    \
   ${DOC}/viewdef.input.dvi     ${DOC}/void.input.dvi       \
   ${DOC}/wester.input.dvi      ${DOC}/wiggle.input.dvi     \
diff --git a/src/input/unittest1.input.pamphlet 
b/src/input/unittest1.input.pamphlet
new file mode 100644
index 0000000..8a94acc
--- /dev/null
+++ b/src/input/unittest1.input.pamphlet
@@ -0,0 +1,769 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input unittest1.input}
+\author{Timothy Daly}
+\maketitle
+\begin{abstract}
+Unit test the user level commands
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+<<*>>=
+)set break resume
+)sys rm -f unittest1.output
+)spool unittest1.output
+)set mes auto off
+)clear all
+
+@
+The )with command is the same as the )library command and really
+should be a synonym.
+<<*>>= 
+--S 1
+)with API
+--R   )library cannot find the file API.
+--E 1
+
+@
+
+The )apropos command is the same as a )what command
+<<*>>= 
+--S 2
+)apropos matrix
+--R
+--ROperations whose names satisfy the above pattern(s):
+--R
+--RbezoutMatrix                       createGenericMatrix                
+--RcreateMultiplicationMatrix         diagonalMatrix                     
+--ReigenMatrix                        firstUncouplingMatrix              
+--RgetMultiplicationMatrix            idealiserMatrix                    
+--RidentityMatrix                     identitySquareMatrix               
+--RintegralDerivationMatrix           integralMatrix                     
+--RintegralMatrixAtInfinity           inverseIntegralMatrix              
+--RinverseIntegralMatrixAtInfinity    leftTraceMatrix                    
+--RlinearMatrix                       mapMatrixIfCan                     
+--Rmatrix                             matrixConcat3D                     
+--RmatrixDimensions                   matrixGcd                          
+--RrectangularMatrix                  rightTraceMatrix                   
+--RscalarMatrix                       setsubMatrix!                      
+--RsquareMatrix                       subMatrix                          
+--RsylvesterMatrix                    traceMatrix                        
+--RwronskianMatrix                    zeroMatrix                         
+--RzeroSquareMatrix                   
+--R   
+--R      To get more information about an operation such as identityMatrix
+--R      , issue the command )display op identityMatrix 
+--R------------------------------- Categories --------------------------------
+--R
+--RCategories with names matching patterns:
+--R     matrix 
+--R
+--R FMC      FortranMatrixCategory
+--R FMFUN    FortranMatrixFunctionCategory
+--R MATCAT   MatrixCategory               RMATCAT  RectangularMatrixCategory
+--R SMATCAT  SquareMatrixCategory
+--R--------------------------------- Domains ---------------------------------
+--R
+--RDomains with names matching patterns:
+--R     matrix 
+--R
+--R DHMATRIX DenavitHartenbergMatrix      DPMM     DirectProductMatrixModule
+--R IMATRIX  IndexedMatrix                LSQM     LieSquareMatrix
+--R M3D      ThreeDimensionalMatrix       MATCAT-  MatrixCategory&
+--R MATRIX   Matrix                       RMATCAT- RectangularMatrixCategory&
+--R RMATRIX  RectangularMatrix            SMATCAT- SquareMatrixCategory&
+--R SQMATRIX SquareMatrix
+--R-------------------------------- Packages ---------------------------------
+--R
+--RPackages with names matching patterns:
+--R     matrix 
+--R
+--R BEZOUT   BezoutMatrix                 CVMP     CoerceVectorMatrixPackage
+--R IMATLIN  InnerMatrixLinearAlgebraFunctions
+--R IMATQF   InnerMatrixQuotientFieldFunctions
+--R LSMP     LinearSystemMatrixPackage    LSMP1    LinearSystemMatrixPackage1
+--R MATCAT2  MatrixCategoryFunctions2     MATLIN   MatrixLinearAlgebraFunctions
+--R MATSTOR  StorageEfficientMatrixOperations
+--R MCDEN    MatrixCommonDenominator      NAGF01   NagMatrixOperationsPackage
+--R RMCAT2   RectangularMatrixCategoryFunctions2
+--R TRIMAT   TriangularMatrixOperations
+--R--------------- System Commands for User Level: development ---------------
+--R
+--RNo system commands at this level matching patterns:
+--R     matrix 
+--R
+--R------------------------- System Command Synonyms -------------------------
+--R
+--R   No user-defined synonyms satisfying patterns:
+--R       matrix 
+--R
+--E 2
+
+--S 3
+)what categories set
+--R------------------------------- Categories --------------------------------
+--R
+--RCategories with names matching patterns:
+--R     set 
+--R
+--R CACHSET  CachableSet                  FSAGG    FiniteSetAggregate
+--R MSETAGG  MultisetAggregate
+--R NTSCAT   NormalizedTriangularSetCategory
+--R OMSAGG   OrderedMultisetAggregate     ORDSET   OrderedSet
+--R PSETCAT  PolynomialSetCategory        RSETCAT  RegularTriangularSetCategory
+--R SETAGG   SetAggregate                 SETCAT   SetCategory
+--R SFRTCAT  SquareFreeRegularTriangularSetCategory
+--R SNTSCAT  SquareFreeNormalizedTriangularSetCategory
+--R TSETCAT  TriangularSetCategory
+--E 3
+
+--S 4
+)what commands set
+--R--------------- System Commands for User Level: development ---------------
+--R
+--RSystem commands at this level matching patterns:
+--R     set 
+--R
+--Rset    
+--R 
+--E 4
+
+--S 5
+)what domains set
+--R--------------------------------- Domains ---------------------------------
+--R
+--RDomains with names matching patterns:
+--R     set 
+--R
+--R FSAGG-   FiniteSetAggregate&          GPOLSET  GeneralPolynomialSet
+--R GSTBL    GeneralSparseTable           GTSET    GeneralTriangularSet
+--R MKCHSET  MakeCachableSet              MSET     Multiset
+--R ORDSET-  OrderedSet&                  OSI      OrdSetInts
+--R PSETCAT- PolynomialSetCategory&       QALGSET  QuasiAlgebraicSet
+--R REGSET   RegularTriangularSet
+--R RSETCAT- RegularTriangularSetCategory&
+--R RULESET  Ruleset                      SAOS     SingletonAsOrderedSet
+--R SET      Set                          SETAGG-  SetAggregate&
+--R SETCAT-  SetCategory&                 SETMN    SetOfMIntegersInOneToN
+--R SREGSET  SquareFreeRegularTriangularSet
+--R STBL     SparseTable                  TSETCAT- TriangularSetCategory&
+--R WUTSET   WuWenTsunTriangularSet
+--E 5
+
+--S 6
+)what operations set
+--R
+--ROperations whose names satisfy the above pattern(s):
+--R
+--ROMsetEncoding                                   
+--RbasicSet                                        
+--RcharacteristicSet                               
+--RcrushedSet                                      
+--Rfactorset                                       
+--RfirstSubsetGray                                 
+--RinternalSubPolSet?                              
+--RinternalZeroSetSplit                            
+--RinvertibleSet                                   
+--RmedialSet                                       
+--Rminset                                          
+--Rmultiset                                        
+--RnextSubsetGray                                  
+--Roverset?                                        
+--Rqsetelt!                                        
+--RquasiAlgebraicSet                               
+--Rreset                                           
+--RresetAttributeButtons                           
+--RresetBadValues                                  
+--RresetNew                                        
+--RresetVariableOrder                              
+--RrewriteSetByReducingWithParticularGenerators    
+--RrewriteSetWithReduction                         
+--RroughBasicSet                                   
+--Rruleset                                         
+--Rset                                             
+--RsetAdaptive                                     
+--RsetAdaptive3D                                   
+--RsetAttributeButtonStep                          
+--RsetButtonValue                                  
+--RsetClipValue                                    
+--RsetClosed                                       
+--RsetColumn!                                      
+--RsetCondition!                                   
+--RsetDifference                                   
+--RsetEmpty!                                       
+--RsetEpilogue!                                    
+--RsetErrorBound                                   
+--RsetFieldInfo                                    
+--RsetFormula!                                     
+--RsetImagSteps                                    
+--RsetIntersection                                 
+--RsetLabelValue                                   
+--RsetLegalFortranSourceExtensions                 
+--RsetMaxPoints                                    
+--RsetMaxPoints3D                                  
+--RsetMinPoints                                    
+--RsetMinPoints3D                                  
+--RsetOfMinN                                       
+--RsetOrder                                        
+--RsetPoly                                         
+--RsetPosition                                     
+--RsetPredicates                                   
+--RsetPrologue!                                    
+--RsetProperties                                   
+--RsetProperty                                     
+--RsetRealSteps                                    
+--RsetRow!                                         
+--RsetScreenResolution                             
+--RsetScreenResolution3D                           
+--RsetStatus                                       
+--RsetStatus!                                      
+--RsetTex!                                         
+--RsetTopPredicate                                 
+--RsetUnion                                        
+--RsetValue!                                       
+--RsetVariableOrder                                
+--Rsetchildren!                                    
+--Rsetelt                                          
+--Rsetelt!                                         
+--Rsetfirst!                                       
+--Rsetlast!                                        
+--Rsetleaves!                                      
+--Rsetleft!                                        
+--Rsetnext!                                        
+--Rsetprevious!                                    
+--Rsetref                                          
+--Rsetrest!                                        
+--Rsetright!                                       
+--RsetsubMatrix!                                   
+--Rsetvalue!                                       
+--RstartTableInvSet!                               
+--RstopTableInvSet!                                
+--RstoseInvertibleSet                              
+--RstoseInvertibleSetreg                           
+--RstoseInvertibleSetsqfreg                        
+--RsubPolSet?                                      
+--RsubSet                                          
+--RsubTriSet?                                      
+--Rsubset?                                         
+--RtoseInvertibleSet                               
+--RzeroSetSplit                                    
+--RzeroSetSplitIntoTriangularSystems               
+--R   
+--R      To get more information about an operation such as setMaxPoints ,
+--R      issue the command )display op setMaxPoints 
+--E 6
+
+--S 7
+)what packages set
+--R-------------------------------- Packages ---------------------------------
+--R
+--RPackages with names matching patterns:
+--R     set 
+--R
+--R FSAGG2   FiniteSetAggregateFunctions2 LAZM3PK  LazardSetSolvingPackage
+--R PSETPK   PolynomialSetUtilitiesPackage
+--R QALGSET2 QuasiAlgebraicSet2
+--R RSDCMPK  RegularSetDecompositionPackage
+--R RSETGCD  RegularTriangularSetGcdPackage
+--R SFRGCD   SquareFreeRegularTriangularSetGcdPackage
+--R SRDCMPK  SquareFreeRegularSetDecompositionPackage
+--E 7
+
+--S 8
+)what synonym set
+--R------------------------- System Command Synonyms -------------------------
+--R
+--R   No user-defined synonyms satisfying patterns:
+--R       set 
+--R
+--E 8
+
+--S 9
+)what things set
+--R
+--ROperations whose names satisfy the above pattern(s):
+--R
+--ROMsetEncoding                                   
+--RbasicSet                                        
+--RcharacteristicSet                               
+--RcrushedSet                                      
+--Rfactorset                                       
+--RfirstSubsetGray                                 
+--RinternalSubPolSet?                              
+--RinternalZeroSetSplit                            
+--RinvertibleSet                                   
+--RmedialSet                                       
+--Rminset                                          
+--Rmultiset                                        
+--RnextSubsetGray                                  
+--Roverset?                                        
+--Rqsetelt!                                        
+--RquasiAlgebraicSet                               
+--Rreset                                           
+--RresetAttributeButtons                           
+--RresetBadValues                                  
+--RresetNew                                        
+--RresetVariableOrder                              
+--RrewriteSetByReducingWithParticularGenerators    
+--RrewriteSetWithReduction                         
+--RroughBasicSet                                   
+--Rruleset                                         
+--Rset                                             
+--RsetAdaptive                                     
+--RsetAdaptive3D                                   
+--RsetAttributeButtonStep                          
+--RsetButtonValue                                  
+--RsetClipValue                                    
+--RsetClosed                                       
+--RsetColumn!                                      
+--RsetCondition!                                   
+--RsetDifference                                   
+--RsetEmpty!                                       
+--RsetEpilogue!                                    
+--RsetErrorBound                                   
+--RsetFieldInfo                                    
+--RsetFormula!                                     
+--RsetImagSteps                                    
+--RsetIntersection                                 
+--RsetLabelValue                                   
+--RsetLegalFortranSourceExtensions                 
+--RsetMaxPoints                                    
+--RsetMaxPoints3D                                  
+--RsetMinPoints                                    
+--RsetMinPoints3D                                  
+--RsetOfMinN                                       
+--RsetOrder                                        
+--RsetPoly                                         
+--RsetPosition                                     
+--RsetPredicates                                   
+--RsetPrologue!                                    
+--RsetProperties                                   
+--RsetProperty                                     
+--RsetRealSteps                                    
+--RsetRow!                                         
+--RsetScreenResolution                             
+--RsetScreenResolution3D                           
+--RsetStatus                                       
+--RsetStatus!                                      
+--RsetTex!                                         
+--RsetTopPredicate                                 
+--RsetUnion                                        
+--RsetValue!                                       
+--RsetVariableOrder                                
+--Rsetchildren!                                    
+--Rsetelt                                          
+--Rsetelt!                                         
+--Rsetfirst!                                       
+--Rsetlast!                                        
+--Rsetleaves!                                      
+--Rsetleft!                                        
+--Rsetnext!                                        
+--Rsetprevious!                                    
+--Rsetref                                          
+--Rsetrest!                                        
+--Rsetright!                                       
+--RsetsubMatrix!                                   
+--Rsetvalue!                                       
+--RstartTableInvSet!                               
+--RstopTableInvSet!                                
+--RstoseInvertibleSet                              
+--RstoseInvertibleSetreg                           
+--RstoseInvertibleSetsqfreg                        
+--RsubPolSet?                                      
+--RsubSet                                          
+--RsubTriSet?                                      
+--Rsubset?                                         
+--RtoseInvertibleSet                               
+--RzeroSetSplit                                    
+--RzeroSetSplitIntoTriangularSystems               
+--R   
+--R      To get more information about an operation such as setMaxPoints ,
+--R      issue the command )display op setMaxPoints 
+--R------------------------------- Categories --------------------------------
+--R
+--RCategories with names matching patterns:
+--R     set 
+--R
+--R CACHSET  CachableSet                  FSAGG    FiniteSetAggregate
+--R MSETAGG  MultisetAggregate
+--R NTSCAT   NormalizedTriangularSetCategory
+--R OMSAGG   OrderedMultisetAggregate     ORDSET   OrderedSet
+--R PSETCAT  PolynomialSetCategory        RSETCAT  RegularTriangularSetCategory
+--R SETAGG   SetAggregate                 SETCAT   SetCategory
+--R SFRTCAT  SquareFreeRegularTriangularSetCategory
+--R SNTSCAT  SquareFreeNormalizedTriangularSetCategory
+--R TSETCAT  TriangularSetCategory
+--R--------------------------------- Domains ---------------------------------
+--R
+--RDomains with names matching patterns:
+--R     set 
+--R
+--R FSAGG-   FiniteSetAggregate&          GPOLSET  GeneralPolynomialSet
+--R GSTBL    GeneralSparseTable           GTSET    GeneralTriangularSet
+--R MKCHSET  MakeCachableSet              MSET     Multiset
+--R ORDSET-  OrderedSet&                  OSI      OrdSetInts
+--R PSETCAT- PolynomialSetCategory&       QALGSET  QuasiAlgebraicSet
+--R REGSET   RegularTriangularSet
+--R RSETCAT- RegularTriangularSetCategory&
+--R RULESET  Ruleset                      SAOS     SingletonAsOrderedSet
+--R SET      Set                          SETAGG-  SetAggregate&
+--R SETCAT-  SetCategory&                 SETMN    SetOfMIntegersInOneToN
+--R SREGSET  SquareFreeRegularTriangularSet
+--R STBL     SparseTable                  TSETCAT- TriangularSetCategory&
+--R WUTSET   WuWenTsunTriangularSet
+--R-------------------------------- Packages ---------------------------------
+--R
+--RPackages with names matching patterns:
+--R     set 
+--R
+--R FSAGG2   FiniteSetAggregateFunctions2 LAZM3PK  LazardSetSolvingPackage
+--R PSETPK   PolynomialSetUtilitiesPackage
+--R QALGSET2 QuasiAlgebraicSet2
+--R RSDCMPK  RegularSetDecompositionPackage
+--R RSETGCD  RegularTriangularSetGcdPackage
+--R SFRGCD   SquareFreeRegularTriangularSetGcdPackage
+--R SRDCMPK  SquareFreeRegularSetDecompositionPackage
+--R--------------- System Commands for User Level: development ---------------
+--R
+--RSystem commands at this level matching patterns:
+--R     set 
+--R
+--Rset    
+--R 
+--R------------------------- System Command Synonyms -------------------------
+--R
+--R   No user-defined synonyms satisfying patterns:
+--R       set 
+--R
+--E 9
+
+--S 10
+)apropos set
+--R
+--ROperations whose names satisfy the above pattern(s):
+--R
+--ROMsetEncoding                                   
+--RbasicSet                                        
+--RcharacteristicSet                               
+--RcrushedSet                                      
+--Rfactorset                                       
+--RfirstSubsetGray                                 
+--RinternalSubPolSet?                              
+--RinternalZeroSetSplit                            
+--RinvertibleSet                                   
+--RmedialSet                                       
+--Rminset                                          
+--Rmultiset                                        
+--RnextSubsetGray                                  
+--Roverset?                                        
+--Rqsetelt!                                        
+--RquasiAlgebraicSet                               
+--Rreset                                           
+--RresetAttributeButtons                           
+--RresetBadValues                                  
+--RresetNew                                        
+--RresetVariableOrder                              
+--RrewriteSetByReducingWithParticularGenerators    
+--RrewriteSetWithReduction                         
+--RroughBasicSet                                   
+--Rruleset                                         
+--Rset                                             
+--RsetAdaptive                                     
+--RsetAdaptive3D                                   
+--RsetAttributeButtonStep                          
+--RsetButtonValue                                  
+--RsetClipValue                                    
+--RsetClosed                                       
+--RsetColumn!                                      
+--RsetCondition!                                   
+--RsetDifference                                   
+--RsetEmpty!                                       
+--RsetEpilogue!                                    
+--RsetErrorBound                                   
+--RsetFieldInfo                                    
+--RsetFormula!                                     
+--RsetImagSteps                                    
+--RsetIntersection                                 
+--RsetLabelValue                                   
+--RsetLegalFortranSourceExtensions                 
+--RsetMaxPoints                                    
+--RsetMaxPoints3D                                  
+--RsetMinPoints                                    
+--RsetMinPoints3D                                  
+--RsetOfMinN                                       
+--RsetOrder                                        
+--RsetPoly                                         
+--RsetPosition                                     
+--RsetPredicates                                   
+--RsetPrologue!                                    
+--RsetProperties                                   
+--RsetProperty                                     
+--RsetRealSteps                                    
+--RsetRow!                                         
+--RsetScreenResolution                             
+--RsetScreenResolution3D                           
+--RsetStatus                                       
+--RsetStatus!                                      
+--RsetTex!                                         
+--RsetTopPredicate                                 
+--RsetUnion                                        
+--RsetValue!                                       
+--RsetVariableOrder                                
+--Rsetchildren!                                    
+--Rsetelt                                          
+--Rsetelt!                                         
+--Rsetfirst!                                       
+--Rsetlast!                                        
+--Rsetleaves!                                      
+--Rsetleft!                                        
+--Rsetnext!                                        
+--Rsetprevious!                                    
+--Rsetref                                          
+--Rsetrest!                                        
+--Rsetright!                                       
+--RsetsubMatrix!                                   
+--Rsetvalue!                                       
+--RstartTableInvSet!                               
+--RstopTableInvSet!                                
+--RstoseInvertibleSet                              
+--RstoseInvertibleSetreg                           
+--RstoseInvertibleSetsqfreg                        
+--RsubPolSet?                                      
+--RsubSet                                          
+--RsubTriSet?                                      
+--Rsubset?                                         
+--RtoseInvertibleSet                               
+--RzeroSetSplit                                    
+--RzeroSetSplitIntoTriangularSystems               
+--R   
+--R      To get more information about an operation such as setMaxPoints ,
+--R      issue the command )display op setMaxPoints 
+--R------------------------------- Categories --------------------------------
+--R
+--RCategories with names matching patterns:
+--R     set 
+--R
+--R CACHSET  CachableSet                  FSAGG    FiniteSetAggregate
+--R MSETAGG  MultisetAggregate
+--R NTSCAT   NormalizedTriangularSetCategory
+--R OMSAGG   OrderedMultisetAggregate     ORDSET   OrderedSet
+--R PSETCAT  PolynomialSetCategory        RSETCAT  RegularTriangularSetCategory
+--R SETAGG   SetAggregate                 SETCAT   SetCategory
+--R SFRTCAT  SquareFreeRegularTriangularSetCategory
+--R SNTSCAT  SquareFreeNormalizedTriangularSetCategory
+--R TSETCAT  TriangularSetCategory
+--R--------------------------------- Domains ---------------------------------
+--R
+--RDomains with names matching patterns:
+--R     set 
+--R
+--R FSAGG-   FiniteSetAggregate&          GPOLSET  GeneralPolynomialSet
+--R GSTBL    GeneralSparseTable           GTSET    GeneralTriangularSet
+--R MKCHSET  MakeCachableSet              MSET     Multiset
+--R ORDSET-  OrderedSet&                  OSI      OrdSetInts
+--R PSETCAT- PolynomialSetCategory&       QALGSET  QuasiAlgebraicSet
+--R REGSET   RegularTriangularSet
+--R RSETCAT- RegularTriangularSetCategory&
+--R RULESET  Ruleset                      SAOS     SingletonAsOrderedSet
+--R SET      Set                          SETAGG-  SetAggregate&
+--R SETCAT-  SetCategory&                 SETMN    SetOfMIntegersInOneToN
+--R SREGSET  SquareFreeRegularTriangularSet
+--R STBL     SparseTable                  TSETCAT- TriangularSetCategory&
+--R WUTSET   WuWenTsunTriangularSet
+--R-------------------------------- Packages ---------------------------------
+--R
+--RPackages with names matching patterns:
+--R     set 
+--R
+--R FSAGG2   FiniteSetAggregateFunctions2 LAZM3PK  LazardSetSolvingPackage
+--R PSETPK   PolynomialSetUtilitiesPackage
+--R QALGSET2 QuasiAlgebraicSet2
+--R RSDCMPK  RegularSetDecompositionPackage
+--R RSETGCD  RegularTriangularSetGcdPackage
+--R SFRGCD   SquareFreeRegularTriangularSetGcdPackage
+--R SRDCMPK  SquareFreeRegularSetDecompositionPackage
+--R--------------- System Commands for User Level: development ---------------
+--R
+--RSystem commands at this level matching patterns:
+--R     set 
+--R
+--Rset    
+--R 
+--R------------------------- System Command Synonyms -------------------------
+--R
+--R   No user-defined synonyms satisfying patterns:
+--R       set 
+--R
+--E 10
+
+--S 11
+)prompt
+--R---------------------------- The prompt Option ----------------------------
+--R
+--R Description: set type of input prompt to display
+--R
+--R The prompt option may be followed by any one of the following:
+--R
+--R    none
+--R    frame
+--R    plain
+--R -> step 
+--R    verbose
+--R
+--R The current setting is indicated within the list.
+--R
+--E 11
+
+--S 12
+)version
+--R 
+--IValue = "Saturday February 21, 2009 at 17:59:27 "
+--E 12
+
+--S 13
+)zsys )from )c
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 13
+
+--S 14
+)zsys )from )d
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 14
+
+--S 15
+)zsys )from )dt
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 15
+
+--S 16
+)zsys )from )ct
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 16
+
+--S 17
+)zsys )from )ctl
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 17
+
+--S 18
+)zsys )from )ec
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 18
+
+--S 19
+)zsys )from )ect
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 19
+
+--S 20
+)zsys )from )e
+--R 
+--R 
+--R   >> System error:
+--I   Cannot open the file /research/test/mnt/fedora10/../../src/interp/TAGS.
+--R
+--R   Continuing to read the file...
+--R
+--E 20
+
+--S 21
+)zsys )from )version
+--R 
+--E 21
+
+--S 22
+)zsys )from )update
+--R 
+--R 
+--R   >> System error:
+--R   /UPDATE-1 [or a callee] requires more than one argument.
+--R
+--R   Continuing to read the file...
+--R
+--E 22
+
+--S 23
+)zsys )from )patch
+--R 
+--R 
+--R   >> System error:
+--R   The function /UPDATE-LIB-1 is undefined.
+--R
+--R   Continuing to read the file...
+--R
+--E 23
+
+--S 24
+)zsys )from )there 1
+--R 
+--R
+--R   Unknown option: there     
+--R   Available options are c ct e ec ect cls pause update patch compare 
record 
+--R
+--E 24
+
+--S 25
+)zsys )from )compare
+--R 
+--R   An argument is required for compare 
+--E 25
+
+--S 26
+)zsys )from )record
+--R 
+--R   An argument is required for record 
+--E 26
+
+)spool
+)lisp (bye)
+ 
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
diff --git a/src/interp/daase.lisp.pamphlet b/src/interp/daase.lisp.pamphlet
index ccf699b..c9498a3 100644
--- a/src/interp/daase.lisp.pamphlet
+++ b/src/interp/daase.lisp.pamphlet
@@ -806,11 +806,6 @@ database.
        (setq data (concatenate 'string $spadroot "/algebra/" data ".o")))))))
   data))
 
-; )library top level command  -- soon to be obsolete
-
-(defun |with| (args)
- (|library| args))
-
 ; )library top level command
 
 (defun |library| (args)
diff --git a/src/interp/i-syscmd.boot.pamphlet 
b/src/interp/i-syscmd.boot.pamphlet
index b9a20d3..997c527 100644
--- a/src/interp/i-syscmd.boot.pamphlet
+++ b/src/interp/i-syscmd.boot.pamphlet
@@ -1440,69 +1440,6 @@ processSynonymLine line ==
             line.j ^= " " => return (SUBSTRING (line, j, nil)))
   [key, :value]
 
---% )what
-
-
-what l == whatSpad2Cmd l
-
-whatSpad2Cmd l ==
-  $e:local := $EmptyEnvironment
-  null l => reportWhatOptions()
-  [key0,:args] := l
-  key := selectOptionLC(key0,$whatOptions,nil)
-  null key => sayKeyedMsg("S2IZ0043",NIL)
-  args := [fixpat p for p in args] where
-    fixpat x ==
-      x is [x',:.] => DOWNCASE x'
-      DOWNCASE x
-  key = 'things =>
-    for opt in $whatOptions repeat
-      not MEMQ(opt,'(things)) => whatSpad2Cmd [opt,:args]
-  key = 'categories =>
-    filterAndFormatConstructors('category,'"Categories",args)
-  key = 'commands =>
-    whatCommands(args)
-  key = 'domains =>
-    filterAndFormatConstructors('domain,'"Domains",args)
-  key = 'operations =>
-    apropos args
-  key = 'packages =>
-    filterAndFormatConstructors('package,'"Packages",args)
-  key = 'synonyms =>
-    printSynonyms(args)
-
-filterAndFormatConstructors(constrType,label,patterns) ==
-  centerAndHighlight(label,$LINELENGTH,specialChar 'hbar)
-  l := filterListOfStringsWithFn(patterns,whatConstructors constrType,
-        function CDR)
-  if patterns then
-    null l =>
-      sayMessage ['"   No ",label,'" with names matching patterns:",
-        '%l,'"   ",'%b,:blankList patterns,'%d]
-    sayMessage [label,'" with names matching patterns:",
-      '%l,'"   ",'%b,:blankList patterns,'%d]
-  l => pp2Cols l
-
-whatConstructors constrType ==
-  -- here constrType should be one of 'category, 'domain, 'package
-  MSORT [CONS(GETDATABASE(con,'ABBREVIATION), STRING(con))
-    for con in allConstructors()
-      | GETDATABASE(con,'CONSTRUCTORKIND) = constrType]
-
-apropos l ==
-  -- l is a list of operation name fragments
-  -- this displays all operation names containing these fragments
-  ops :=
-    null l => allOperations()
-    filterListOfStrings([(DOWNCASE STRINGIMAGE p) for p in l],allOperations())
-  ops =>
-    sayMessage '"Operations whose names satisfy the above pattern(s):"
-    sayAsManyPerLineAsPossible MSORT ops
-    sayKeyedMsg("S2IF0011",[first ops])
-  sayMessage '"   There are no operations containing those patterns"
-  NIL
-
-
 printSynonyms(patterns) ==
   centerAndHighlight("System Command Synonyms",$LINELENGTH,specialChar 'hbar)
   ls := filterListOfStringsWithFn(patterns, [[STRINGIMAGE a,:b]
@@ -1590,76 +1527,6 @@ satisfiesRegularExpressions(name,patterns) ==
 
 --% )with ... defined in daase.lisp (boot won't parse it)
 
---% )workfiles
-
-workfiles l == workfilesSpad2Cmd l
-
-workfilesSpad2Cmd args ==
-  args => throwKeyedMsg("S2IZ0047",NIL)
-  deleteFlag := nil
-  for [type,:.] in $options repeat
-    type1 := selectOptionLC(type,'(boot lisp meta delete),nil)
-    null type1 => throwKeyedMsg("S2IZ0048",[type])
-    type1 = 'delete => deleteFlag := true
-  for [type,:flist] in $options repeat
-    type1 := selectOptionLC(type,'(boot lisp meta delete),nil)
-    type1 = 'delete => nil
-    for file in flist repeat
-      fl := pathname [file,type1,'"*"]
-      deleteFlag => SETQ($sourceFiles,DELETE(fl,$sourceFiles))
-      null (MAKE_-INPUT_-FILENAME fl) => sayKeyedMsg("S2IZ0035",[namestring 
fl])
-      updateSourceFiles fl
-  SAY " "
-  centerAndHighlight(" User-specified work files ",$LINELENGTH,specialChar 
'hbar)
-  SAY " "
-  null $sourceFiles => SAY '"   no files specified"
-  SETQ($sourceFiles,SORTBY('pathnameType,$sourceFiles))
-  for fl in $sourceFiles repeat sayBrightly ["   " ,namestring fl]
-
---% )zsystemdevelopment
-
-zsystemdevelopment l == zsystemDevelopmentSpad2Cmd l
-
-zsystemDevelopmentSpad2Cmd l == zsystemdevelopment1 (l,$InteractiveMode)
-
-zsystemdevelopment1(l,im) ==
-  $InteractiveMode : local := im
-  fromopt := nil
-  -- cycle through once to see if )from is mentioned
-  for [opt,:optargs] in $options repeat
-    opt1 := selectOptionLC(opt,'(from),nil)
-    opt1 = 'from => fromopt := [['FROM,:optargs]]
-  for [opt,:optargs] in $options repeat
-    if null optargs then optargs := l
-    newopt := APPEND(optargs,fromopt)
-    opt1 := selectOptionLC(opt,'(from),nil)
-    opt1 = 'from => nil
-    opt = "c"   => _/D_,1 (newopt ,_/COMP(),NIL,NIL)
-    opt = "d"   => _/D_,1 (newopt ,'DEFINE,NIL,NIL)
-    opt = "dt"  => _/D_,1 (newopt ,'DEFINE,NIL,true)
-    opt = "ct"  => _/D_,1 (newopt ,_/COMP(),NIL,true)
-    opt = "ctl"  => _/D_,1 (newopt ,_/COMP(),NIL,'TRACELET)
-    opt = "ec"  => _/D_,1 (newopt ,_/COMP(),true,NIL)
-    opt = "ect" => _/D_,1 (newopt ,_/COMP(),true,true)
-    opt = "e"   => _/D_,1 (newopt ,NIL,true,NIL)
-    opt = "version" => version()
-    opt = "pause" =>
-      conStream := DEFIOSTREAM ('((DEVICE . CONSOLE) (QUAL . V)),120,0)
-      NEXT conStream
-      SHUT conStream
-    opt = "update" or opt = "patch" =>
-      $InteractiveMode := nil
-      upf := [KAR optargs or _/VERSION, KADR optargs or _/WSNAME,
-              KADDR optargs or '_*]
-      fun := (opt = "patch" => '_/UPDATE_-LIB_-1; '_/UPDATE_-1)
-      CATCH('FILENAM, FUNCALL(fun, upf))
-      sayMessage '"   Update/patch is completed."
-    null optargs =>
-      sayBrightly ['"   An argument is required for",:bright opt]
-    sayMessage ['"   Unknown option:",:bright opt,"    ",'%l,
-      '"   Available options are", _
-      :bright '"c ct e ec ect cls pause update patch compare record"]
-
 --% Synonym File Reader
 
 --------------------> NEW DEFINITION (override in util.lisp.pamphlet)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]