summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc578.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc578.txt')
-rw-r--r--doc/rfc/rfc578.txt563
1 files changed, 563 insertions, 0 deletions
diff --git a/doc/rfc/rfc578.txt b/doc/rfc/rfc578.txt
new file mode 100644
index 0000000..b4e970c
--- /dev/null
+++ b/doc/rfc/rfc578.txt
@@ -0,0 +1,563 @@
+
+
+
+
+
+
+Network Working Group A. Bhushan
+Request for Comments: 578 N. Ryan
+NIC: 19501 MIT-PTD (DMS)
+ October 1973
+
+
+ USING MIT-MATHLAB MACSYMA FROM MIT-DMS MUDDLE
+ An Experiment in Automated Resource Sharing
+
+I. INTRODUCTION
+
+ This paper describes an experiment in non-trivial automated resource
+ sharing between dissimilar systems. The goal of the experiment was
+ to interface the MUDDLE system at MIT-DMS (Host 70.) to the MACSYMA
+ system at MIT-Mathlab (Host 198.), in such a manner that the MUDDLE-
+ user at MIT-DMS is not required to know anything about the ARPANET,
+ Mathlab, or even MACSYMA. In fact, the user need not be aware that
+ part of the computation is performed by MACSYMA on the Mathlab
+ computer.
+
+ This experiment differs from the MATHLAB-UCSB/OLS experiment (ref.
+ NWG/RFC 525, NIC 17161 "MIT-MATHLAB Meets UCSB-OLS" by Parrish and
+ Pickens) in several important respects. First, the use of the remote
+ network resource is *completely automated*. The human user does
+ nothing more than use a function in MUDDLE such as "INTEGRATE" which
+ requires the remote MACSYMA resource for computation. The program
+ performs all the required tasks of connecting to Mathlab, log in, and
+ using MACSYMA. (In the UCSB-OLS experiment, the user had to manually
+ connect to Mathlab, login, use MACSYMA, type the input in a form
+ suitable for MACSYMA, save the results in a file at Mathlab,
+ disconnect from Mathlab, start a retrieval job at UCSB to retrieve
+ the "saved" results, and finally submit the results to a local
+ program.) Second, the use of the remote resource is *completely
+ integrated* into the local MUDDLE system. The user can specify the
+ computations in a form that MUDDLE understands. The resource-sharing
+ program (whose existence the user need not be aware of) does the
+ translation from the MUDDLE "prefix" form to the MACSYMA "infix" form
+ on input, and vice-versa on output. This ability allows the MACSYMA
+ resources to be completely integrated into MUDDLE to the extent that
+ parts of the same computation can be performed by MACSYMA and others
+ by MUDDLE.
+
+II. THE MACSYMA AND MUDDLE RESOURCES
+
+ Before proceeding to describe the resource sharing facility a
+ description of the two resources, MACSYMA and MUDDLE, is in order.
+ The MACSYMA system at Mathlab is a powerful resource for symbolic
+ manipulation of algebraic functions. It can, among other things,
+
+
+
+Bhushan & Ryan [Page 1]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+ perform symbolic integration and differentiation, expand series,
+ perform Laplace and inverse-Laplace transforms, solve equations and
+ systems of equations, and simplify rational functions. (A
+ description of MACSYMA's capabilities is given in "The MACSYMA Users'
+ Manual" available from the MIT-Mathlab group at Project MAC.)
+
+ The MUDDLE system provides a general-purpose environment suitable for
+ automatic programming, graphics, data management, "networking", and
+ mathematical computations. The MUDDLE language represents a powerful
+ extension of the list processing language LISP in the area of data
+ types such as strings, vectors, uniform vectors, and user definable
+ types. (MUDDLE is described in some detail in "The MUDDLE Primer"
+ (SYS.11.01) by Greg Pfister, available from the Programming
+ Technology Division at Project MAC.)
+
+ MUDDLE has extensive graphical and numerical computation facilities.
+ The user can display graphs on ARDS and IMLAC type consoles, and on
+ the Evans and Sutherland (E&S) display system. The MUDDLE console
+ graphics provide a facility to view graphical representation of
+ functions with overlay capability and automatic scaling that can be
+ controlled by the user. The E&S provides the user with a versatile
+ tool for studying the dynamic characteristics of graphs, curved
+ surfaces, and other three-dimensional objects. The combination of
+ MACSYMA, MUDDLE, and the E&S graphics capabilities represents a very
+ powerful resource for problem solving that is integrated and made
+ easily usable by the resource sharing facility.
+
+III. THE AUTOMATED RESOURCE-SHARING FACILITY
+
+ The resource-sharing facility described herein uses the most easily
+ accessible communication path to MACSYMA, the TELNET connection to
+ the logger service on socket 1. No modifications were made to
+ MACSYMA, nor were any special programs created on the Mathlab
+ computer. The entire task of resource sharing is performed by
+ programs in MUDDLE. Let us say on the outset that we are not
+ advocating this mode of usage for automated resource sharing. A
+ resource-sharing protocol that allows convenient use of remote
+ resources via programs is a far more reliable and efficient way, but
+ that requires work on the part of server sites. The existing
+ protocols and systems FTP, RJE, RSEXEC, and the Datacomputer cater to
+ a limited subset of easily managed resources. We register here our
+ desire for uniformity (which alas is lacking) in the current systems,
+ and work along the direction of general-purpose resource sharing. In
+ the absence of a general resource-sharing protocol and a MACSYMA
+ server to go along with it at Mathlab, the TELNET connection is the
+ best a user can do.
+
+
+
+
+
+Bhushan & Ryan [Page 2]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+ The resource sharing facility comprises of several independent but
+ integrated parts. These are:
+
+ 1) Connecting to Mathlab, login, and invoking MACSYMA.
+ 2) Conversion of MUDDLE's prefix to MACSYMA's infix form.
+ 3) Generation of MACSYMA input.
+ 4) Interpreting MACSYMA's results including errors and comments.
+ 5) MACSYMA infix to MUDDLE prefix conversion.
+ 6) Plotting graphs for the functions.
+ 7) Allowing human intervention if desired.
+ 8) Disconnect from MACSYMA.
+
+ The user (assuming that he has loaded the necessary programs in
+ MUDDLE) to integrate the function "3*X" has only to type:
+
+ <INTEGRATE '<* .X 3>>$
+
+ where '$' represents the ASCII character <ESC> (or <ALT-MODE>).
+ MUDDLE will then return the following result:
+
+ </ <* 3 <^ .X 2>> 2>
+
+ Alternatively, if the user wishes to use the infix form, he can type:
+
+ <INTEGRATE "3*X">$
+
+ and the corresponding answer returned by MUDDLE would be
+
+ "3*X^2/2"
+
+ The following sequence of events takes place when integrate (or any
+ other function that uses MACSYMA) is used. If the user isn't already
+ communicating with a MACSYMA (the program keeps track of the
+ connection), a connection is established to MIT-Mathlab, the user is
+ logged in (automatically by program, using the user's
+ identification), and a MACSYMA is initiated. A prefix to infix
+ conversion is performed and the following input is sent to MACSYMA
+ (using the above example):
+
+ STRING (INTEGRATE (3*X,X));
+
+ The program then interprets MACSYMA's output recognizing error
+ responses and comments and extracts the result if no error is
+ encountered. The result which is in infix form is then converted to
+ the prefix form which is returned by the MUDDLE function INTEGRATE.
+
+
+
+
+
+
+Bhushan & Ryan [Page 3]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+ The INTEGRATE function takes an optional argument, the variable with
+ respect to which the integration is be performed. The syntax for the
+ function is:
+
+ <INTEGRATE {EXPR} ["{VAR}"]>
+
+ where EXPR is any expression of the type STRING or QUOTED FORM. The
+ optional argument (in square brackets) VAR must be of the type STRING
+ (enclosed by double-quotes). The syntax of other functions is:
+
+ <SIMPLIFY {EXPR}>
+ <DIFF {EXPR} ["{VAR}" "{TIMES}"]>
+ <EXPAND {EXPR} ["{MAXPOSEX}" "{MAXNEGEX}"]>
+
+ where TIMES is the number of times the EXPR is to be differentiated
+ and MAXPOSEX and MAXNEGEX control the maximum positive and negative
+ integer exponent to be used in expansion. The default value for VAR
+ is "X", for times is "1", and for MAXPOSEX and MAXNEGEX is "6" each.
+
+ The user can use the result returned by MUDDLE in any of his
+ computations, including drawing a graph. For example, typing:
+
+ <GRAPH <DIFF '<^ X. 3>> X -5 5>$
+
+ to MUDDLE will draw the graph "Y = 3*X^2" on the IMLAC or ARDS screen
+ with values of X from -5 to +5 (assuming the user has the graphics
+ package and the right IMLAC program loaded). The same graph would be
+ drawn if the user typed:
+
+ <GRAPH <IPARSE <DIFF "X^3">> X -5 5>$
+
+ where IPARSE is the MUDDLE function that converts infix to prefix
+ form. The corresponding function for prefix to infix conversion is
+ UNIPARSE.
+
+ The details of using the MACSYMA resource sharing facility may be
+ gathered from the annotated script of the example given in Section V
+ of this paper.
+
+IV. CAPABILITIES AND LIMITATIONS
+
+ The program tries to be helpful to the user as much as possible. For
+ example, if for some reason the MIT-Mathlab computer is not
+ available, the MACSYMA service at the MIT-AI computer is procured.
+
+ It should be mentioned that though the program is fairly capable in
+ retrieving results, recognizing error messages, and separating
+ comments, its recognition is not fool-proof. The program only makes
+
+
+
+Bhushan & Ryan [Page 4]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+ an educated guess as to where the answer lies: it is not as clever as
+ a human user sitting at a console, who can filter out such messages
+ as "System going down" and communication from another user (console-
+ link) if they were to appear in the middle of the result. This
+ points to one of the pitfalls of using a facility via a program that
+ is basically designed for use by human users.
+
+ The program reliability can be marginally improved by asking MACSYMA
+ to print special characters before and after the results it sends
+ (but again this is not fool-proof). For example, the following input
+ to MACSYMA:
+
+ Block ([ans],
+ print (/(),
+ ans: diff (X^2,X),
+ print (string (ans))
+ print (/)),
+ return (ans));
+
+ will cause MACSYMA to generate the following output:
+
+ (
+ 2*X
+ )
+ (D**) 2X
+
+ From the above output, the answer "2*X" can be easily extracted.
+
+ The resource sharing program does however recognize the so-called
+ "unintegratable" functions such as "EXP (X^2)" -- and gives the
+ correct error response. Normally, the user is in "TERSE" mode, and
+ does not see the interaction between MACSYMA and MUDDLE. To see the
+ interaction the user must enter "VERBOSE" mode by typing:
+
+ <VERBOSE>$
+
+ to MUDDLE. To return to "TERSE" mode the user types:
+
+ <TERSE>$
+
+ The user can also, if he is proficient in use of MACSYMA, communicate
+ directly with MACSYMA at any point by typing:
+
+ <TELCOM 1>$
+
+
+
+
+
+
+
+Bhushan & Ryan [Page 5]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+ to MUDDLE. The TELCOM feature may be useful if the user wishes to
+ see what is going on, or wants to examine the MACSYMA computations by
+ entering the LISP environment (typing <Control-G> to MACSYMA). To
+ return to MUDDLE and the automated environment, the user first
+ escapes to MUDDLE by typing <Control-E>, and then types:
+
+ <AUTO>$
+
+ to MUDDLE. If the user types "<ERRET 1>$" after escaping to MUDDLE
+ from "TELCOM" mode, he will be returned in direct communication with
+ MACSYMA. If the user discovers that his "MACSYMA" is hopelessly
+ confused or if he wishes to start a new version of MACSYMA, he must
+ type:
+
+ <DIS>$
+
+ to MUDDLE, which will disconnect him. Typing "<MACSYMA>$" or using
+ any of the functions that use MACSYMA will connect him to MACSYMA
+ again.
+
+ Currently, MUDDLE recognizes and takes action as described above
+ whenever differentiate, integrate, expand, simplify, and
+ integrate.simplify (integrate and simplify) functions are
+ encountered. But it is quite easy to generate programs for other
+ operations such as Laplace transforms and solving equations. The
+ prefix-to-infix conversion and vice-versa works for all mathematical
+ forms we have encountered so far in our short experiment.
+
+ An alternate way to utilize MACSYMA's capabilities would have been to
+ use it in the LISP environment by constructing a suitable interface
+ between LISP and MUDDLE. Such an approach would avoid the multiple
+ conversions from prefix to infix form and vice-versa, but other,
+ perhaps more difficult, conversions would be required.
+
+V. EXAMPLE
+
+ The following scenario describes the use of the resource-sharing
+ facility. The facility is accessible in the MUDDLE system at MIT-
+ DMS. The interaction between MUDDLE and MACSYMA, normally not
+ visible to the user, is also shown here (in VERBOSE mode) so that the
+ reader may gain a better understanding of how the program operates.
+ It should be noted that the graphs will be plotted only if the user
+ has loaded the "graphics package" and is on an IMLAC or ARDS console.
+ We would also like to stress that this scenario is not intended to
+ demonstrate the full capabilities of MACSYMA, or of MUDDLE, but only
+ to illustrate the resource sharing facility.
+
+ SCENARIO FOR USING THE MUDDLE-MACSYMA FACILITY
+
+
+
+Bhushan & Ryan [Page 6]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+ (In the following scenario, user input is underlined and our comments
+ are preceded with a semicolon. <CR> represents a carriage return and
+ $ represents <ESC> or alt-mode. The user is assumed to be logged in
+ at MIT-DMS (Host 70). Note that the input should be typed exactly as
+ shown, as MUDDLE distinguishes between upper and lower case
+ characters. Please refer to "THE MUDDLE PRIMER" (SYS.11.01) by Greg
+ Pfister for a description of the MUDDLE system and to "MUDDLE CONSOLE
+ GRAPHICS USER GUIDE" (SYS.11.11) by Neal Ryan for a description of
+ the graphics package. Both documents are available from the
+ Programming Technology Division at Project MAC.)
+
+[;]MUDDLE<CR> ; Get a MUDDLE, ';' is MONIT prompt.
+ ----------
+MUDDLE 42 IN OPERATION.
+LISTENING-AT-LEVEL 1 PROCESS 1
+<FLOAD "MUDDLE;MACSYM">$ ; Load the program from MUDDLE
+------------------------ ; directory.
+/METMUDGIN GOUT
+GIN GOUT ; Harmless comments from MUDDLE.
+"DONE"
+<DIFF '<- <* .X <LOG .X>> .X>>$
+-------------------------------
+PLEASE BE PATIENT, MACSYMA LOADING MAY TAKE TIME
+MACSYMA AT MIT-MATHLAB ; Comments from the program.
+<LOG .X> ; The result is a MUDDLE form.
+<INTEGRATE '<LOG .X>>$
+----------------------
+SIN FASL DSK MACSYM BEING LOADED
+LOADING DONE ; Comments from MACSYMA.
+SCHATC FASL DSK MACSYM BEING LOADED
+LOADING DONE
+<- <* .X <LOG .X>> .X> ; The answer again.
+<SET A <INTEGRATE "X/(X^3+1)">>$; The input is in infix form.
+--------------------------------
+"LOG(X^2-X+1)/6+ATAN((2*X-1)/SQRT(3))/SQRT(3)-LOG(X+1)/3"
+ ; The answer now is in infix form.
+<SET B <DIFF .A>>$
+------------------
+"2/(3*((2*X-1)^2/3+1))+(2*X-1)/(6*(X^2-X+1))-1/(3*(X+1))"
+<SIMPLIFY .B>$
+--------------
+"X/(X^3+1)" ; We get back the original expression.
+<EXPAND '<^ <+ .X 2> 5>>$
+-------------------------
+<+ <+ <+ <+ <+ <^ .X 5> <* 10 <^ .X 4>>> <* 40 <^ .X 3>>>
+<* 80 <^ .X 2>>> <* 80 .X>> 32>
+<INTEGRATE '<EXP <^ .X 2>>>$
+----------------------------
+
+
+
+Bhushan & Ryan [Page 7]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+RISCH FASL DSK MACSYM BEING LOADED
+LOADING DONE
+*ERROR* ; Program recognizes that MACSYMA
+CANT-INTEGRATE ; couldn't integrate.
+LISTENING-AT-LEVEL 2 PROCESS 1
+<ERRET>$ ; To get back to level 1.
+--------
+LISTENING-AT-LEVEL 1 PROCESS 1
+<DIS>$ ; We disconnect here to show the verbose mode,
+------ ; the program disconnects automatically on quitting.
+"CONNECTIONS CLOSED NOW"
+<VERBOSE>$
+----------
+"YOU WILL BE ABLE TO OBSERVE MUDDLE-MACSYMA INTERACTION NOW"
+<DIFF '<^ .X 3>>$
+-----------------
+PLEASE BE PATIENT, MACSYMA LOADING MAY TAKE TIME
+MIT MATHLAB PDP-10 STELNT.59
+ML ITS.1. DDT.516.
+10. USERS
+:LOGIN 70GUEST ; The program uses User's SNAME (GUEST here).
+:MACSYMA
+THIS IS MACSYMA 226
+SEE UPDATE > MACSYM; FOR CHANGES
+FIX 226 DSK MACSYM BEING LOADED
+LOADING DONE
+(C1)
+MACSYMA AT MIT-MATHLAB ; The program announces MACSYMA,
+ STRING (DIFF ((X^3),X,1)); ; and sends input in infix form.
+(D1) 3*X^2
+<* 3 <^ .X 2>> ; The output is in MUDDLE prefix form.
+<INTEGRATE '</ .X <+ .X 1>>>$
+-----------------------------
+C2) STRING (INTEGRATE ((X/(X+1)),X));
+SIN FASL DSK MACSYM BEING LOADED
+LOADING DONE
+SCHATC FASL DSK MACSYM BEING LOADED
+LOADING DONE
+(D2) X-LOG(X+1)
+<- .X <LOG <+ .X 1>>> ; The output again.
+<TERSE>$
+--------
+"OK" ; Back in TERSE mode now.
+
+<FLOAD "MUDDLE;UGRF">$ ; To load graphics program
+----------------------
+IMLAC? (ANSWER Y OR N) Y ; for graphics on an IMLAC.
+ -
+
+
+
+Bhushan & Ryan [Page 8]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+"DONE"
+<GRAPH <SLT A '<^ <SIN .X> 2>> X -3 3>$
+---------------------------------------
+ ; To graph function sin(X)^2 (graph 1 on Figure 1).
+<GRAPH <DIFF .A>>$
+-------------------
+ ; To graph diff of sin(X)^2 (see graph 2, Figure 1).
+<GRAPH <INTEGRATE .A>>$
+-----------------------
+ ; To graph integral of sin(X)^2 (see graph 3, Figure 1).
+<QUIT>$ ; To quit from program and MUDDLE.
+-------
+KILL
+[;] ; semicolon prompt from MONIT.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Bhushan & Ryan [Page 9]
+
+RFC 578 Using MIT-MATHLAB MACSYMA from MIT-DMS MUDDLE October 1973
+
+
+ FIG 1. GRAPH FOR SIN(X)^2, DIFF(SIN(X)^2), AND INTEGRATE(SIN(X)^2)
+
+
+ --+--2.0
+ |
+ |
+ | +++ (3)
+ | ++++
+ | ++
+ | +
+ | ++
+ ooo **** --+-- ooo ***+
+ o o** ** | o o** + **
+ o *o * | o *o + *
+ o * * | o * + *
+ o * o * | o * o *
+ * o * | * + o *
+ o ** ** |o ** ++ **
+| * | o * | * ++ o | * (1) |
+|-------**-------+-----------+++++o+++++-----------+-------**-------|
+|-4.0 | o ++ | o | (2) |4.0
+ ++ o| o
+ o + | o
+ o o | o o
+ + o | o
+ + o o | o o
+ + o o | o o
+ + ooo --+-- -1.0 ooo
+ ++ |
+ + |
+ ++ |
+ ++++ |
+ +++ |
+ |
+ |
+ --+-- -2.0
+
+
+ [ This RFC was put into machine readable form for entry ]
+ [ into the online RFC archives by Graeme Hewson 3/98 ]
+
+
+
+
+
+
+
+
+
+
+
+Bhushan & Ryan [Page 10]
+