libraries dept coil 2+z> box 1ffr7^ foi a r*yl** cux*^7 lfb9bf011qj1944/bf011... ·...
TRANSCRIPT
warsfly LibrariesDept #f Special Collections
Coil L_£. 2"+Z> TitleBox ,:?<■/ Series / 1f fr7^Foi l^ Fol. Title A r*yl** CuX*^7 lfb9
* s
A REPORT ON THE CURRENT STATUS OF THE
LISP VERSION OF EPAM 111
CS 224, C5225 Term Project
S. Levine, R. Russell, W. WilnerJune 13, 1967
-L
ey-~
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
I
1
THE GENERAL EPAM PROGRAM
la PRIMARY FUNCTIONS
lal The primary EPAM functions are concerned with learning objects by
growing the discrimination tree. These functions form the primitive
operations utilized by the higher level executives (see section 2) in the
various forms of learning for which
operations include such things as
the discrimination tree, augmenting
sorting an object through the tree
EPAM can be adapted. These primitive
comparing an object with its image in
an image by adding missing details,
to obtain its image, building tests
based on differences detected between new objects and images of previously
encountered objects, etc. Most of these functions have highly descriptive
names. Similarily, the arguments to the functions and parameters local
to the functions, such as object, image, node, etc., have names that
indicate the data structures which they represent.
la 2 FAMILIARIZE
la2a FAMILIARIZE is the principle net growing and general learning
function, and is called both by higher level executives when learning
unfamiliar objects and by lower level utility functions when
subobjects must be learned or relearned.
la2b FAMILIARIZE is called with one argument, OBJECT, which is the
A REPOR'I ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
2
object (or subobject) to be learned.
la2c The flow of FAMILIARIZE is as follows:
la2cl First OBJECT is sorted through the current discrimination
net until a terminal node is reached. The function SORT is used
for this purpose.
la2c2 If the terminal node is empty (i.e., there is no image of
this object), FAMILIARIZE calls the function FIRST-IMAGE to form
the first image of this object and put it into this terinal node.
la2c3 If the terminal node is not empty, the image at the node is
compared with the object to see if any discrepancies can be found.
The function DISCREPANCIES is used to do this.
la2c4 If no discrepancies could be found, the image is correct as
far as it goes, but it may contain only partial information. In
this case, FAMILIARIZE calls the function ADD-DETAIL to augment the
image by filling in information contained in the object but not in
the image.
la2cs If a discrepancy was found, a check is made to determine
whether or not an existing test node in the tree will discriminate
between the new object and the existing image on the basis of this
difference.
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
la3
3
la2c6 If such a test already exists, the test node is increased by
adding the new object as an additional branch at that node (see
section 3 for structure of test nodes and branches). The function
DISTINGUISH-IN-NET is used for this operation.
la2c7 If no existing test will suffice to discriminate between
this object and its incorrect image, a new test node must be built
to replace the current terminal node in the tree. The test made at
this node will be based on the difference discovered by
DISCREPANCIES in step la2c3. The function SUBNET is used to create
the test and the new node.
FIRST- IMAGE
la3a The function FIRST- IMAGE is called whenever EPAM is required to
form an image of an object which it has never seen before. The first
image of such an object is always built in a previously empty node
(i.e., the terminal node to which this item was sorted), and consists
of only those parts of the object which were used in tests during the
sort through the tree.
la3b FIRST-IMAGE is called with two arguments, OBJECT, the new object,
and NODE, the empty terminal node of the tree to which this object
gets sorted.
la3c The flow of FIRST- IMAGE is as follows:
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
4
la3cl A local pointer TR is set to point to the top of the tree.
This will be changed at each subsequent step so that it will always
point to the branch of the tree which has the terminal node for
this object at the bottom.
la3c2 A second local parameter TOKEN has as its value the list of
all information about the new object which is jpleahcd at each test
node of the tree. This parameter is initially empty (NULL).
la3c3 The next node of the tree, pointed to by TR, is tested to
see if it is a terminal node
been completely sorted through
the information which F.PAM has
list is now inserted into the
or not, and if it is, the object has
the tree and TOKEN is a list of all
gathered about this object. This
terminal node as the image of the
object and the function FIRST-IMAGE is completed
la3c4 If the next node of the tree was not a terminal node, it has
to be a test node (see EPAM data structures, section 3). "pie tests
fall into two types, those which apply to properties of the object
as a whole, and those which distinguish between subobjects of the
object.
la3cs If the test applies to a property of an object, the test is
made on this object and both the test and the result are added to
the list TOKEN as an attribute-value pair.
la3c6 If the test applies to a subobject, the function ADD-SUBOBJ
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
la4
5
is called in order to add the appropriate subobject of the new
object to the list TOKEN under the attribute SUBOBJ.
la3c7 The result of the test applied to the new object is used to
select the next branch of the tree by updating the pointer TR.
Control the returns to step la3c3.
DISCREPANCIES
la4a The function DISCREPANCIES is used to compare an object with its
image to determine if any differences exist. Information contained in
the object but lacking in the image is not considered a discrepancy
between the two. Differences pertaining to the object as a whole are
found first, followed by differences in the subobjects which comprised
the object and the image. A list of these differences is returned as
the value of DISCREPANCIES. A null list is returned if no differences
can be found.
la4b DISCREPANCIES is called with three arguments, OBJECT, the object
being investigated, IMAGE, the current image of this object, and X,
the number of discrepancies desired. In the current version of EPAM, X
is always 1.
la4c The flow of DISCREPANCIES is as follows:
la4cl Both OBJECT and IMAGE are considered to be attribute-value
lists as described in section 3.
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
6
la4c2 The next attribute on the OBJECT list is examined and if it
is not SUBOBJ, is must be the name of a property which applies to
the object as a whole.
la4c3 The IMAGE list is searched for the property chosen in step
la4c2. the function GETVAL is used to do this.
la4c4 If this property was found on the IMAGE list, its value is
compared with the value of this property on the OBJECT list. If
they are equal, or if this property was not found on the IMAGE list(because of a partial image), control is returned to step la4c2.
la4cs If the two values are not equal, the name of this attribute
is added to the list of differences which will be returned as the
value of DISCREPANCIES. If more discrepancies are desired, (as
indicated by X) control is returned to step la4c2. Otherwise
DISCREPANCIES returns to the caller.
la4c6 After every attribute on the OBJECT list has been examined,
if enough discrepancies have not yet been found (as indicated by
X), the subobject lists from both the OBJECT and IMAGE are compared
in the following manner (if either or both do not have a subobject
list, control is returned to the caller with the value NIL):
la4c7 The first subobject items on both lists are sorted to their
images in the tree.
A REPORT ON THE CURRENT STATUS OF TUE LISP VERSION OF EPAM 111
las
7
la4cB If both images are identical, or if a subobject item is
missing from this position on either subobject list (as indicated
by a NULL entry) , no difference exists, the lists are shortened by
one item, and control returns to step la4c7.
la4c9 If the images are not identical, the position of this
subobject in the subobject list, is added under the attribute
IDENTITY on the list of discrepancies which will be returned. If
more discrepancies are desired (indicated by X) , the subobject
lists are shortened by one item and control returns to step la4c7.
If either no more subobjects exist on either list, or if X has been
reduced to zero, DISCREPANCIES returns control to the calling
routine.
ADD-SUBOBJ
lasa The function ADD-SUBOBJ is used to add a pointer (token) to the
image of a subobject onto the subobject list of an object.
laSb ADD-SUBOBJ is called with three arguments; SUBOBJ, the item to
be added, OBJECT, the object whose subobject list will contain the
item SUBOBJ, and POSITION, the ordinal number of the position on the
subobject list where the pointer to the image of SUBOBJ will go.
lasc The flow of ADD-SUBOBJ is as follows:
"A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
la6
8
lascl The image of SUBOBJ is obtained by sorting SUBOBJ through the
tree using the function SORT.
lasc2 If either the image is empty or there are discrepancies
between SUBOBJ and its image (as determined by DISCREPANCIES), more
must be learned about SUBOBJ and the function FAMILIARIZE is called
with SUBOBJ as its argument.
lasc3 The list under the attribute SUBOBJ is obtained from the
property list of OBJECT by using the function GETVAL. If OBJECT
does not have a subobject list (i.e. no attribute SUBOBJ), a new
one is created and added to the property list of OBJECT.
lasc4 The image of SUBOBJ, found in step lascl, is now inserted
into the subobject list of OBJECT at the position indicated by
POSITION (counting the first item on a list as 1, the second as 2,
etc.) .lascs If the position of the new subobject is beyond the end of the
existing subobject list, NULL items, indicating missing information,
are inserted to fill out the list.
ADD-DETAIL
la6a The function ADD-DETAIL is used to add more information to
partial images in the net. This added information is obtained from
the object which sorts to the terminal node where the image is found,
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
9
and can consist of either additional, properties about the object as a
whole, or additional subobjects on the subobject list of the image.
la6b ADD-DETAIL has two arguments, OBJECT, which is the whole object
from which all new information will be extracted, and NODE, which is
the terminal node of the tree containing the image to be augmented.
la6c The flow of ADD-DETAIL is as follows:
la6cl The image found in NODE is checked against OBJECT to
determine which properties or subobjects are omitted from the image
information. The function OMMISSIONS performs this operation.
la6c2 If no omissions can be found, the image is complete (i.e., it
contains all the information which the object itself contains), and
ADD-DETAIL can do no more.
la6c3 If an omission has been found, it is checked to sec whether
it is a property or a subobject which is missing.
la6c4 If the omission was a property, the name of the property and
the value of this property on the OBJECT property list are added to
the property list of the image as an attribute-value pair.
la6cs If the omission was a subobject item, the image of this item
is added to the subobject list of the image at the same position in
the list as it had in the subobject list OBJECT. The function
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111.
la7
10
ADD-SUBOBJ is called to perform this operation.
DISTINGUISH- IN-NET
la7a DISTINGUISH- IN-NET is used to augment the size of an existing
test node, by adding a new branch corresponding to an outcome of the
test which was not previously encountered by EPAM.
la7b DISTINGUISH-IN-NET is called with 2 arguments, OBJECT, which is
the new item being discriminated, and IMAGE, which is the (incorrect)
image of OBJECT.
la7c The flow of DISTINGUISH- IN-NET is as follows:
la7cl The local pointer NODE is set first to the entire tree, and
will always point to the next node in the tree at which a test is
to be performed.
la7c2 The test at NODE is performed on both OBJECT and IMAGE and
the results compared.
la7c3 If the results are equal, the appropriate branch of the tree
becomes the next value of NODE and control returns to step la7c2.
la7c4 If the results are not equal, the result of the test on
OBJECT becomes the label at the test node for a new branch of the
tree. This new branch is created by calling the function
■A REPORT ON THE CURRENT STATUS OF THE; LISP VERSION OF EPAM 111
laB
11
FIRST- IMAGER
\a_"KS
£&s£*. In addition, a check is made to see if the result of the test
on IMAGE is currently the label of a branch of the tree (since
IMAGE could be on the OTHER branch of this node), and if not, a new
label and branch is also created for this.
SUBNET
laBa SUBNET is called when no existing test will discriminate between
an object and an incorrect image, and hence a new test node must be
created.
laBb SUBNET is called with three arguments, OBJECT, which is the now
object to be learned, IMAGE, which is the incorrect current image of
OBJECT, and DIFF, which is the list of differences between OBJECT and
IMAGE which was produced by DISCREPANCIES.
laBc The flow of SUBNET is as follows:
laBel The list DIFF contains items which give the names of
attributes whose values on the property lists of OBJECT and IMAGE
are different, or the position numbers of subobjects which differ
on the subobject lists of OBJECT and IMAGE.
laBc2 DIFF is used to extract the items from the property lists of
OBJECT and IMAGE which are known to be different. The function
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
lb so;
lbl
Ib2
Ib3
12
TEST-VALUE performs this operation.
laSco The attribute resulting from the application of TEST-VALUE
to IMAGE becomes the label of the branch with the next node IMAGE.
The attribute resulting from OBJECT becomes the label of a new
branch which is filled in with an image of OBJECT by the function
FIRST-IMAGE. Both of these new branches are thus terminal nodes.
laBc4 The first item on the list DIFF becomes the test for the
newly created test node. In addition, the labels OTHER and NOTAP
arc also added to the new test node for future expansion based on
this test. The branches corresponding to both these labels are
initially empty.
IME EPAM UTILITY FUNCTIONS
SORT ( OBJECT)
Ibla Sorts on object thru the tree from top to terminal node at bottom
and returns the terminal node.
MAKE (FN ARG)
Ib2a This function applys the test FN to the arguments ARG.
GETIMAGE (X)
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
2
13
Ib3a Returns image (found in terminal node) of item x when sorted thru
tree (NIL if no image) .
Ib 4 GETVAL (PROP OBJECT)
Ib4a Finds the value of attribute PROP on attribute-value list OBJECT.
Returns NOTAP if no such attribute is on this list.
Ibs GETSUB (BRANCH OBJECT)
Ibsa Returns a piece of tree structure from object pointed to by
ROADMAP branch. It uses the ROADMAP to point to an item on the
subobject list.
EPAM EXECUTIVE FUNCTIONS
2a Letter Learning
2al All the English letters are assumed .to be known to EPAM. In order to
get complete images of all the letters into the discrimination net, the
special executive function LEARN is called at the start.
2a2 LEARN takes the list of letter images which it is given as an
argument and proceeds to familiarize each one twenty times.
2a3 Since each image consists of ten attribute-value pairs, and since
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
14
familiarization adds one new detail from the given image, twenty
familiarizations arc just enough to guarantee that each image in the net
will be complete.
2a4 With perfect information about letters, EPAM is ready for nonsense
syllable learning.
2b Paired Associate Learning
2bl Paired associate learning in EPAM in accomplished by three upper level
executives: (1) LEARN-PAIRED-ASSOCIATE-LIST, which simulates the
familiar psychological experiment; (2) ASSOCIATE which controls the
learning of nonsense syllable pairs; (3) RESPOND which controls the
performance of the program in the experiment.
2b2 Highest level executive
2b2a LEARN-PAIRED-ASSOCIATE-LIST (LPA) contains and manipulates the
programs model of the real world, the environment. It also calls the
two other executives, ASSOCIATE and RESPOND.
2b2b When LPA is first entered, it sets all counters for statistics to
zero. All nonsense syllables in the given paired associate list are
introduced to the LISP system by giving them the property DUST.
2b2bl The DUST property is a two element attribute-value list
consisting of (a) the type SYL and (b) the list of subobjects which
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
15
are the letters that make up the syllable.
2b2b2 SET-UP-OBJECTS is the function that performs this
initialization.
2b2c LPA then begins a scries of learning trials.
2b2cl At the start of each trial, LPA checks to see if it has
completed the required number of trials or if it has done well
enough on the last trial to quit.
2b2c2 Assuming it should go on, LPA prints the trial number and
positions the make-believe drum to the start of the list (whose
order may have been randomized).
2b2c3 Within each trial, LPA takes pairs one at a time until the
list has been exhausted. It sets STIMULUS to the first syllable of
a pair and RESPONSE to the second syllable while setting the clock
ahead one drum-turn time.
2b2c4 Even though the clock has been set ahead, the previous pair
may have received such a concentrated effort that all the time
available for the current pair has been used. In this case, LPA
prints "NO-TIME-TO-RESPOND"- , sets the response to null and avoids
calling the performance function RESPOND.
2b2c5 If there is time to respond, RESPOND is called to sort the
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
16
pair through the tree and retrieve the image of the second object in
the pair. The clock is decreased by GIVE-R-TM.
2b2c6 Nov; that the program has responded to the stimulus (or failed
to), the drum is turned to reveal the complete pair . In actuality
what happens is that the clock is set ahead by the drum-turn time
before the program ever refers to RESPONSE,
2b2c7 Having the program's response, LPA calls PRINTSYLLABLES to
type out the stimulus, subject's response, and correct response, for
which the clock is decreased by Imagcout-tm.
2b2cB CHECK is called to compare the subject's response against the
correct one, take statistics, and charge Chcck-r-tm against the
clock.
2b2c9 If the program detects that its response is in error, it will
call ASSOCIATE to learn something more about the pair. . .provided it
has the time. If ASSOCIATE can be called, the clock will be
charged Assoc-tm.
2b2c10 The last thing LPA does for each pair is to ask if it is the
last one. When the last pair has been seen, Inter-trial time is
added to the clock.
2b2c1 1 Having reached the last pair, LPA marks the end of the trial
and cycles back for the next one.
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
17
2b2d At the conclusion of the scries of learning trials, a statistical
summary is printed, along with an ideographic discrimination tree (all
by the function RESULTS).
2b3 Pair learning executive
2b3a ASSOCIATE is the decision and learning function for paired
associate learning. When it is called by LEARN-PAIRED-ASSOCIATE-LIST,it knows the stimulus and response items in the pair from the
environment and the stimulus and response items in the pair from the
discrimination tree.
2b3b At the very start, no stimulus item has an image in the net. Null
stimulus images cause ASSOCIATE to call FIRST-IMAGE to place an image
of the stimulus in the tree.
2b3c On the other hand, if the stimulus item has an image, ASSOCIATE
forms a pair with the stimulus image and the subject's response and
sorts it through the net.
2b3d If there is no image of the pair, ASSOCIATE decides to call
FIRST-IMAGE,
to form an image and does nothing further.
2b3e When there is a pair image, ASSOCIATE obtains the second subobject
of the pair and calls it a response. If it is empty, ASSOCIATE takes
the image of the response item from the environment and calls
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
2b4
18
ADD-SUBOBJ TO MAKE THAT IMAGE THE RESPONSE FOR IN THE PAIR IMAGE*
iV3t§-fi#F- Eventually, ASSOCIATE will be dealing with pairs whose response
subobjects are not empty. It checks non-empty responses against theenvironment response, using the function DISCREPANCIES, to find out if
the response is all right as far as it goes. Correct but (possibly)incomplete responses cause ASSOCIATE to call FAMILIARIZE to improveits knowledge about the response. After calling FAMILIARIZE, ASSOCIATE
returns to LPA.
2b3 g Given a response image which is patently bad, ASSOCIATE goes a
little deeper. It asks if the stimulus item of the subjects pairagrees with the environment stimulus, -again by calling DISCREPANCIES.
Presented with a bad stimulus as well, ASSOCIATE will call FAMILIARIZE
to discriminate betweeen the pair which it retrieved from the net and
the environment pair.
2b3h The stimulus item may be all right as far as it goes, while the
response is bad. In this case, ASSOCIATE carries out two tasks.
First, it learns something more about the stimulus by giving it to
FAMILIARIZE. Second, it replaces the response item of the pair with
the image of the true response, calling on ADD-SUBOBJ to make the
replacement.
Performance function
2b4a Given a stimulus item RESPOND has tlie duty of coming back with a
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF E.PAM 111
3
19
response. It is called by LPA whenever LPA's attention is free and the
stimulus item alone is showing in tlie imaginary drum's window.
2b4b When entered, RESPOND sorts the stimulus to get the image. A null
pair image will result in a null response.
2b4c Taking a non-empty stimulus image, RESPOND will form a pair from
it and use GETIMAGE to obtain the pair's image from the discrimination
tree. Here again, a null pair image will result in a null response.
2b4d Having found a non-empty pair, RESPOND follows that mysterious
algorithm that identifies the second subobject of the pair as the
subjects response.
EPAM DATA STRUCTURES
3a Each object or image is represented by a property list (actually a
pointer to a property list) which is composed of attributes and their values
in the following format:
(A 1VI A 2V 2 An Vn)
3b The first attribute of every object is the property TYPE. There are 3
possible values of this attribute in the current system. They arc
LETTER
SYL
PAIR
A F EPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
20
The other attributes of an object depend on it's type.
3c An object of type letter has the following other attributes:
UNE
ARCS
LOOP
VERT
PARE
HORIZ
SYM
SLANT
NAME
The values of these attributes depend on tho particular letter. For example
the property list for the letter a is
(LINE 3 ARCS 0 LOOP 1 VERT 0 PARA NO HORIZ 1 SYM V SLANT B
NAMF. A)
3d EPAM docs not permit partial images of letters in that each letter will
have a complete property list (i.c no attributes are missing)
3e Objects of types SYL and PAIR have only two attributes, TYPE and SUBOBJ.
3el The value of this attribute is always a LIST of pointers to other
objects. For example, the value" of the attribute SUBOBJ on the property
list of a PAIR is a list of 2 pointers to SYL objects, the first being the
stimulus variable and the second the response variable.
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
21
3e2 A SYL object has in turn as the value of the attribute SUBOBJ a list
of pointers (tokens) to the letters which compose the sylable. In this
manner objects arc built up from ordered sequences of other objects (this
order being determined by their position on the SUBOBJ list).
3e3 Partial images are represented by missing items in the SUBOBJ list.
3f Throughout the following discussion the term "TOKEN" will be used to mean
a pointer to a data structure. In this LISP implementation of EPAM a token
is the core .steHSSfge storage address of the S-expression for the data
structure. The programmer never sees this address, since in all printouts the
S-expression is itself printed in full
3fl The discrimination tree is composed of 2 types of nodes - TEST nodes
and TERMINAL nodes.
3fla The terminal nodes have the format
where <imagc> is a pointer to the property list of the item which sorts
to this node of the tree.
3flb An empty terminal node has the format
(TERM) i.e. the <IMACE> pointer is missing.
All nodes which are not terminal nodes are test nodes and have the
following format:
Here <TEST> is the NAME of a test function, of which there are
(TERM <Ifi! jlge> )
(<TEST> <ROADMAP> OTHER NO NOTAP Nn VI NI ...Vk Nk)
A RETORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
22
basically 2 kinds:
3flbl Those that apply to attributes of an object other then SUBOBJ
(i.e. that are germaine to the object itself independent of its
component parts) and
3flb2 those which apply to the subobjects of which the object is
composed.
3flc For the first kind, <ROADMAP> is NULL while for the second kind,
of which there is currently only one function IDENTITY, <ROADMAP> is a
list of ordinal numbers which point to the item on the SUBOBJ list of
an object to which the test IDENTITY applies.
3fld The result of applying the test function <TEST> to an object is a
value and VI, V2, .... Vk are those values which EPAM has previously
discovered and found necessary to discriminate.
3fle Except for IDENTITY, the test functions have the same name as
attributes on objects and images and the result of applying the test to
an object is simply the vale associated with this attribute on the
property list of the object. If the object does not have this
attribute, NOTAP (for not applicable) is the value of the test.
3flf If V is NOTAP as explained above, Nn will be the next 7iode
searched. If none of the Vj or NOTAP match V, EPAM will use the NO as
the next branch, indicating that something OTHER then VI, ... Vk
A REPORT ON THE CURRENT STATUS OF THE LISP VERSION OF EPAM 111
23
resulted from applying the function <TEST> to the object.
3flg The test function IDENTITY operates slightly differently in that
the value of IDENTITY is a token of the IMAG): (at some terminal node
in the tree) of the subobject (in the list under the attribute SUBOBJ
on the property list of tlie object) indicated by <ROADMAP>, or NOTAP
if this subobject or its image can not be found.
3flh Thus the values VI, V
2,
... Vk at IDENTITY test nodes are tokens
of images cleswhere in the tree of subobjects. As before, the pointer V
resulting from the IDENTITY test is compared with Vl, V2, ... Vk and if
an exact match is found, say for Vi, the next branch of the tree taken
in the search will be Ni (of Nn if V = NOTAP). NO is taken if no match
can be found.
APPENDIX 1 -- A USERS GUIDE TO EPAM 111
24
4 INTRODUCTION
4a The EPAM system consists of 3 symbolic LISP files. Two of the files
(LISPS and LISP9) contain various service routines such as TRACE;, EVALQUOTE,
etc. A number of the routines were used when EPAM was run under the DECLISP
system and arc no longer necessary. These functions are on LISPB and will be
removed soon. The actual EPAM lisp program is the file EPAMI2.
5 RUNNING-THE-SYSTEM
5a Go to a teletype and get the attention of the system. This can be done by
typing
CTRL C
one or more times (both keys at once). You have the attention of the system
when it replies by typing a period ".". Next type
C cr (cr stands for carrage return)
The system will respond with the amount of core available. The minimum amount
of core needed to run is 24k. The more core you have, the faster the program
wi 1 1 run .
5b To assign a tape unit enter
A DTA cr
The system will respond with
DTAn assigned
where n is between 1 and 6. If n "- 7 or 0 the system has assigned you one of
APPENDIX 1 — A USERS
GUIDE;
TO EPAM 111
25
the system tapes in which case you had better deassign it in a hurry. To do
this type
D DTA7 (or 0 as the case may be)
Once you have a tape assigned, mount your tape containing the EPAM files on
that unit.
5c To run the LISP system type
\
R LISPXY nn
(where nn is the amount of core you have)
scl After a short wait the system will respond with
ALLOC
to which you reply by hitting the space bar. You are now talking to EVAI
in LISPXY. This is the MACLISP system.
6 Now you are ready to load EPAM
6a To load the EPAM files type
(INC (INPUT DTAn: LISPB LISP 9EPAMI2 ))
The system now reads these three LISP symbolic files from your tape on DTAn.
The system will respond by typing several lines of function names followed by
(END OF EVALQUOTE OPERATOR)
NIL
This indicates that all of the EPAM functions have been read in and are now
ready for use This can take up to several minutes depending on system use.
6b The first thing one must do is learn the alphabet. To do this one would
■APPENDIX 1 — A USERS GUIDE TO EPAM 111
26
enter
(LEARN (QUOTE (A B C I) E F G 11 I J X I, M N
0 P Q R S T U V W X V Z)))
This function builds images of all letters of the alphabet into the tree
This is necessary before any paired associate learning can take place.
6bl Since this operation takes approx. 15 minutes of machine time and
ends in a long printout of the resulting tree (which is always the same)
on the teletype, we have provided an additional file on the tape which
contains this tree immediately after the alphabet has been learned.
Therefore an equivalent and significantly faster operation is to enter the
following:
(INC (INPUT DTAn: BEGIN))
This causes the BEGIN file to be read from DTAn and this file contains the
initial tree. After reading, the system will respond with
TREE
(END OF EVALQUOTE OPERATOR)
NIL
The EPA'! discrimination net is associated with the variable TREE. At any
time one can request to see the net by typing in
TREE (followed by at least one space)
This operation will print the contents of the current net on the output
device (see 4c) .6b2 Please note that tlie BEGIN file cannot be placed at the the end of
the list in 3a.
■APPENDIX 1 -- A USERS GUIDE TO EPAM 111
27
61)3 Furthur note that at any time during a run, you can reinitialize the
tree to the state where the net contains only the letters of the
alphabet by following the procedure outlined in 31)1.
7 Paired Associate Learning in EPAM
7a To get EPAM to learn a paired associate list we call the function LPA
with with one argument which is the list of pairs. For example:
(LPA (QUOTE. ( (KAG LUX) (MEQ DAK) (TOY LEM)
(KUK TIL) (JAL KAQ))))
7b If you wish to learn this list again at some time later during the run,
you can bind the list to a symbol and refer to it as a single word rather
then as a long list. For example to bind the list mentioned above to the
symbol KAGLUK enter
(CSETQ KAGLUK (QUOTE ((KAG LUK) (MEQ DAX) (TOV LEM)
(KUK TIL) (JAL KAQ))))
Now to learn this list enter
(LPA KAGLUK)
The above paired associate list will remain bound to the symbol KAGLUK for
the entire duration of you run.
7c All output is usually directed to the teletype. One may want to use
other devices at times, particularly
7cl the line printer for high volume output: traces, or nitty-gritty
copies of the discrimination net
APPENDIX 1 -- A USERS GUIDE TO EPAM 111
28
7c2 mag tape for saving new symbolic lisp definitions: paired-associate
lists, or initial dicrimination nets. For example, the BEGIN file.
7c3 To redirect output, use the OUTC and OUTPUT functions.
7c3a To output on the line printer, type:
(OUTC (OUTPUT LPT: )T) NOTE that no response will be given on
the teletype. One continues to use the teletype for input, of course.
7c3b To return output to the teletype, type:
(OUTC NIL T) This prints tlie final line on the printer, and
returns the value NIL, which is typed on the teletype.
7c3c To output on an assigned tape, type:
(OUTC (OUTPUT DTAn: file ) +T) where "n" is the number of the
tape (1,2,..., 6) and file is the name of a file on the tape, (see section 2b
for tape assigning details). Note that no response will be given on the
teletype. The teletype continues to be the input device, of course.
7c3d When one is finished with tape output, type
(OUTC NIL T) to write the last buffer onto tape, and return
the value NIL, which is typed on the teletype.
7c3e For example, if one is tracing many functions (section 5 below),
the teletype would be far too slow. A learning trial on list FOBAZ
would leave a record on the teletype looking like this:
APPENDIX 1 -- A USERS
GUIDE;
TO EPAM 111
29
(OUTC (OUTPUT LPT:) T) (LPA FOBAZ) (OUTC NIL T) NIL
In the meantime, the complete trace along with the output will have
been printed on the line printer.
8 Tracing allows one to study the detailed behavior of EPAM's functions.
8a To trace a function, eg. FAMILIARIZE, type
(TRACE FAMILIARIZE)
Each time FAMILIARIZE is entered, its name will be printed along with the
values of its arguments.
Bal WARNING: printing is normally done on the teletype---if voluminous
printing is expected, be sure to redirect the output to the line printer
(see section 4c for details.)
Ba2 Tracing a function makes a permanent change in its lisp definition
(for the duration of the lisp rim). To stop a function from tracing, one
must call untrace e.g.,
(UNTRACE FAMI L IAR IZE )
Ba3 Both trace and untrace return the name of their argument when the
operation has successfully been performed. Should you misspell the name
or make some other mistake, trace and untrace return NIL.
Ba4 Note that trace and untrace take exactly one argument, not a list.
9 Timing constants in EPAM may be changed by using CSETQ. To change the
-.APPENDIX 1 A USERS GUIDE TO EPAM 111-rf
30
drum- turn time, for example, type
(CSETQ DRUM-TURN-TM 150.)
where "150." is the new value you wish it to have (the period is optional).
9a Current values for timing constants can be obtained individually by
typing the name of the constant followed by a space; e.g.,
DRUM-TURN-TM b
where "b" stands for a single space
9b A function which prints all the timing constant values is planned. Names
for the timing constants have to be taken from the program listing. (see
lines 6500-6900.)