1965 11_#27_Part_1 11 #27 Part 1

1965-11_#27_Part_1 1965-11_%2327_Part_1

User Manual: 1965-11_#27_Part_1

Open the PDF directly: View PDF PDF.
Page Count: 1119

Download1965-11_#27_Part_1 1965-11 #27 Part 1
Open PDF In BrowserView PDF
AFIPS
CONFERENCE
PROCEEDINGS
VOLUME 27
PART 1

1965
FALL JOINT
COMPUTER
CONFERENCE

The ideas and opinions expressed herein are solely those of the
authors and are not necessarily representative of or endorsed by the
1965 Fall Joint Computer Conf~rence Committee or the American
Federation of Information Processing Societies.

Library of Congress Catalog Card Number 55-44701
Spartan Books, Div. of
Books, Inc.
1250 Connecticut Avenue, N. W.
Washington, D. C.

© 1965 by the American Federation of Information Processing Societies,
211 E. 43rd.St., New York, N. Y. 10017. All rights reserved. This book,
or parts thereof, may not be reproduced in any form without permission of
the publishers.
Sold distributors in Great Britain, the British
Commonwealth, and the Continent of Europe:
Macmillan and Co., Ltd.
4 Little Essex Street
London W. C. 2

ii

PREFACE

This volume records in part the technical material
presented at the 1965 Fall Joint Computer Conference. Contained in this publication are the formal
papers selected from a record number of contributions submitted to the Technical Program Committee. No attempt has been made to incorporate
the material presented at panels and tutorial sessions
of the Conference, nor have the invited papers
presented on the final day of the Conference been
included. The Conference Committee hopes that a
subsequent volume will emerge to catch the living
spirit of such deliberations.
Still, the size of this volume is large, just as the
scope of the Conference is broad. This is, in part,
deliberate, since the Conference attempted to provide
the opportunity for professional communication on
every level. Recognizing the increasing degree of
specialization in the hardware and software fields,
the Technical Program Committee added a third
information channel to the Conference to focus
attention on management and applications. These
sessions dealt with questions of marketing and economics as well as applications in the scientific and

humanistic fields. Thus to the orientation in hardware
and software was added the direction of applications
and management in the disciplines that are concerned
with information processing.
The most distinctive feature of this Conference,
however, must be the five "discuss-only" sessions
for which preprints were available before the Conference. Hopefully, new dimensions were added to
the papers through a searching examination of the
material on the floor of the Conference. We regret
that we cannot record the results and evaluate the
technique.
The real and permanent contribution of the 1965
Fall Joint Computer Conference is still the technical
material presented in this volume. The credit goes
to the authors with greatful appreciation of the role
of the Technical Program Committee and Session
Chairmen who engineered the structure. Behind
them are the contributions of many others who, as
members of the various committees, made the Conference possible.
ROBERT W. RECTOR, General Chairman
1965 Fall Joint Computer Conference

CONTENTS
Page
iii

Preface
SESSION 1: PROGRAMMING LANGUAGES
Universal Programming Languages and Processors:
A Brief Summary and New Concepts

WALTER H. BURKHARPT

1

JOHN J. CLANCY
MARK S. FINEBERG

23

R. G. TOBEY
R. J. BOBROW
S. N. ZILLES

37

B. J. KARAFIN

53

MELVIN KLERER
JACK MAY

63

Digital Simulation Languages: A Critique and A Guide

Automatic Simplification of Mathematical ExpressionsThe Formac Algorithm

The New Block Diagram Compiler for Simulation of
Sampled-Data Systems
Two-Dimensional Programming

SESSION 2: ADVANCES IN COMPUTER ORGANIZATION
W. C. MCGEE
H. E. PETERSEN

77

R. E. BRILEY

93

S. P. FRANKEL
J. HERNANDEZ

99

An Associative Parallel Processor with Application
to Picture Processing

R. M. BIRD
R. H. FULLER

105

Computer Organization for Array Processing

D. N. SENZIG
R. V. SMITH

117

Microprogramming for Data Acquisition and COli.trol

Picoprogramming: A New Approach to Internal
Computer Control
A Precession Pattern in a Delay Line Memory

SESSION 3: EFFICIENCY AND MANAGEMENT OF
COMPUTER INSTALLATIONS
G. A. GARRETT

129

The Multi-Discipline Approach: A Marketing Application

B. G. MENDELSON
R. V. MONAGHAN

139

Organizational Philosophy and the Computer Center

M. H. GoTTERER
A. W. STALNAKER

145

Management Problems of Aerospace Computer Centers

v

vi
Page
Planning for Generalized Business Systems
Computer Systems Design and Analysis Through Simulation

Basic Concepts for Planning an Electronic Data
Processing System

R. V. HEAD

153

G. K. HUTCHINSON
J. N. MAGUIRE

161

A. F.

MORAVEC

169

SESSION 6: A NEW REMOTE ACCESSED MAN-MACHINE SYSTEM

,

Introduction and Overview of the Multics System

F. J. CORBATO
A. VYSSOTSKY

V.

System Design of a Computer for
Time-Sharing Applications

Structure of the Multics Supervisor

V.

E. 'L.

GLASER

G.

A.

OLIVER

A.

VYSSOTSKY

F. J.

185
197

203

CORBATO

R. M. GRAHAM

A General-Purpose File System for Secondary Storage

C.

R.

P. G.
Communications and Input-Output Switching in a
Multiplex Computing System

J. F.

213

OSSANNA

231

L. MIKUS

S. D.
Some Thoughts About the Social Implications of
Accessible Computing

DALEY

NEUMANN

E. E.

DUNTEN

DAVID, JR.

243

R. M. FANO

SESSION 7: APPLICATIONS OF SIMULATION
Structure and Dynamics of Military Simulations
Analogue-Digital Data Processing of Respiratory Parameters
Computer Simulation: A Solution Technique for
Management Problems
The Role of the Computer in Humanistic Scholarship
The Structure and Character of Useful InformationProcessing Simulations

LEVINE

249

MURPHY

253

E.

T. W.

ROWE

259

BOWLES

269

L. FEIN

277

A. J.

E. A.

SESSION 8: NATURAL LANGUAGE PROCESSING
Catalogs: A Flexible Data Structure for Magnetic Tape

MARTIN

KAy

THEODORE ZIEHE

283

vii

Page
Information Search Optimization and Iterative
Retrieval Techniques

J. J. ROCCHIO

293

G. SALTON

An Economical Program for Limited Parsing of English

D. C. CLARKE

307

R. E. WALL

The Mitre Syntactic Analysis Procedure for
Transformational Grammars

ARNOLD M. ZWICKY

317

JOYCE FRIEDMAN
BARBARA C. HALL
DONALD E. WALKER

SESSION 9: CELLULAR TECHNIQUES FOR LOGIC,
MEMORY AND SYSTEMS
R. C. MINNICK

327

R. H. CANADAY

343

R. H. SHORT

355

Cobweb Cellular Arrays
Two-Dimensional Iterative Logic
Two-Rail Cellular Cascades
Associative Memory Structure

T.

B.

McKEEVER

371

SESSION 11: THE REVOLUTION IN WRITTEN COMMUNICATION
Computer Editing, Typesetting and Image Generation

M.

V.

MATHEWS

389

JOAN E. MILLER

The Left Hand of Scholarship: Computer Experiments
with Recorded Text as a Communication Medium

GLENN E. ROUDABUSH
CHARLES R.

T.

399

BACON

R. BRUCE BRIGGS
JAMES A. FIERST
DALE W. ISNER
HIROSHI A. NOGUNI

SESSION 12: ON-LINE INTERACTIVE SOFTWARE SYSTEMS
MATHLAB: A Program for On-Line Machine Assistance
in Symbolic Computations

C. ENGELMAN

413

An Integrated Computer System for Engineering Problem
Solving

D. Roos

423

E. BENNETT

435

AESOP: A Prototype for On-Line User Control of
Organizational Data Storage, Retrieval and Processing

E. HAINES
J. SUMMERS

457

Structuring Programs for Multi-Program Time-Sharing
On-Line Applications
Interactive Machine Language Programming

K. LOCK
B.

W.

LAMPSON

473

viii
Page
Responsive Time-Sharing Computer in Business Significance and Implications

Its
CHARLES W. ADAMS

483

SESSION 13: HIGH SPEED COMPUTER LOGIC CIRCUITS
Circuit Implementation of High Speed Pipeline Systems
High Speed Logic Circuit Considerations
Crosstalk and Reflections in High Speed Digital Systems

LEONARD W. COTTON

489

W. H. HOWE

505

A. FELLER
H. R. KAuPp
J. J. DIGIACOMO

511

SESSION 14: COMPUTERS IN THE BIOLOGICAL AND
SOCIAL SCIENCES
Integrating Computers into Behavioral Science Research

HAROLD BORKO

527

GEOFFREY H. BALL

533

JOSEPH A. STEINBORN

561

Computer Correlation of Intracellular Neuronal Responses

FREDERICK F. HILTZ

567

Information Processing of Cancer Chemotherapy Data

ALICE R. HOLMES
ROBERT K. AUSMAN

583

Data Analysis in the Social Sciences
Nonlinear Regression Models in Biology

SESSION 18: TIME-SHARED COMPUTER SYSTEMS:
SOFTWARE/HARDWARE CONSIDERATIONS
A Facility for Experimentation in Man-Machine
Interaction

R. WAYNE LICHTENBERGER
MELVIN W. PIRTLE

589

JAMES W. FORGIE

599

JAMES D. MCCULLOUGH
KERMITH H. SPEIERMAN
FRANK W. ZURCHER

611

WEBB T. COMFORT

619

A Time- and Memory-Sharing Executive Program
for Quick-Response On-Line Applications
Design for a Multiple User Multiprocessing System

A Computing System Design for User Service

SESSION 19: SCRATCHPAD MEMORIES
Design Considerations for a 25-Nsec Tunnel Diode Memory

SMID: A New Memory Element

D. J. CRAWFORD
R. L. MOORE
J. A. PARISI
J. K. PICCIANO
W. D. PRICER

627

R. P. SHIVELY

637

ix
Page
An Experimental Sixty-Five Nanosecond Thin Film
Scratchpad Memory System

G. J. AMMON
C. NEITZERT

Impact of Scratchpads in Design; Multi-Functional
Scratchpad Memories in the Burroughs B8500

S. E. GLUCK

Scratchpad Oriented Designs in the RCA Spectra 70
Scratchpad Memories at Honeywell: Past, Present
and Future

649

661

A. T. LING

667
679

N. NISENOFF

SESSION 20: ARITHMETIC TECHNIQUES AND SYSTEMS
A Bounded Carry Inspection Adder for Fast
Parallel Arithmetic

689
EMANUEL KATELL
JOSEPH F. KRUY

695

A Checking Arithmetic Unit

RICHARD A. DAVIS

705

Serial Arithmetic Techniques

M. LEHMAN
D. SENZIG
J. LEE

715

A Fast Conditional Sum Adder Using Carry Bypass Logic

SESSION 23: SIMULATION OF HUMAN BEHAVIOR
Simulation Models for Psychometric Theories
Human Decision Making Under Uncertainty and Risk:
Computer-Based Experiments and a Heuristic
Simulation Program
Computer Experiments in Motor Learning

C. E. HELM

727

N. V. FINDLER

737

G. R. BUSSEY

753

SESSION 24: HIGH SPEED READ ONLY MEMORIES
A Survey of Read Only Memories
A High-Speed, Woven Read-Only Memory

A Thin Magnetic Film Computer Memory Using a Resonant
Absorption Non-Destructive Read-Out Technique

Development of an E-Core Read-Only Memory

MORTONH. LEWIN

775

M. TAKASHIMA
H. MEADA
A. J. KOLK JR.

789

M.MAY
J. L. ARMSTRONG
W. W. POWEL

801

P. S. SIDHU
B. BUSSELL

809

x
Page
SESSION 25: INPUT/OUTPUT EQUIPMENT
FOR CLOSER MAN-MACHINE INTERFACE
MAGIC: A Machine for Automatic Graphics
Interface to a Computer

D. E. RIPPY
D. E. HUMPHRIES
J. A. CUNNINGHAM

819

A Magnetic Device for Computer Graphic Input

M. H. LEWIN

831

Graphic I -

W. H. NINKE

839

D. R. HARING

847

A. B. URQUHART

857

A Remote Graphical Display Console System

The Beam Pen: A Novel High Speed, Input/Output
Device for Cathode-Ray-Tube Display Systems
Voice Output from IBM System/360

SESSION 26: INDUSTRIAL APPLICATIONS
Corrugator Plant Operating System

WALTER J. KOCH

867

WILLIAM G. DAVIDSON

871

Quality Evaluation of Test Operation via
Electronic Data Processing

A. A. DAUSH

879

The Introduction of Man-Computer Graphics into the
Aerospace Industry

S. H. CHASEN

883

Real Time Programming and Athena Support at
White Sands Missile Range

SESSION 27: HYBRID COMPUTERS FOR FUTURE SYSTEMS
ARTHUR BURNS

893

Optimum Design and Error Analysis of Digital
Integrators. for Discrete System Simulation

ROGER W. BURT
ANDREW P. SAGE

903

Sequential Analog-Digital Computer (SADC)

HERMAN SCHMID

915

Design of a High Speed DDA

M. W. GOLDMAN

929

Hybrid Computation for Lunar Excursion Module Studies

SESSION 28: COMPUTER DIMENSIONS IN LEARNING
Engineering Mathematics via Computers
The Computer: Tutor and Research Assistant
WOSP: A Word-Organized Stored-Program Training Aid
CASE: A Program for Simulation of Concept Learning

JOHN STAUDHAMMER

951

ROBERT J. MEYER

959

M. RASPANTI

965

FRANK B. BAKER

979

xi
Page
SESSION 29: MEMORIES FOR FUTURE COMPUTERS
A 375 Nanosecond Main Memory System Utilizing 7 Mil Cores

Monolithic Ferrite Memories

High Speed Ferrite 2-Y2 D Memory System
Design and Fibrication of a Magnetic Thin Film
Integrated Circuit Memory
Batch Fabricated Matrix Memories

Integrated Semi-Conductor Memory System

G. E. WERNER
R. M. WHALEN

985

I. ABEYTA
M. KAUFMAN
P. LAWRENCE

995

T. J. GILLIGAN

1011

T. J. MATCOVICH
W. FLANNERY

1023

T. L. MCCORMACK
C. R. BRITTARD
H. W. FULLER

1035

HARLEY A. PERKINS
JACK D. SCHMIDT

1053

SESSION 30: COMPUTER-AIDED DESIGN & MAINTENANCE
Strobes-Shared Time Repair of Big Electronic Systems
A Self-Diagnosable Computer

An Automated Interconnect Design System
SystematiC Design of Automata

J. T. QUATSE

1065

R. E. FORBES
D. H. RUTHERFORD
C. B. STIEGLITZ
L. H. TuNG

1073

W. E. PICKRELL

1087

J. P. ROTH

1093

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS:
A BRIEF SURVEY AND NEW CONCEPTS
Walter H. Burkhardt
Computer Control Company, Inc.
Framingham, Massachusetts

ment of the problem was given in a fixed mathematical form. This is due to the special nature of computers, with the memories, the circuit logic, and
electronic switching elements having easy adaptation to mathematical problems and to a tremendous
bulk of knowledge in the form of mathematical formalism.
There are now on the one side machines with
more or less special features for the solution of particular problems, and on the other the problems,
given sometimes in a self-contained formulation,
sometimes in only a vague and inexact form, and
ranging over the whole spectrum of life, science,
and society. The medium to combine both is known
as programming. This function consists of mapping
a solution given to the problems on the machine,
but now better defined as dividing the problems
into elementary task-components and translating
them into terms of the machine.
In this paper, the interface between the problems
and the machines will be discussed with emphasis
on the tools for the solutions-the programming
languages and processors.

INTRODUCTION
Progress in any field depends on the materialization of new ideas. But before this is possible, these
ideas have to be found, investigated, developed and
adapted to the changing world.
In computing, i.e., the use of computers for the
solution of problems, new ideas are available everywhere, although the implications behind them and
the influence on the state-of-the-art are generally
not very well understood. Therefore it is often difficult to separate the wheat from the chaff.
But even valuable ideas are not always useful and
welcome. That is especially the case when the basis
for them is not adquately prepared. To know which
ideas are useful at present, it is necessary to evaluate the state-of-the-art to determine how developments in the field will proceed. There are other reasons. One might be to give the nonspecialist a fast
orientation; another is to readjust the basis in a fast
growing and changing field.
The last decade brought a tremendous gain in
overall computer power and for a unit outlay as
well. Therefore, it is not too surprising if many old
values have to be changed and new ones appear.
The advent of computers gave a very useful tool
for the solution of many tasks for which the stat-

Statement of Problem

The application of computers for solving problems in technical, scientific, and commercial fields

1

2

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

has been very successful. But progress is hampered
by the fact that the machines accept primarily only
their own special language, on digital computers
composed of number sequences. These sequences
are mostly long chains of zeros and ones-which is
rather unintelligible to humans and quite different
from the languages in which the tasks are and can
be easily described.
Possible Solutions
There are two possibilities for solving the difficulties made by the gap between the languages of
machines and the languages of problems. One solution would be to adapt the languages of the machines by developing machine languages more general and closer to the problems encountered, the
high-level language computers, the other one would
be to adapt the problems to the machines. This is
done presently with intermediate languages, between machines and problems, which are easier for
people to use than contemporary absolute machine
languages.
High-Level Language Computers. This would mean
to develop a machine which could communicate in
a higher language. Suggested rather early, and attempted to implement·· to some extent (for example,
in the SEAC machine, 1 this idea could give an elegant solution to the problem. Therefore perhaps it
is revived in newer designs,2,3 and it is even suggested to use a language of the ALGOL-type4 as
machine language. * In addition to the drawbacks
due to the insufficiencies of contemporary programming languages (and these are the only candidates
at present for high-level machine languages) there
are several factors opposed to such a development.
The arguments of high cost for circuitry and restrictions to the applications area are mainly based
on the 'economic feasibility of such designs. But
with an advent of very cheap components and assembly methods, these restrictions could change in
the future.
The arguments of altering. bases must be taken
more seriously. The development is neither fixed on
the problem side nor on the machine side.
Development on the Problem Side. To illustrate
this point a simple example might be taken. In ap*A similar step in this direction is sometimes attempted
in microprogrammed machines with some higher-level language implemented in memory in a semifixed manner.

1965

plications to commercial problems a basic function
is certainly sorting, which is used over and over
again. So it would seem natural to include a machine operation for sorting in the repertoire of such
high-level commercial machines. But what technique of sorting 5 should be implemented? The
best technique to be selected depends on the data
formats and on the machine configurations so that
selecting only one technique is not very feasible.
But inclusion of several different techniques is
highly unlikely. This example will show the difficulties for only one task function. The overall requirements complicate the situation so much that
no reasonable solution is in sight.
Development on Machine Side. Many opinions
state the view that the development on the machine
side is now fixed. 6 But this belief seems prejudiced
and premature. For example, in the near future
memory hierarchies (let's say a memory of 128word diode storage with 50 nanoseconds and 2048
words thin film or thin wire with 200 nanoseconds
and back-up storage of 32,768 words at 600 nanosecond cycle time. Behind these might be bulk core
storage, drums, disks and tapes) could give a user
more computer power (according to the principle of
limited resources) than the more conventional recent design; or mastery of parallel execution features, etc. Although this argument affects mainly
the internal design of a possible high-level language
machine, it complicates the picture and eliminates
many suggestions for solutions. The potentialities
for a standard machine ( or assembly) language
are impeded too by this aspect.
Solutions by Intermediate Languages. The solution
by intermediate steps between problem and machine
languages via programming was at least in the past
the most successful one. It can easily be seen that
the closer to the problem the steps are taken, the
more powerful and quickened the solution will be.
So the region between problems and machines contains software levels of differing machine and problem independence.
Efficiency of Machine Use. Whenever a programming language is different from actual low-level machine language, questions concerning the efficient use of the hardware are apt to arise. These
seem to be of greatest importance on slow and expensive machines. Linearly extrapolated, the emphasis on these questions is decreased to 2 percent
when relating a machine with O.5-miscrosecond cy-

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

cle time in 1965 to one with 25-miscrosecond cycle
time in 1951 at the same price. Interestingly, the
highest requirements for run-time optimization
with compilers are imposed on hardware which is
inadquate for the intended problem solutions (e.g.,
optimization in FORTRAN II on the 704 and in
ALPHA on the M208 for the solution of difficult
partial differential equations). With the need for
faster computers 9 and a decline in prices for hardware, as in the past decade, these efficiency questions are bound to diminish and perhaps to disappear altogether.
Hierarchy of Programming Languages. Different
hierarchies of programming languages are already
proposed,IO where the criterion is the machine configuration concerned. Of course, many other characteristics could be chosen for classification of programming languages, but the one here presented in
respect to machine independence seems to be most
interesting. A good measure for the level is the degee of declarative freedom for the user. Therefore
on the lowest level would be the absolute machine
languages and with more declarative possibilities
gradually increasing up to the problem level of
declarative languages as follows:
Absolute machine languages (machine level)

No declarative freedom

Assembly languages

No specification of names
and locations necessary

Procedural languages

N a detailed machine
commands necessary

Problem oriented
languages

Language elements from
problem but command
structure procedural

Specification languages,
augmented by semantics

Description of relations
in the prOblem, freedom
of procedure

Declarative languages
(problem level)

Description of the problem, freedom of procedure and solution

The levels from absolute machine language to
procedural languages are very well known from the
literature of rec~nt years. (Sometimes in the past,
procedural languages like FORTRAN, ALGOL and
JOVIAL were incorrectly denoted as problemoriented languages.) Examples for problem-oriented
languages are found inAPT, eOGO, Simscript, etc. l l
The block-notation languages 12 for analog-hybrid

3

simulation on digital computers are examples of augmented specification languages. Semantic content is
there defined by the fixed meaning of the block
names (in MIDAS 13 they are the operations and the
operands by means of the successor specification).
Recently an example for another use of a specification language in an applications program was published14 where Backus-Naur-Form specification was
adopted. As can be expected, the experience reported
stresses the improved facilities .(compared with conventional programming languages) in programming,
check-out, and incorporating changes into the program over conventional programming languages.
Perhaps the first example in declarative languages,
although not on the level designed by the term today,
was the dynamic analysis language DYANA. 15 Some
other approaches are described in a recent paper .16
Translation among Programming Languages. All
programming languages above the actual machine
language impose the necessity for translation to that
language. This task is done by a translator, compiler
or assembler, hereafter called a processor.
Two different aspects have to be distinguished
concerning the translation of programs:
1. Translations horizontally on one level
2. Translations vertically to other levels
Obviously, all translations can be regarded as composed of these two possibilities to various degrees.
The requirements for the practicability of translation
are:
• The rules for the connections of elements in
the languages (the grammars or syntaxes).
• The elements of the languages ( the dictionaries) .
• Their respective relations in both languages
as well.
1. Translations. Horizontally. Horizontal translations of programs among different programming
languages of the same level are in general not possible. The reason is, that the results of one operation
(in extended sense) in a program in source language (the language of the input) may determine
the kind of operation to be used next in the program, and that often the target equivalent of a
source language item is not available. The criterion
for translatability is that all operations in the
source language can be translated separately into
the target language (the language of the output) in
respect to power and extend. Translatability from

4

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

one source language A to a target language B gives,
however, no indications for translatability from B
to A. Whenever some operations are not translatable, they may be simulated, e.g., interpreted at run
time. Because. of the huge number of redundant operation parts involved, interpreted programs run
normally orders of magnitudes slower than comparable translated ones on the same machine.
2. Translation Vertically. Vertical translation of
programs is divided in (a) upward and (b) downward translation.
(a) Upward translations impose generally the
same requirements as those detailed for horizontal
translations. A special case governs the upward
translation or previously downward translated programs. Contrary to some opinion,17 no relevant information for the execution of a program is lost in
the translation process, only the redundant. Therefore, if the translation algorithm is given, all necessary information can be retrieved from programs,
that had been translated before, to build a fully
equivalent program on the former level.
(b) Downward translations are normally not difficult' because the languages on the higher levels are
so designed as to give a specific and determined
target equivalent on the lower level for each source
language element.
Now, by the mechanical transformation of the
program (a description of a problem or its solution)
into representations of other levels with or without
intermediate levels (e.g., DYANA ~ FORTRAN II,
FORTRAN II ~ SAP704, SAP704 ~ 70'4) not
more solutions of a problem are obtained, but only
different representations of the program. Therefore,
with regard to problem considerations, all different
representations of one program (e.g., diagrams augmented by text, DYANA, FORTRAN II, SAP and
704), and all programs giving the same results for
the same sets of data, are said to l?e equivalent. A
similar relation is given among specification languages or notations. 18 Continuing this thought, most
efficiency questions, grammar and syntax peculiarities and details, though interesting and necessary for
the development of the transformation processors,
are definitely unimportant and sometimes even undesirable for the solution of a task in applications
programming.
Experience with High-Level Programming Languages. The aspects of the historical development of
high-level programming languages (with regard to

1965

machine independence) are described in detail
elsewhere. 11 It might be stressed that FORTRAN
was not the first high-level language of algebraic
type but had forerunners in Rutishauser's algebraic
language on the Ermeth in Zurich and in Lanig and
Zirler's language on Whirlwind in MIT. Even
MATH-MATIC for the Univac I, a commercially
available machine, was earlier. But the small VI (a
decimal and alphanumeric machine with only 45
instructions) did not really necessitate and justify a
high-level algebraic language; this was later required with the more complex machines bf von
Neumann-type, like the 704.
The advantages of high-level programming languages are more apparent the more the considered
languages are independent from the machines.
These advantages are:
1. Easier learning and use than lower-level languages, because they are less complicated,
2. Time savings in programming of solutions
for problems,
3. Time savings in debugging and correcting
possibilities for slightly different prol;>lems,
5. Higher machine independence for transition to other computers, and otherwise for
compatibility with hardware,
6. Better documentation (compatibility
among programs and different programmers,
7. More powerful structuring in terms of
problem.
Points (1), (2), and (3) were stressed in the
past and found most important. 19 Nowadays (4)
and (5) receive more attention and in the future
(5), (6), and (7) may become the dominant ones.
It is interesting to note that points (1) through
( 4) have been similarly known to engineers for
decades for the solution of problems in formal instead of numerical notation.
Most astonishing is the large number of programs
still written in a low-level language. 2o This can only
be explained by a steep information gradient between the knowledge in the field and the application programmers, or better, their managers.

Development of New High-Level Programming
Languages
Introduction. The development of new high-level
programming languages, at least in the past, has
been more evolutionary than revolutionary. So the

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

step from FORTRAN to ALGOL brought with it
these advantages in order of their estimated importance:
•
•
•
•

Chained logical decision sequences
Block structure of program parts
Free notation format
Lifting of various machine restrictions
(i.e., number of subscripts in variables,
modes of expressions, etc.)

Unfortunately, due perhaps to the ambiguities
embedded in ALGOL and its definition, the gain
from switching over to ALGOL programming from
FOR TRAN is considered marginal. Despite all the
efforts in the past, less than 10 percent of all programs for scientific and engineering applications
are coded in ALGOL20 - which is not a striking
triumph for a successor to FORTRAN.21 Similarly, less than 5 percent of the programs in the same
area are coded in FORTRAN IV -what can be
cautiously described as failure of the new facilities
incorporated in FORTRAN IV over FORTRAN
II. The use of a programming language by applications programmers has to be the measure for its
success. If one is not sufficiently used, a programming language is certainly as dead and obsolete as
Mayan or Babylonian and perhaps of just academic
interest.

Requirements for a New High-Level Programming
Language. Several important design criteria - often
violated even in recent designs - have to be
stressed:
Close Relationship to the Problems in the Desired Area. This allows the user a concise and powerful description of the processes and concepts.
Uniqueness. Each item in a correct program has
to have one unique and defined meaning. This is
required by all compatibility reasons.
Simplicity and Clearness of Notation. The language has to be developed and designed with a programming notation for ease of learning, use and
handling of the language in the intended problem
area. (Of course, that does not exclude a formal
and rigid definition of the language. But such a definition should hardly ever be imposed upon a
user.) Requirements for readability and intelligibility are included here. This point of convenience has
to be the main criterion for the standardization of
programming languages. Admittedly, generally one
proposed standard is better than another, if it is

5

more convenient for the user.
Completeness. A good programming language
should be able to handle all occurring tasks within
its designed scope, without need for using means
from outside. Good counter-examples are the missing string-handling facilities in FORTRAN and the
input/output part in ALGOL 60.
Segmentation. For the practical application of
programming languages to large problems, efficient
segmentation features are desirable so that parts of
problems can be handled independently.
Compatibility with Existing Programming Languages. In addition to compatibility in other respects, one is important in regard to the already accumulated knowledge of problem ~olutions (the
program libraries). These libraries consist of two
parts-one created by the present user working with
the language and the other developed elsewhere or
earlier with other languages. The first part requires
elements in the language to build up and use older
programs and program parts in new connotations;
the second demands some means for translation or
interpretation of old libraries.

Development Possibilities. There are three ways of
developing a new programming language:
• Cleaning up and refining existing languages;
• Elaboration and combination of known
useful· features;
• Development from the basic requirements of a problem area.
All three methods were used in the past either separately or combined.

Proliferation and Solutions. The application of
computers with high-level languages to different
problem areas causes a proliferation of programming languages according to the vernaculars in the
application fields. There are two different possibilities:
1. If single programming languages are to
be developed close to the vernaculars, then
some incompatibility will exist between
these.
2. On the other hand, if an intermediate language somewhere in the middle between
problems and machines will be accepted as
the programming standard, then much

6

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

more effort has to be spent on defining the
problems to the computers.
The historical development of progress in the
computer field favors the first alternative, while
computer manufacturers and operations managers of
computer installations try to hold to the second one.
Possible solutions to the dilemma might be found
in:
( a ) Inclusion of language elements of neighboring problem areas into programming
languages presently in use or being developed, or opening the borders to that area;
for an intermediate language with the
scope of an UNCOL22 but on a higher
level or as a subset of a universal programming language.
(b) Development of universal programming
languages.
( c) Development of universal processors.
Universality in this respect is meant to comprise
at least the elements of two really different problem
areas (not vertical combinations or notations) .22
Several proposals for the first of these solutions
(inclusion of language elements) are already reported. Of these, BEEF24 and ALGOL-Genius25 are
both designed to combine a programming language
for algorithmic with one for commercial procedures.
More ambitious in this respect is the NPLSHARE26,27 language to combine in addition the elements of real-time and command languages.
It is most noticeable that software systems (languages and processors) developed upwards from the
machines by combinatinn of existing elements do
not tend to please many users. Despite the desirability of larger extended systems, there are always users who do not need the new scope and are unwilling to pay for the clumsiness and complication due
to inadequate design.
Other development possibilities going from a
fixed base are found in the features of open-ended
systems. To some extent at present, the combining
of languages of two areas results in at least a partial
universal programming language.
UNIVERSAL PROGRAMMING LANGUAGES
Definition

A universal programming language can be defined as a complete set of elements to describe the

1965

problems and solutions in all problem areas. If such
a language can be developed, the design requirements will be the same as for a single high-level
programming language (see the requirements listed
above), but much more valid.
Mathematical Definition and Development.
It is easy to define mathematically the design and

development of a universal programming language
in general.
The complete set Si of all equivalent programs*
Pik1 for the solution of problem k in one area is
given by
Si = UiPik1

Then the operation 8 selects from this set a program,
maximal in respect to power of problem description
Dk = 8 UiPik1
Now all maximal programs of one problem area form
a new complete set Sk:
Sk = Uk 8 UiPik1
From this new set, operation '}' extracts the language
elements and operations for the given area to form
the language for the problem area Gj:
Gj = '}' Uk 8 UiPik1
For the generalized and universal programming language Au, the complete set Sl, generated by U1, of
all languages G1 has to be considered, combined and
integrated by the operation A to give
Au = A U1'}' Uk 8 UiPik1
As may be recognized, the operations, 8, ,}" and
A are very complex and difficult, but the most serious drawback seems to be the large extent of the
various sets required. But this is the only way for
development, be it by methods of evolution via
open-ended languages or by revolution via problem
analysis and then language determination (as given
by an example in reference 28.
Old Proposals

The problem of proliferation of programming
languages was recognized rather early especially in
respect to the effects on processor production. 22,29
So UNCaL, a universal computer-oriented language
was proposed as an interface between high-level
programming languages and computers. Due to the
open-endedness on both sides of problems and machines, such a scheme cannot easily be designed on
the basis of a fixed language. On the other hand, 30
examples for this scheme are known as notations,
*See "Translation among Programming Languages" above.

7

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

e.g., the prefix notation. 30 But this design level
seems to be inadequate for a satisfactory solution to
the problem.
A similar restriction is imposed on the wellknown flow-chart notation to be used as a universal
programming language, or even as a programming
language. (Recent rumors suggest flow charts to be
used on oscilloscope terminals for on-line programming.)
Design Possibilities

As mentioned in the section on Solutions, there
are two possibilities for the design of universal languages. One is a conventional approach with openended languages and processors so that the users
will develop gradually the required high-level programming languages in the interesting problem
areas. Then from time to time the now achieved
status of a system should be re-evaluated and reshaped to avoid and eliminate inefficiencies and obsolescence. So gradually the best language for a
problem area will mature. As soon as there are
enough languages developed for different problem
areas, then the design of a universal one can be envisaged.
The more direct method suggested by the mathematical definition is to investigate the nature of the
problems, depict the elements for description and
solution, and combine these into a high-level programming language. This method was used to develop the new programming language BEST for
commercial applications. 28 The reported five years
of labor seem relatively high, but the rewards justify
the effort to eliminate all the inadequacies and
inconsistencies which arrive at the fire-line with
programming languages, designed by mutual conconsent at conference tables.

bining of different target languages. This is certainly no accident, as will be stressed later. The target
language area poses heavier and more stringent requirements on processors than the source language
area where it is possible to easily combine several
compilers for different languages (but for the same
machine) into one system and to invoke' the one
momentarily required by control cards (e.g., in
IBSYS.31 The difficulties for the target language
arise mainly because of a third language parameter
in a processor, its own language, i.e., the one in
which the processor is written or the language of
the machine on which the processor has to run.
Design and Implementation. At the source language
side of a processor, besides the simple IBSYS concept, a higher degree of integration could be obtained by (1) accepting mixtures of statements of
different languages, perhaps with indicators as to
which languages they belong; and (2) accepting the
elements of different languages intermixed. This
requires that incompatibilities among the languages
are removed. (For example, the definitions of identifiers in FORTRAN and COBOL are incompatible, with blanks having no meaning in FORTRAN,
but used as separators in COBOL.) So it is proven
that a fairly universal programming language cannot
be developed by simply combining useful features
from different other languages.
If only a restricted universal processor can be
developed, then by feeding a copy of it to itself a
desired less-restricted one could be produced automatically.
>

General Notation. A processor can be defined as a
function (I) for transformation of a program given
in one language into that of another. The parameters
of this function f are then:

UNIVERSAL PROCESSORS

ex) Source language of programs to the processor;

General Requirements and Notation

y) Own language of the processor;

Definition and Feasibility. A universal processor
can be defined as a program for transformation· of
all programs from all required problem areas into
all required target languages. The extent of such a
processor is dependent on the definition of the requirements of the problems and of the machines.
Processors which accept programs in a number of
different programming languages are well known. 31
But no successful experience (aside from the projects outlined below could be found for easy com-

8) Variables for measuring the efficiencies;
E) A variable for the method used in the processor;
etc.
So the processor can be designated by f(a,/3,y,8,E,

f3) Target language of programs from the processor;

... ).
Transformation of Programs by Processors. A source
program is, for example, a given set V 1i of (i) statements (Si) in source language A for the solution of
problem 1 and similarly a target program can be
defined:

8

PROCEEDINGS - - FALL JOINT COMPUTER CONFERENCE,

P1 = Vlisi(A)
P'l = VlkSk(B)

as source program
as target program in language B

The application of the transformation function gives
the relations:
V lkSk (B) = jV liSi (A)

=

Vl~Si(A)

= VljjVjmsm(A)

not specified or pertinent, the space for it is left
empty.
Examples oj the New Symbol

V

for languages separate
translatable only on
the program level
requires a different
transformation algorithm
for languages separate
translatable on
block level; (a block
is defined as the set

/sA~

'1
AB.

=

VliSi(fA)

j

is a FORTRAN compiler written in SAP, translating from
FORTRAN to SAP

704

is a SAP assembler given in 704
machine language and translating from SAP to 704 machine
language
is a NELIAC compiler translating from NELIAC to 1401 SPS
and running on the 709

~709

A

for languages separate
translatable on the
statement level
for languages separate
translatable on the
language level

Simplified Notation. The most interesting and important questions with processors are concerned
with the function of changing the· language representation of programs, ( especially by translating
them to actual machine language) .. Therefore, if no
regard is given to other than the language parameters, the function is reduced to

saP

04

VmSm(A)
= VlijSi(A)

1965

is a precompiler translating into
the source language (e.g., for
error checking in programs) and
running on machine with language L3.

Mode oj Processor Use. Basically two different
modes of processor use can be distinguished: translative and interpretive.
1. Interpretive Mode. The interpretive mode of
processor use is characterized by the handling of
data and source statements at the same time, according to the diagram:

= f(A,B,C).

Of course, the other parameters cannot be completely ignored, but they depend on other variables.
(Measured efficiency of a processor depends on the
methods used, while efficiency requirements are
functions of hardware speeds and costs again, etc.,
so other parameters are omitted here.)
Now a new symbol for a processor is introduced:

2. Translative Mode. The translative mode is
characterized by the processing of source program
and data at different times, at compile time and at
run time, respectively:

at compile time

It designates a processor translating from source
Language A into target language B and is itself
written in (its own) language C. Sometimes a label
as a name for a processor will be used and inserted
into the empty space at the left side of the symbol.
Where one language parameter in the following is

!

I

i

~>~i__,-_~

at run time

9

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

In real-time concurrent processing, the schemes
would look like
3. For Real-Time Interpretive:

It must be understood that the execution of the
target program at run time is itself considered again
as interpretation.

DATA 1

DATA 2
-SOURCE
PROGRAM 1"

··
·

~

DATA N

~

---~-

SOURCE
PROGRAM
2
--

,

~

-'"

RESULTS 1

,

.~-----

·
·
·

~

..

PROGESSOR

... RESULTS 2

_

SOURCE
PROGRAM N

·
·
·

~

... RESULTS N
4. For Real-Time Translative:

I
SOURCE
PROGRAM 1

SOURCE
----.
PROGRAM 2

,

....

·
·
·
SOURCE
PROGRAM N

PROCESSOR

,

,

DATA 1

I

-

OBJECT
---PROGRAM 1

.....

1 DATA 21
y
OBJECT
PROGRAM 2

....

RESULTS 1

RESULTS 2

·
·
·

l DATA N I

r-+

.....

•

OBJECT
PROGRAM N

RESULTS N

10

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

General Use 0/ Processors. The general use of processors is given by feeding (designated by the simple
arrow ~) a program into the processor to receive
(designated by the double arrow .) the program
in another representation:

is the translation process of a program from source
language Ll to target language L2 by a processor
running on a machine with language La.
A more interesting case is that the program fed
to the processor can itself be a processor. When it
is written in its own-source language it is according
to:

Here it is explained that a processor written in its
source language can be translated to any other language for which a processor exists. From this prospect was derived the old requirement that each processor should be written in its source language. On
the same process is based nowadays the production
of assemblers for new machines. Details on that
method will be explained later.
When the processor is written in its own-target
language, this gives:

1965

This is the ancient method of processor construction by writing it in its target language. So it is
possible to build up on already available processors.
An example of this is the old FORTRAN compiler
written in SAP and translating to SAP, which is
then translated by the SAP assembler into 704 machine language, but it needed the SAP assembler in
the translating process from FORTRAN to 704
code.
Restrictions on the Parameters. The variables in
the transformation function / (A,B,C) of a processor are certainly not independent even among
themselves. The following functional relations
among the language parameters are interesting. Previous mention has been made of the relation between the target and the own language of a processor. Another, but not a very stringent one, governs
the relation between source language elements and
their target language equivalents.
It will now be assumed that the relations can be
defined and the variables separated. Several cases
are then distinguished:
1. The source language parameter A is
independent of the other ones, so that
no functional relation is given there:
A =1= h1(B);
A =1= h 2 (C).
2. The target language variable B depends not on the source or on the own
language:
B =1= ha (A ) ;
B =1= h4 ( C) .
3. Both source and target language are
not related to the own language (but
might depend on each other) :
A =1= h 2 (C);
B =1= ~(C).
4. All language parameters are independent among themselves.
The design of universal processors will now be
investigated according to these restrictions.
Universal Processors. Universal Processors can
be designed under the restrictions of the previous
paragraph and will be treated in the same order.
1. A scheme for a universal processor limited by
restriction (1) could be derived as follows. If the
processor is not dependent with the source language
either on target or on the own language, then the
source language part could be made exchangeable.
As soon as one processor with this characteristic
would be available, processors for all different
source languages could be constructed running and

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

translating for the same machines. By transforming
another processor with the same characteristic according to:

processors could be written in all languages for
which exchangeable definitions exist, and then translated to the designated machines. The task of writing 2m X n processors for n languages and m machines (there are only m X n processors if the possibility of translation of programs on one machine
for running on another machine is excluded) is now
reduced to the writing of 2m processors or m, respectively) for the m machines and of n language
descriptions for the n source languages.
2. The case where the target language is considered independent of source and own language is
even more interesting. Then target language descriptions for the machine could be developed and
inserted into the processor to give a scheme for
processors to translate for all machines.
Applying the same principle to the translation of
processors could give a universal processor with any
desired target and own language requirements:

The requirements for a universal processor system
would now be to write n processors for n source
languages and m target language definitions for m
machines. These n processors would be written preferably in a high-level language (N3) for which a
processor with the same characteristics for exchangeable target equivalents has been given already.
3. The case that source and target language ale
independent from the own processor language (al-

11

though they may depend on each other, case 1)
would give a very powerful and general system. By
the application of the scheme to itself, any desired
own language and so a rather general universal processor scheme could be obtained:

The implementation requirements would now be
to develop: one processor with removable source
and target language equivalent parts in two copies,
and the definitions for each pair of source-target
languages, giving m x n definitions if they are dependent on each other (case 1) or m + n definitions if they are independent (case 2).
4. When all language parameters are independent, then we have the most general universal processor scheme. Of course, this brings not more solutions than could already be obtained in case 2. The
requirements here would be to have one processor
with the desired characteristics and m + n descriptions of source, target, and own languages.
Discussion. The schemes for universal processors described in the preceding section are outlined
on the assumption that the language parameters of
processors are independent of other variables and
among themselves, at least to a certain degree.
Some relationships among source, target and own
language are known. But up to now it was never
proved or disproved that perhaps they could be separated, and if so, under what conditions. It can be
seen, for example, that between source and target
language only a simple connective relationship exists, but the requirements then imposed on the own
language were not yet evaluated.
The area of source languages is now fairly well
understood, although the techniques are still not in
the best conceivable state; much work is left to be
done; some is going on and progressing satisfactorily. But knowledge of the others is very insufficient
and incomplete.
Many investigations in the past· were dedicated to
the theory of automata. However, most results from
these investigations are too general or of too low a

12

1965

PROCEEDINGS --,- FALL JOINT COMPUTER CONFERENCE,

level to be of great value to present-day computers
with their variety of special hardware features. Only
in the recent past some work was performed on
models of more contemporary machines. 29
As long as actual computers are not well understood there will not be much hope for very successful development of useful universal processors.
The following section describes the various reported projects for automated processor production
and compares these to the described scheme of universal processors.

eral scheme. There is always input I, consisting of a
processor or its description, or the description of
the source language. Input II is sometimes missing
(in some cases of a processor description for I), or
consists of specifications of the target language, and
of a source program in interpretive cases in addition to that.
INPUT II

Projects for Universal Processors

INPUT I

General Scheme and Survey. All literature uncovered in recent years regarding projects for proposals on universal processors fit into the same gen-

~

SUPER
PROCESSOR

~~

The different elements for input and the obtained
output are summarized in Table 1.

Table 1.
Project

Input I

High-level and speciallanguage use.

Processor written in highlevel or special processor
writing language
Processor in UNCaL to
translate to UNCOL

UNCOL

Input II

Resulting Processor

Special Features

Processor in lowlevel language

High-level languages applied to processor COD'struction
Reduction in number of
processors required

Processor for UNCOL on designed
machine

CLIP-JOVIAL

Processor
language

in

high-level

Processor in lowlevel for original
language

"Boot-strapping"

NELIAC

Processor
language

in

high-level

Same as above

Same as above

XTRAN

Processor in high-level
language (with connectors?)

Target machine
macros

Processor in lowlevel for designated
language

Exchangeability of target
language equivalent

SLANG

Processor in SLANGpaLMI

Target language description to generate
the equivalents

Same as above

Generation of target
equivalents from a description

TOOL

Processor in TOOL

Library of macros

Same as above

Translation for new machines

Syntax method

Language specification in
terms of M

Source program in L

Target program in

Interpretive processor accepting language L specification

1. Language specification

1. Macros for M

Same as above

2. Source program

Processor in M

TGS

M

L

2. Generation statement
tables for selection
Meta A

Interpretive processor
with extensive descriptions and specifications

System written in specification languages

Description of language
L in terms of M

Meta B

Description of language
L with connectors

List of target equivalents (macros)

Same as above

System in specification
language separable for
given source and target
languages

Applicative
Expressions

Description of L in Applicative Expressions

Machine definition
in Applicative· Expressions

Same as above

Same as above with Applicative Expressions as
specification language

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

Two different approaches can be distinguished,
one starting with a processor or the description of a
translation process and the other starting with definitions for the source language. The processorbased projects are generally the older ones, thus reflecting the progress in the field.

13

In the production process the processor (written
in UNCaL) for the source language is translated
by a processor from UNCaL to machine language:

Processor Based Projects
1. High-Level or Special High-Level Language
Use. To gain the advantages of programming using
high-level languages (see Introduction "Experience
with High-Level Programming Languages") in the
construction of processors, projects based on this
were tried rather early and often abandoned immediately. The main reasons were the inadequacies
of high-level languages of those days (mainly FOR-

TRAN and ALGOL) for processor descriptions,
and unfamiliarity with the new technique. To alleviate the difficulties special high-level languages
were developed. 33,34 The scheme here is working
like:
However, the gains by these projects for the construction of universal processors can be considered
marginal, because the original number of processors
required is not reduced and, in addition to that, one
processor for the high-level description language is
required for each machine. This scheme is reported
only for the sake of completeness and because it is
used heavily in other projects.
2. UNCaL. In this project the first suggestion
for a system of some sort of a universal processor
was given. 22,29 It calls for an intermediate language
(see "Old Proposals" above) together with the
appropriate processors. The requirements are here
reduced to m + n processors for n languages and
m machines, instead of m X n (without translation
of programs to run on other machines). For each
source language a processor has to be written in
UNCaL translating into UNCaL and then for each
machine one translating into machine language.

All programs then written in source language N 1
are translated by this new processor, running on
machine with language L 2 , into programs in UNCaL.
These programs are then finally translated to machine language L2 by the translator from UNCOL
to machine language L2 (already required above):

3. CLIP-JOVIAL. Very similar to both the UNCaL and high-level language project is basically the
CLIP-JOVIAL approach. Several different versions
are reported, one without intermediate language and
another, more advanced, with it.35 The diagram for
the simpler version looks like:

Practically, the high-level language scheme where
the source language is used for description with:
N1

the CLIP language (a dialect of ALGOL 58 with additional features for
table packing, string handling, storage
overlapping, and local and global
declarations)

N2

assembly language

L2

709 machine language

14

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

to different machines:

The more advanced version uses an interesting
"bootstrapping" method for adapting the processors

The parameters are given according to the table:

N,

N2

N3

L,

L2

L3

L4

M,

M2

JOVIAL

INTERMEDIATE

CLIP

709-A

2000-A

ANFSQ-A

MILITARY-A

709

2000

ANFSQ
with the indication of -A after a computer name
standing for assembly ianguage for that machine,
and the computer name alone standing for its machine language. The parameters (Li) enclosed in
parentheses indicate the insertion of the appropriate
target language equivalents for the intermediate language N 2 and the patching up for it.

MILITARY
A processor is written in CLIP to translate from
source to intermediate language and is itself translated by the CLIP processor into intermediate language. For each machine, a processor is now written for translation from intermediate t9· assembly
language of that machine. With these processors,
the former processor is translated into assembly lan-

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

15

guage, and the target equivalent in intermediate
language is exchanged for the one in assembly language. At last, the resulting processors are translated by the assemblers to the appropriate machines.
A universal processor scheme requires:
• One processor for each source language
written in CLIP and translating to the intermediate language;
• One processor for each machine to translate
from intermediate language to assembly language, the target equivalents for the intermediate language for patching up in the
insertion;
• One CLIP processor for the intermediate
language (and the assemblers for the different machines).
The main difficulty here is to design an intermediate language in a fixed form for many source languages (e.g., the UNCOL concept, see Section IIC).
4. NELIAC. In NELIAC likewise the high-level
language is used for the programming of the processors.36 The most interesting feature here is the
bootstrapping scheme to obtain the processors for
different machines. 37 In the original version on the
U460 (Countess), about 20 percent of the processor
was handwritten and in machine language inserted
into the processor (indicated by N C/460), after completion of writing the processor in its source
language.
In the notation, symbols for the original names are
retained as follows:
Nc
N 709
NELIAC for the Countess
NELIAC for the 709
The NELIAC-Countess processor was produced
with the patched-up processor:

This version was used in the production of the processors for the B200, the CDC 1604, IBM 704 and
the 709 machines according to the diagram for the
709:

For each machine, two different versions of the
processors have to be written, one in the NELIAC
language for the Countess and the other in the
NELIAC language for the desired machine.
The procedure is to write a processor for a
source language to a target language in a high-level
language for which there is a compiler running on a
machine. This processor is first translated to run on
that machine. Then the processor is written in its
source language and translated to its proper machine by the one already obtained. This process is
the direct equivalent of the old assembler production method, which has been writing the assembler
for a new machine first in an assembly language of
a running machine and then translating it to run on
this machine. The assembler was then again written, but in its source language and translated by the
already obtained assembler to run on and translate
for its proper machine.
5. XTRAN. To adapt the processors for different source languages, the XTRAN system21 accepts
those written in a simplified version of ALGOL '58
with string handling facilities (XTRAN language)
and the set of the macros for the particular machine. Two different sets of macros are used, one is
machine-independent of the three-address type (as
an intermediate language) and the other consists of
the macros of an actual machine in assembly or machine language. The XTRAN system translates the
processor for a source language into the machineindependent macros, accepts the definition of these
macros in terms of the machine-dependent ones,
and then replaces the former with the latter:

16

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

The requirements for a scheme of universal processors are:
• One processor for each source language
written in XTRAN (LI)
• One set of machine-dependent macros
for each machine
• The XTRAN system

1965

Unfortunately no experience is published yet for
this system. This might be due to unsatisfactory
performance for the macro setup. 38
6. SLANG. The SLANG system39 is very similar to XTRAN, but is more ambitious to generate
by itself the macros from a definition of the target
machine. The SLANG compiler accepts in addition
to that a description of the processor in SLANGPOLMI, designated by S :

B

Of course, the building up of the target equivalents
from a machine description is usually a very difficult task, if in general possible at all. And the POLMI language might not be definable in a fixed set.
Therefore, it is not surprising that no further experience with this system is yet reported in the literature.
The requirements for a universal processor
scheme using this system are:

POLMI for each source language.
• One description for each target machine.
7. TOOL. A peculiar system was reported in
TOOL.40 It translates processors written in the
TOOL language for other machines. The target
equivalents for a new machine are extracted from a
library file. So the automated translation of processors given in TOOL designated by T, to different
machines is handled. Generally, processor notation

• One processor written in SLANG-

In this case, the universal processor scheme would
require:
• One processor written in TOOL for
each source language.
• One library of target equivalents for
each machine (presumably with appropriate connectors).
As can be seen, this scheme is very similar to the

method from SLANG. Without further details this
scheme was reported to be working satisfactorily
and to be running on the H800 and H400.
Description Based Projects
The Syntax-Directed Method. The reported projects use a syntactic description of the source
language41 ,42 and are compiling interpretively:

P, S
{ P{L) I S{L,M) }

--+-- p{M)

17

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

The reason for the requirement of interpretive
mode here lies in the fact that the different language parameters of a processor are interwoven, but
already to a much lower degree than in straightforward processors.
The requirements for a universal processor
scheme here are that the syntax description be separable from the super-processor and that one description be developed for each source-target language pair.
TGS - The Translator-Generator-System. An
ensuing development to the syntax-directed method
is given by the translator-generator-system TGS,43,44
using macro concepts like the XTRAN project (see
paragraph on XTRAN above).
This scheme accepts as input besides the program
to be translated:
1. A sort of Backus-Naur-Form definition of
the source language.
2. A table for macro description and code selection for the target language.
3. The generation strategy tables for the description of the linkage between source and
target definitions.
The super compiler consists of five parts working
subsequently on the source program. Most interesting among them are:
1. A syntactic analyzer for the source program to convert some piece of input string
into an internal representation (a tree form
is used);

2. A generator phase translating the internal
representation into an n-address instruction form, depending on syntactic context;
3. An optimizer phase for source and target
program optimization, eliminating invariant computations out of loops and common
subexpressions (thus being source-language-dependent to a certain degree) and
assigning special registers (thus being machine-dependent to a certain degree) .
4. A code-selector phase driven by the codeselector table to produce symbolic machine
code.
The translation process looks like this:

{p(l),

sell,

G(L, M), B(M)I} -

11<'-

p(M)1

Most important is the endeavor to achieve an object code optimized to a rather high degree at the
cost of great difficulty in the description of the
code selection. In addition to that, the algorithms
seem to be source- and target-language-dependent
(in respect to algorithmic languages containing
expressions and loops, and to machines possessing
special registers, both in a given form) .
For the production of the system, a bootstrap
technique is used, starting from the algebraic language Lo (the language of the CL-I system45 in
which the system was originally written:
{D(L o -

1604-A)}

{D(Lo)}

{D(CXA -

1604)}

~~ _~ro ~~)-\t
~

A universal processor scheme based on this project would require:
• One BNF definition for each source
language
• One table for macro description and
code selection for each target language
• One generation strategy table for each
source-target language pair
Metalanguage Compiler Direct. Likewise derived
from the syntax directed method46 this project uses
a metalanguage description of a source language in
terms of the semantic target equivalents as basic

~
-A

_

~
-A

~
-A

elements of the language on the problem side. 47 This
description is then compiled by the metalanguage
compiler into a processor written in the target equivalents of the metalanguage compiler:

18

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

Requirements for a universal processor scheme
are here:

The metalanguage compiler was originally written
in its augmented specification language and compiled by itself:

• One metalinguistic description for each
source language
• One set of target equivalents for each
machine and set of basic semantic elements of each source language
• The metalanguage compiler
Metalanguage Compiler Indirect. Based on the
previous project a method more machine-independent can be proposed, using the macro principle.
Here the basic semantic elements of the source language would be separated from the source language
description and referred to by connectors. These are
then inserted or executed to obtain translative or
interpretive mode. The production of a processor
would be accomplished according to:

Since no machine was available to accept the metalanguage specification, this translation was done
initially by hand. The target equivalent for M 1 and
M2 are normally rather far different from operations
and elements found on actual computers. Therefore,
they have to be interpreted in terms of those for
execution.

{ S (L K), R (K, M I)

required for the development of a universal programming language (see "Mathematical Definition
and Development" and "Design Possibilities"
above).
Applicative Expressions. Another proposal for a
universal processor project could use Applicative
Expressions 48 and would be very similar to the
method described above. Both source and target
language would be described in Applicative Expressions with connectors used for the correct interplay.
Although this scheme might be more general, it
seems to introduce many redundancies and to complicate the description, as the examples in reference
48 prove. The process would be:

A universal processor scheme requires here:
• One description for each source language
• One set of target equivalents for each
machine plus the target equivalents of
new basic semantic elements in a new
source language
• The metalanguage compiler
One special aspect of this method has to be
stressed. By the design process of a source language
in terms of the basic semantic elements, these elements can be separated in a form in which they are

{

S (L, K), R (K, M)

}

E

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

The requirements for universal processors in this
instance are similar to those in the preceding paragraph.

C

Discussion

B(M)

All reported projects try to gain some power for
the construction of processors in the direction of
universal processors. There are basically three different starting points:
1. The own language for the processor
2. The source language of the processor
3. The target language of the processor
The first point is stressed by all methods to alleviate the specifications of the processor to various
degrees from the use of a high-level language for
explicit writing the processor to the syntax table
specification in TGS.
The complete definition of a source language can
specify at the same time a recognizer for programs
written in that language. This characteristic is used
in the description-based projects.
Techniques for the target language specification
to use a processor on different computers were attempted rather early as they were important to the
development of software in the variety of different
computer designs. But, as far as can be seen, the
obtained results are still very far from a satisfactory
solution to the problem-if it is possible to find
even a fairly general solution. Unfortunately no detailed experience with the XTRAN and TOOL
projects is reported.
Several interesting methods are used for bootstrapping, i.e., the adaption of a processor to a special computer mechanically. They range from the
old assembler construction method used in NELIAC to rather elaborate and sophisticated ones, as in
TGS. Of course, the whole subject needs much
more effort to develop the techniques for a fairly
general universal processor scheme or to prove that
the plan is not possible and to state the conditions
and new insights into the problems will certainly
bring much more progress than was achieved in the
past. This paper is intended to serve as a basis for
such a development.
Appendix

Explanation of Symbols
A

for designation of the source language of a processor

B

D(L)
E

f(a,/3;y,o,€, ... )
f(A,B,C)
G(L,M)

K
Li
M

Ni

peL)
R
S(L,M)

u

19

for designation of the target language of a processor
for designation of the own langauge of a processor
description of a target machine
description of the language L
designates Applicative Expressions
processor function
processor function with regard to
the language parameters
connective relation
connectors
with i as. a number designating a
language parameter
macros
similar to Li
program in L
a list
language specification of syntax
type for source language Land
target language M
as language designator for UNCOL
as a set operator in respect to k
a processor
a processor with source language
A, target language B, own language C and name D
the braces are used to combine
some input other than a single
processor or program
simple arrow for designating the
feed-in to a processor
double arrow for designating the
output from a processor

REFERENCES
1. R. J. Slutz, "Engineering Experience with
the SEAC," Proc. ElCC 1951, pp. 90-93.
2. A. C. D. Haley, "The KDF9 Computer System," Proc. FlCC 1962, pp. 108-120.
3. "Burroughs B5000," in Data Processing Encyclopedia, Detroit, 1961, pp. 50-55.
4. K. Samuelson, "Programming Languages and
their Processors," Proc. IFIP Congr. 1962, Munich,
pp. 487-492.
5. See for example M. H. Hall "A Method of
Comparing the Time Requirements of Sorting Methods," Comm. ACM, vol. 5, pp. 259-263 (May
1963) .

20

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

6. See for example F. P. Brooks Jr., "The Future of Computer Architecture," Proc. IFIP Congr.
1965, New York, pp. 87-91.
7. R. S. Barton, "A Critical Review of the
State of the Programming Art," Proc. SICC 1963,
pp. 169-177.
8. A. P. Yershov, ALPHA-An Automatic
Programming System of High Efficiency, IFIP
Congr. 1965, New York.
9. J. A. Ward, "The Need for Faster Computers," Proc. Padf. Compo Conf. 1963, pp. 1-4.
10. R. F. Clippinger, "Programming Implications of Hardware Trends," Proc. IFIP Congr.
1965, New York, pp. 207-212.
11. S. Rosen, "Programming Systems and Languages," Proc. SICC 1964, Washington, D.C. pp. 115.
12. R. D. Brennan and R. V. Linebarger, "A
Survey of Digital-Analog Simulator Programs,"
Simul. vol. 3, pp. 22-36 (Dec. 1964).
13. H. E. Peterson et aI, "MIDAS-How It
Works and How It's Worked," Proc. FICC 1964,
pp.313-324.
14. H. Schorr, "Analytic Differentiation Using a
Syntax Directed Compiler," Compo I, vol. 7, pp.
290-298 (Jan. 1965).
15. T. J. Theodoroff and J. T. Olsztyn, "DYANA, Dynamic Analyzer-Programmer I & II,"
Proc. EICC 1958, pp. 144-151.
16. J. W. Young Jr., "Non-Procedural Languages," 7th Ann. Tech. Symp., Southern Calif.
Chapter, ACM, Mar. 1965.
17. A. Opler et aI, "Automatic Translation of
Programs from One Computer to Another," Proc.
IFIP Congr. Munich 1962, pp. 245-247.
18. S. Gorn, "Specification Languages for Mechanical Languages and Their Processors, a Baker's
Dozen," Comm. ACM vol. 4, pp. 532-542 (Dec.
1961) .
19. J. W. Backus et aI, "The FORTRAN Automatic Coding System," Proc. WICC 1957, pp. 188198.
20. H. Bromberg, "Surveys of Computer Language Use," Data Proc. Mag. Apr. 1965, p. 37.
21. R. W. Berner, "Survey of Modern Programming Techniques," Compo Bull., Mar. 1961, pp.
127-135.
22. T. B. Steel, "A First Version of UNCaL,"
Proc. WICC, 1961, p. 371.
23. See for example K. Iverson, "Recent Appli-

1965

cations of a Universal Programming Language,"
IFIP Congr. 1965, New York, and IBM Syst.
Iourn., vol. 2. pp. 117-128 (June 1963).
24. N. Moraff, "Business and Engineering Enriched FORTRAN (BEEF)," Proc. 19th ACM
Conf. 1964, Phila. DI. 4.
25. B. Langefors, "ALGOL-Genius, A Programming Language for General Data Processing," BIT,
vol. 4, no. 3, pp. 162-176 (1964).
26. NPL Technical Report, IBM Publications
No. 320-0908, Poughkeepsie, New York, Dec.
1964.
27. Computer Review vol. 6, no. 2, ref. 7275,
p. 108-112 (Mar.-Apr. 1965).
28. J. R. Ziegler, "Computer-Generated Coding
(BEST) ," Datamat., Oct. 1964, pp. 59-61.
29. H. Bratman, "An Alternate Form of the UNCaL Diagram," Comm. ACM, vol. 4, p. 142 (Mar.
1961).
30. See for example C. L. Hamblin, "Translation
to and from Polish Notation," Compo I., vol. 5, pp.
210-213 (Oct. 1962).
31. A. S. Noble and R. B. Talmadge, "Design
of an Integrated Programming and Operating System, I & II," IBM Syst. Iourn. vol. 2, pp. 152-181
(June 1963).
32. See for example C. C. Eigot and A. Robinson, "Random Access Stored Program Machines,"
Compo I., vol. 11, pp. 365-399 (Oct. 1964).
33. J. V. Garwick, "Gargoyle, a Language for
Compiler Writing," Comm. ACM, vol. 7, pp. 16-20
(Jan. 1964).
34. C. A. R. Hoare, "A Programming Language
for Processor Construction," IFIP Congr. 1965,
New York.
35. D. Englund and E. Clark, "The CLIP-translator," Comm. ACM, vol. 4, pp. 19-22 (Jan.
1961).
36. J. B. Watt and W. H. Wattenburg, "A
NELIAC-generated 7090-1401 Compiler," Comm.
ACM, vol. 5, pp. 101-102 (Feb. 1962).
37. M. H. Halstead, Machine Independent Computer Programming, Spartan Books, Washington,
D.C., 1962, p. 37 ff.
38. See for example G. Letellier, "A Dynamic
Macro Generator eor Optimum Use of Machine Facilities by a Translated Program," IFIP Congr.
1965, New York.
39. R. A. Sibley, "The SLANG-system," Comm.
ACM, vol. 4, pp. 75-84 (Jan. 1961).

UNIVERSAL PROGRAMMING LANGUAGES AND PROCESSORS

40. A. Opler, "TOOL, A Processor Construction
Language," Proc. IFIP Congr. 1961, Munich, p.
513.
41. E. T. Irons, "A Syntax-Directed Compiler
for ALGOL 60," Comm. ACM, vol. 4, pp. 51-55
(Jan. 1961).
42. T. E. Cheatham and K. Sattley, "Syntax Directed Compiling," Proc. SJCC 1964, Washington,
D.C., pp. 31-57.
43. S. Warshall and R. M. Shapiro, "A General
Tabl~-Driven Compiler," Proc. SJCC. 1964, Washington, D.C. pp. 59-65.
44. T. E. Cheatham, "The TGS-II Translator-

21

Generator System," IFIP Congr. 1965, New York.
45. T. E. Cheatham et aI, "CL-I, an Environment for a Compiler," Comm. ACM, vol. 4, pp. 2327 (Jan. 1961).
46. A Glennie, "On the Syntax Machine and the
Construction of a Universal Compiler," Carnegie
Tech. Rep. No.2 (AD-240512), July 1960.
47. D. V. Schorre, "A Syntax Oriented Compiler
Writing Language," Proc. 19th ACM Con!. 1964,
Phila., D1. 3.
48. W. H. Burge, "The Evaluation, Classification and Interpretation of Expressions," Proc. 19th
ACM Con!. 1964, Phila., A1.4.

DIGITAL SIMULATION LANGUAGES: A CRITIQUE AND A GUIDE
John J. Clancy and Mark S. Fineberg
McDonnell Aircraft Corporation
St. Louis, Missouri

DYSAC languages. The scope of this paper is limited to the latter.
This field of what might be called parallel languages has enjoyed a vigorous growth since its inception ten years ago. New languages are appearing
at frequent intervals, but it appears the effort is
scattered, and perhaps needs to be channelized. The
authors have applied themselves to providing a
measure of needed direction and perspective.

FOREWORD
The field of digital simulation language, although
barely ten years old, has shown a remarkable
growth and vigor. The very number and diversity of
languages suggests that the field suffers from a lack
of perspective and direction.
While claiming no expertise in the writing of sophisticated compilers, the authors believe a relative
unconcern with implementation details permits a
wider objectivity in matters of format and structure.
Competence to speak on these aspects is claimed on
the basis of extensive analog, hybrid and simulation
language experience.
In Locke's words, "everyone must not hope to be
... the incomparable Mr. Newton ... , it is ambition enough to be employed as an under-laborer in
clearing the ground a little, and removing some of
the rubbish that lies in the way to knowledge."1

BRIEF SURVEY OF THE FIELD

History
Since Selfridge's article appeared in 1955,2 the
field of analog like simulation languages for digital
computers has grown at a rapid rate. Brennan and
Linebarger3•4 have provided an excellent review and
analysis of the history of the field; their surveys are
summarized and somewhat augmented below.
Lesh,5 apparently inspired by Selfridge's work,
produced DEPI (Differential Equation Psuedo
Code Interpreter) in 1958. Hurley6 modified this
language for the IBM 704 (DEPI 4), and then in
conjunction with Skiles7 wrote DYSAC (Digitally
Simulated Analog Computer). This line of development has continued at the Universities of Wisconsin and Colorado under Professors Skiles and Ride-

INTRODUCTION
The appellation "digital simulation language"
unfortunately has been appropriated by two quite
distinct fields: simulation of discrete, serial processes, as typified by the GPSS and SIMSCRIPT
languages; and simulation of parallel, more or less
continuous systems, as typified by the MIDAS or
23

24

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

out, resulting in the BLOC languages (MADBLOC,
HYBLOC, FORBLOC and COBLOC) .8,9
Stein and Rose, in addition to generating
ASTRAL,lO (Analog Schematic Translator to Algebraic Language) in 1958, have provided the theoretical and practical background needed to write a
sorting routine, i.e., an algorithm to deduce the
proper order of problem statement processing. l l
This feature, although overlooked by many authors,
is one of the keys to a useful language. This point
is detailed below.
In 1963, Gaskill et al,12 wrote an excellent simulation language, DAS (Digital Analog Simulator).
The program unfortunately suffered from a rudimentary integration algorithm and the lack of sorting. * MIDAS13 (Modified Integration DAS), written by Sansom et al at Wright-Patterson Air
Force Base, supplied the necessary improvements
and met with unprecedented success. (Approximately 100 copies of the program have been distributed.) The success of MIDAS is explainable by
two facts: the integration routine and sorting feature make it extremely easy to use and MIDAS was
written for the widely used IBM 7090-7094. The
authors of MIDAS have now offered another entry,
MIMIC,14 which is implemented by a compiler program and provides symbolic labelling, logical controlcapability, and freedom from the block-oriented
programming. MIMIC is not without faults, particularly in the areas of data entry, but seems destined
for the same general acceptance as MIDAS-and
deservedly so.
One of the most significant developments has
been computer manufacturer interest in simulation
languages. Scientific Data Systems has led the field
in this respect, having proposed DES-1 (Differential Equation Solver) in 1962.15 DES-l has been
modified extensively in the succeeding years, and
now offers one of the best formats and one of the
most variegated operator lists ;16 SDS has always
promoted the language as part of a total computer
system which provides analog type I/O and programming for a digital computer.
In late 1964, IBM entered the field in a small
way with PACTOLOS, byR. D. Brennan. 17 Apparently, PACTOLUS was intended to have only modest computational capabilities and to contribute
primarily as an experiment in man-machine communication. In this respect, the objectives of P AC*It should be noted that Gaskill considers neither point of
particular significance.

1965

TOLUS are similar to those of DES-I, although
the latter also attempts to be as powerful a computational tool as possible.
PACTOLUS was written for the IBM 1620, and
brought simulation to a previously untapped audience of small installations. The popUlarity of
PACTOLUS is rivaled only by that of MIDAS, if
indeed it has a rival.
More recently, R. N. Linebarger of IBM has announced DSL/90 (Digital Simulation Language for
the 7094 class computer) .18 This language is a significant advance over P ACTOLUS as a computational tool and offers many format improvements.
The above are only a few of the languages; many
others have appeared. Table 1 shows a list of simulation languages, along with some important characteristics of each. This table is the result of a rather
diligent search, but certainly is not comprehensive.
Much of the material has been taken from a survey
given by Clymer. 19
Trends

The present trend in the field is towards extension of the power and utility of the programs. More
efficient execution has been recognized as a goal,
and the compiler approach to implementation has
gained increased acceptance. The provision of more
complex operators and more advanced algebraic
capability represents an effort to increase the utility
of the programs for less analog-oriented applications. These trends are in the right direction, but
efforts have been scattered, and perhaps need to be
channelized.
Another major step has been recognition of the
importance of the man-machine interaction. As
was mentioned, this has been the primary message
carried by the P ACTOLUS program, and has long
been the concern of the DES-l designers. The
SCADS20 program has been used on-line at Carnegie Institute of Technology and the Aerospace Corporation is using EASL21 through a terminal to an
IBM 7094. The authors agree wholeheartedly with
this stress on man-machine interaction, and are
aware of the real import this communication has
for the future of digital simulation.
Areas of Use

Simulation languages have been written for two
more or less diverse reasons: to provide analog

Table 1. History of digital simulation languages.
Name

DEPI

DIDAS

Source of Name

Diff. Eq. Psuedo
Code Interpreter

Author's
Affiliation Computer

Date

Author(s)

1955

R. G. Selfridge USNOTS
Inkoyern

1957

F. Lesh

DIgital Differential
Analyzer Simulator

1957

Analog Schematic
TRanslator to
Algebraic Language

1958

Integration
Routines
Ancestor Sorting Remarks

Simpson's
Rule

- - No

Jet
Burroughs 4th Order
Propulsion 204
RungeLab
Kutta

Selfridge No

G. R. Slayton LockheedGeorgia

IBM 701

IBM 704

The Adam of this genealogy

Expanded and improved Selfridge's work
t:::I

§
Euler

Simulates a DDA

~

>

t'"4
(I)
~

ASTRAL

Stein, Rose
and Parker

Convair
IBM 704
Astronautics

RungeKutta

- - Yes

Isaiah, the voice that crieth in the wilderness.
A precursor of the modern languages. Sorting
and compiler implementation were original with
ASTRAL, and remained advanced features until
very recently.

~

c::t'"4

>
~

0
Z

t'"4

DEPI-4

DEPI for the
IBM 704

1959

J. R. Hurley

AlIisChalmers

IBM 704

4th order
RungeKutta

DEPI

No

First language to use float point hardware, and
thus eliminate scaling problems.

>
Z
0

~

0

t:r.I

DYANA

DYnamics ANAlyzer 1959

T. J.
Theodoroff

General
Motors
Research
Lab

IBM 704

Mechanical system dynamic analyzer

Euler

(I)

>
(")
~
~

~

~

I:)

BLODI

BLOck DIagrammed 1961
Compiler

Kelly,
Lochbaum,
and
Vyssotsky

Ben Labs

IBM 704
and 7090

None

- - No

Block simulator for signal processing devices

c::
t:r.I

>
Z
t;1

>
Digitally Simulated
Analog Computer

1961

DYNASAR DYNAmic Systems
AnalyzeR

1962

DYSAC

J. J. Skiles
and J. R.
Hurley

Univ. of
Wisconsin

CDC 1604 4th order
RungeKutta

Lucke,
Robertson
and Jones

General
ElectricEvendale

IBM 704
and 7090

AdamsMoulton
4 point
predictorcorrector
Variable
integr.
step-size

DEPI-4 No

--

Yes

The prophet with honor only in his own country. Significant improvement of DEPI-4, particularly in format. The program was specific for
a relatively little used computer, which probably caused its undeserved lack of wide acceptance and use outside the University of
Wisconsin.

§
S
t:r.I

Useful innovation was variable step size inte-

,gratioll algorithm.
tv

VI

tv

No but Used extensively at Honeywell. Parallel nature
retains retained by predicting variables around a feedparal- back loop, rather than sorting.
lelism

PARTNER

Proof of Ana]og
Results Through
Numerically
Equivalent Routine

1962

R. F. Stover

Honeywell IBM 650 Trapezoidal
or Euler
Aeorn. Div. and
H-800/1800

DAS

Digital Analog
Simulator

1963

R. A. Gaskill

MartinOrlando

IBM 7090

IBM 7090

1963

R. G. Byrne

Bell Labs

IBM 7090

Euler

No

FORTRAN flavor

1963

Scientific
M.L.
Pavlevsky
Data
and L. Levine Systems

SDS 9300

Choice of
five

No

Excellent language. Part of a computer system
that includes a special, analog type console.

JANIS

?

DYSAC No

0'1

Major contributions to the format of blockoriented languages. Widely used in the Martin
Company.

I"tj

:;c

DES-l

Differential
Equation Solver

0

(")

tt1
tt1

t;
>-4

Z

DIAN

DIgital ANalog
Simulator

1963

Farris and
Buckhart

Iowa State IBM 7074
Univ.

Euler

- - No

Chemical Engineering Simulations

0

VJ

I

"rj

WIZ

?

1963

J. E. Buchanan U.S. Naval ?
Avionics,
Indianapolis

4th order ASTRALYes
RungeKutta-Gill

ASTRAL's only known direct descendant.

>
t"4
t"4

~

0>-4

COBLOC

COdap Language
BLock Oriented
Compiler

1964

Janoski and
Skiles

Univ. of
CDC 1604 Choice of
Wisconsin
three

Logical building blocks (gates, flip-flops), etc.
DYSAC Yes
(Option- provided.
ally No)

Z

~

(")

0
~
I"tj

FORBLOC

PORTRANcompiled 1964
BLOck Oriented
Simulation Language

W. O. Vebber

Univ. of
Wisconsin

Any maTrapezoidal DYSAC No
chine FORTRAN
compiler

Easily modified since FORTRAN used. This approach could lead to machine independence.

e

~

tt1

:;c

(")

0

Z

HYBLOC

HYbrid computer
BLOck Oriented
Compiler

SIMTRAN

J. R. Hurley

IBM 709, 4th order
AllisChalmers 7090, 7094 RungeKutta
and Univ.
of Wisconsin

DYSAC No

Simulates hybrid computer.

tt1

:;c
tt1

Z

(')

~

Trapezoidal DYSAC No

MAD (Michigan Algorithmic Decoder) statements.

1964

L. Tavernini

Univ. of
Colorado

IBM 7090

Modified Integration 1964
DAS

Harnett,
Sansom and
Warshawsky

WrightPatterson
AFB

IBM 7090- 5th order DAS
variable
7094
step predictor corrector

Yes

The Moses of the story, that led digital simulation to the verge of the Promised Land. Very
widely distributed, modified and discussed.

1964

W. J. Henry

Weapons
Research
EstablishmentAustralia

IBM 7090

Yes

Though not used on-line, the program's structured for such use in the future.

MADBLOC MAD Language
BLOCk Oriented
Compiler
MIDAS

1964

"rj

DAS

~

\.0
0'1
VI

PACTOLUS River in which
King Midas washed
off the golden
touch.

1964

R. D. Brennan IBM
Research
Lab

IBM 1620 2nd order
RungeKutta

MIDAS Yes

Mainly an experiment in man-machine communication. Widely used as a simulation tool.

ENLARGED
MIDAS

1964

G. E. Blechman NAAS&ID

IBM 7090 Same as
MIDAS

MIDAS Yes

Enlarged component set of MIDAS and added
plotting routines.

PLIANT

Procedural Language 1964
Implementing
Analog Techniques

R.L.
Linebarger

IBM
Develop.
Lab.

IBM 7090 Trapezoid'al JANIS

MIMIC

No meaning, Ex
post facto, Sansom
claims, MIMIC is
MIDAS InCognito

F. J. Sansom

WrightPatterson
AFB

IBM 7090- 4th order
Runge7094
Kutta.
Variable
step size

MIDAS Yes

IBM 7094 ?

FOR- Yes
TRAN

No

Build own FORTRAN blocks.

t;j

UNITRAC

1965

1965
UNIversal
TRAjector Compiler

W. C. Outten

MartinBaltimore

Improvements over MIDAS include: compiler
implementation, logical elements, improved algebraic capability, and logical control.

S
:::i
>

t""I

CIl
~

~

Stylized differential equation input format. Free
format.

et""I

>
~
~

0

Z

DSL/90

Digital Simulation
Langu,age for the
IBM 7090 class
computers

1965

Simulation of
Combined Analog
Digital Systems

1964

Syn and
Wyman

Powerful, flexible simulation tool. Advanced
PLIANTYes
(Option- format ideas include free format capability.
ally No)

IBM
Develop.
Lab.

IBM 7090- Choice of
eight

Carnegie
Tech

CDC G-20 An algoPART- No
rithm uniqueNER
to SCADS.
A four
point method similar
to RungeKutta.

t""I

>
Z
0

~
t!1

SCADS

J. C. Strauss
and W. L.
Gilbert

Uses the same scheme for parallel operation
as PARTNER, i.e., an extrapolation method.
SCADS was used on-line at Carnegie Tech.

CIl

>
C":l

:::c
~

~
~

'att:I
>
Z

EASL

Engineering Analysis 1965
and Simulation
Language

L. Sashkin
Aerospace IBM 7094 4th order
RungeCorp.
and
Kutta.
S. Schlesinger
Variable
step size.

MIDAS No

Used on-line through a terminal. FORTRAN
statements are permitted in line.

t:::;j

>
0

e

6
tt:I

SADSAC

Seiler Algol Digitally 1965
Simulated Analog
Computer

J. E. Funk

U.S. Air
Force
Academy

MIDAS Yes
Burroughs 5th order
B-5000 and variable step
B-5500
predictorcorrector

Essentially MIDAS, but written in ALGOL.
Significant feature is handling of discontinuities
by interrupting integration routines when switching occurs.

SLASH

Seiler Laboratory
Algol Simulated
Hybrid

1965

J. E. Funk

U.S. Air
Force
Academy

Burroughs 5th order SADB-5000 and variable step SACK
B-5500
predictorcorrector

Gives an ALGOL program control of SADSACK for parametric studies, plotting optimization, etc.

Yes

tv

....,J

28

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

check cases, and to solve differential equations (in
other words, replace an analog computer). MIDAS,
ASTRAL and PARTNER22 were written primarily
for the first reason; DAS, the DEPI family, DES1, and P ACTOLUS, apparently for the second.
Another, perhaps more important, use has not been
stressed by any of the authors, i.e., providing the
best digital computer language for a hybrid problem. Since an analog computer is a parallel device,
and no amount of mental calisthenics can make it
appear serial, it is clear that a parallel digital language is the only solution to the parallel-serial dichotomy in hybrid programming.
FUNDAMENTAL NATURE OF SIMULATION
LANGUAGES

Views Proposed
As noted above, simulation languages have proliferated at an amazing rate in the last few years.
Each new language comes equipped with its own
format and structural idiosyncrasies, which generally reflect the creator's reading of the essence of simulation languages. These analyses .might be classed
as: analog computer simulator, block diagrammed
system simulator, and differential equation solver.
When the concepts are considered in detail, it is
evident that all these views miss the point to some
extent.
Analog Computer Simulator: Some simulation
languages, as noted previously, were written specifically to simulate an analog computer. The purpose
was to provide an independent check of the analog
setup. Most of the authors state, however, that the
resultant programs were used profitably for problem
solving-in other words, the analog was bypassed.
Simulating the analog computer generally results
in an operator (or statement) repertoire which reflects the fundamental physical limitations of analog
computer elements. Examples of this phenomenon
abound; one might mention the limitation on the
number of summer inputs, different elements for
variable and constant multiplication, and the lack
of memory.
In short, the logical culmination 'Of this concept
is a system neither fish nor fowl, with many disadvantages of both analog and digital programming.
Block Diagrammed System Simulator: The overwhelming majority of authors state that their language (or program) was designed to simulate sys-

1965

tems that can be represented by block diagrams.
(Of course, an analog computer is such a system, so
the opinion outlined in the previous subsection can
be seen to be a sub:"set of this view). By and large
this opinion i~ justified, since many problems of
interest are easily expressible in block form. However, if the problem is given simply as a set of ordinary differential equations, reducing the equations
to a block diagram is a tedious, error-prone process. Even if a block-diagrammed system is considered, more often than not some of the blocks
contain differential equations; an example is the
airframe equations in a control loop.
Differential Equation Solver: An opinion sometimes expressed is that simulation languages should
be designed to solve ordinary differential equations.
From what has been said, this view has some merit.
Unfortunately, two problems arise. First, in control
system simulation, transfer functions and nonlinearities are not conveniently expressable in equation form. There is also a certain loss of familiarity
with the system when blocks are completely eliminated. Second, the concept overlooks other important problem areas, e.g., sampled data systems,
where the problem is stated in difference equation
form.

A More Correct Approach
It is seen, then, that all these views regarding the
fundamental nature of simulation languages are too
narrow and confining. Is there an "essence" (in the
metaphysical sense) which is common to aU, yet
not so comprehensive as to be meaningless? Parallelism, the apparent parallel operation of a serial
digital computer, may be an all-inclusive, rational
statement of the essential nature.
All languages extant have taken their format and
structural cues from analog programming and analog operators. Assuming the action was rational, and
not an empty exercise in dialectical synthesis, this
fact provides a clue to a valuable overall view of
simulation languages. The analog computer is, of
course, a parallel device.
As it happens, this is the way most of the world
is structured. Representing physical phenomena
with a serial digital computer is an artifice; useful,
but nevertheless an artifice. The analog computer
has achieved such success and generated such attachment largely because of the close analogy existing between the computer and the physical world.

DIGITAL SIMULATION LANGUAGES: A CRITIQUE AND A GUIDE

29

Obviously, then, if physical systems must be represented with a serial digital computer, the machine
should be made to appear parallel. This is in fact
what has been done in simulation languages, and, of
course, the success is manifest. Difficulties have
arisen, though, because "pseudo-parallel" devices
in the past been modeled too closely on the analog
computer. If the notion of parallelism is correct,
the best parallel device must be sought.
The importance of this concept cannot be overstated. It is not merely a convenient catch-all to
include all previous efforts, but has real consequences for the future of simulation languages. A
programmer if he is to "think parallel" must be
freed from the chore of ordering problem statements. Such freedom is available if a sorting algorithm, .as first proposed by Stein and Rose, is used.
Alternatively, an extrapolation scheme, as used in
PAR TNER and SCADS, achieves the desired parallelism, but at a cost in storage and execution efficiency. The languages incorporating sorting or extrapolation are true parallel languages and provide
the designer with a parallel device to represent his
parallel physical system. It is always treacherous to
be dogmatic, but on this point it seems clear that a
language without sorting (or its equivalent) is simply another, perhaps slightly superior, method of
programming a digital computer, and is in no way a
parallel system simulator.

element, poor logical and memory features, and rudimentary labelling capability. (This latter is a curious anachronism, since even the most primitive
digital computer assemblers permit symbolic labelling). Some formats, notably ASTRAL, were based
directly on a specific analog computer and may be
expected to have certain deficiencies. In others, e.g.,
MIDAS and P ACTOLUS, no real attempt was
made to simulate an analog computer yet the implied hardware limitations are nonetheless present.
As a consequence of the poor format, operational
difficulties are found to stem from trivial clerical
errors, such as dropping commas or decimal points,
or having input statements in the wrong order.
These difficulties are increased by the" multiplicity
of primitive operators, and the consequent need for
large complex networks to represent algebraic statements. The artificialities also tend to make the language more difficult to learn, or having been
learned, to retain all the esoteric details. (The retention of these details might seem a small matter
to the "professional" programmer, but is a real concern to the occasional user.) Modern computers
with character handling ability and high execution
speed can free the programmer from this sort of detail, with very little penalty in increased compilation time.

FORMAT

There is now a large fund. of experience in the
design and utilization of parallel languages, and
some general, somewhat dogmatic, statements can
now be made about format. On a very general level,
these could be reduced to two rules: The format
s;hould be both "natural" and "non-arbitrary."
These rules require some amplification.
"Naturalness:" The input problem statement
should be as close as possible to the normal, accepted method of problem statement. The question
in the designer'S mind should be: if I were preparing a problem for my own future reference and explanation to others, how would I state it? The answer to such a query would naturally vary with the
type of problem.
If a parallel control system is to be analyzed, the
problem would most naturally be stated in a block
diagram, wherein each block represented a more or
less complex operator such as gain, limit, hysteresis,
transfer function, etc.
If, however, a set of differential equations is to

Present Format Inadequacies

Perhaps the most important consideration in designing a simulation language is the utility of the
input format. A good, flexible, natural appearing
format would encourage wide usage, facilitate training, and reduce errors. All existing formats are
much too arbitrary and generally reflect both the artificialities of digital computer modes of thought,
and the physically determined inadequacies of analog elements.
Under digitally derived restrictions, one might
mentation the exaggerated importance given to column position in a statement, the need for commas
and decimal points where unnecessary for clarity,
and the requirement for a specific, arbitrary order
of arguments within a statement.
Analog inadequacies have been mentioned; they
appear as restrictions on the number of inputs to an

General Format Rules

30

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

be studied, it is a great deal of wasted effort to formulate the problem in block form. The process is
conducive to error and really adds nothing to the
understanding of the problem.
It is imperative that the input statement, the
cards presented to the digital computer, should
match as closely as possible the normal, natural
statement of the problem. Of course, there are fundamental limitations, notably the fact that superscripts and subscripts are normally used while the
card punch must work on one line. However, much
can be done, and actually has been done to "naturalize" format, especially in the APACHE * and
UNITRAC23 programs.
To reiterate, the input statement should be flexible enough to match the natural form of diverse
problems; block diagram and differential equation
types have been mentioned. Many problems arise
that are really combinations of these classes, e.g.,
an airframe in an autopilot loop. The format should
natually be capable of stating each problem area in
its normal form.
Non-Arbitrariness: Arbitrary formats,more than
anything, have limited the utility of parallel languages. One commonly finds early enthusiasm for
the idea of parallel languages, and then disenchantment when the "format gap" between the idea and
its implementation is fully appreciated. In many
facilities, where digital computer turn-around is
measured in days, the trivial errors caused by the
complex, arbitrary format extend a problem's
check-out time to unacceptable periods.
However, this is not a fundamental problem;
surely parallel languages· can be written to eliminate
most of these difficulties. It seems that few authors
have given much thought to minimizing arbitrariness in their concern for other aspects of the language. This is seen clearly in the early work of Selfridge and Lesh, where the root idea of parallel languages was the main subject of study. Unfortunately, examples are still apparent: Many outstanding
contributors, in their understandable enthusiasm for
man-machine interaction and efficient implementation, have been satisfied with adopting earlier
format ideas and have neglected the ramifications
of a good, clear, non-arbitrary input statement.
*The APACHE24 program is not really of the genre under
consideration here. The program takes differential equations
and generates an analog wiring diagram and static check.
However, the format considerations are nearly identical to
equation solving languages, and the APACHE authors have
produced an input format worthy of study.

1965

A few obvious requirements are discussed below:
(a) A "free format" statement capability, i.e.,
statements can appear anywhere on the
card. This is available in the UNITRAC
and DSL/90 programs, and should eliminate much of the frustration produced by
coding or key punch slips.
(b) The ability to enter numerical data in any
convenient form, e.g., 200.0 might be
written 200, 200.0, 200., 2E2, 2.0E02, etc.
( c ) The ability to use either literals in a statement (Y = 4X) or the option to symbolically label constants (Y = KX). In the
latter case, the constant would be specified
in the normal fashion. (K = 4 or K =
4., etc.)
(d) The ability to label quantities in a sensible,
problem related fashion, and use this label
to specify the variable without reference to
an arbitrary block number. The latter labeling method could be retained for meaningless intermediate quantities. It should be
noted that the need for problem related
labeling was one of the first lessons learned
by software designers and is now available
with virtually all assemblers.
Complexity of Format

An open question at this time is the allowable
degree of complexity in the input format statement.
The trend in new languages appears to be away
from the simple, analog type blocks to statements
reminiscent of FORTRAN.
Table 2 shows an "algebraic capability" scale,
with some of the languages distributed along it. At
the lower end, one finds a very primitive capability, which can represent any algebraic statement,
albeit in an extremely awkward form. Fortunately,
no one has been inspired to implement this sort of
language. (This is not to say such codes are useless;
a primitive language is generally the intermediate
representation in a compiler program.) Moving up
the table, the next stage is basic mathematical operators modeled by and large on analog computer
components. DAS and MIDAS are good examples
of this class. Here, there is some advance from a
"minimum vocabulary" and a great deal of flexibility is available, particularly for block oriented sys-

31

DIGITAL SIMULATION LANGUAGES: A CRITIQUE AND A GUIDE

Table 2. Algebraic Capability Scale.
(listed in order of decreasing capability)
Description
Statements in any form
understandable by the engineer
Nested sum of products and
any functions or operators
Nested sum of products and operators
Nested sum of products and certain
functions (a la FORTRAN)
Nested sum of products
Single level sum of products
Coefficients on inputs to block operators
Basic mathematical operator (a la analog)

~pica1

Examples

Statement

=

+

dy/ dt
y sin w t
x2
Yo
5, Yo
0, W
2II
Z
(XY + K1SIN WT) *ERF

=
=

MIMIC
DSL/90, UNITRAC
DES-1

Primitive operators, the minimum
necessary, with the minimum inputs

tem representation. However, programming is awkward for algebraic type problems.
The next stage provides coefficient setting on all
inputs to blocks of the type discussed above. * As
on an analog computer, only constants can be multiplied by the input variable.
A natural extension of coefficient setting is, of
course, variable multiplication at element inputs,
the next step up the table. (Division is also assumed permissible here.) This stage has not been
implemented, probably because the transition to the
next stage is so evident.
In this stage, exemplified by DES-I, nesting of
sums of products (and quotients) is allowed, i.e.,
any level of parentheses is permissible. A flexible
statement is provided, although no functional relationship (sin, exp) can be imbedded in the sum of
products.
This lack is provided at the next stage, now
available in the DSL/90 and UNITRAC languages.
Here, an input statement very similar to FORTRAN is available; a limited number of functions
may be used in the statement.
It might seem odd that a MIMIC type language,
which allows only operators in the statement, should
be set above UNITRAC or DSL/90 which permit
functions. However, since function generators can
be considered as operators, this format is extendable downward, and further allows operations like
integration and limiting to be imbedded in the input statement.
Moving now to the top, the next stage provides a
*It is seen here that the evolutionary movement up the
table is not in strict chronological order. ASTRAL and
DEPI preceded DAS and MIDAS.

=

(L*N) - INT ((A + B) *C) K2
Y: ADD (X,MPY (B,Z,SIN)(U»)
Y
X * Y * (SIN(A + B) )+K*M

=

Y = X *(C1 + C2 - C3*(C4-C5»
Y
K1 *X*X + K2*Z + K3*K4 - K5
N04
P01*N01 + P02*N02

=

ASTRAL, DEPI,
DYSAC
DAS
MIDAS

=

=

MI: S1,12
Sl: K1, 12, M3, K5
M1: S1,12
S1: K1,12
S2: S1, K3
12: K1

synthesis of the two below, allowing both operators
and functions to appear in the nested sum of products. The allowable function list would be open
ended and at the user's discretion. No published
work provides this capability. At the very top, and
really hardly in sight, is the capacity to accept any
reasonable problem statement understandable to the
engineer.
There certainly are objections to considering upward movement on the table as c.volutionary, with
the implied value judgment concomitant to that
view. The authors would agree that a powerful algebraic capability, although very useful for some
tasks, must at the present state of the art carry with
it increased complexity and arbitrariness. The tool
may prove too powerful for many users and lead to
confusion and errors. Further, many users prefer the
block approach and with excellent reasons.
However, all fears can be allayed, since regardless of the available complexity, lower level statements are possible by simply limiting the size and
complexity of the more powerful statement. A close
examination of Table 2 will show that any of the
formats are easily derived by restricting the extent
of those above.
Diagnostics

In general, program error diagnostics should be
extensive and specific. Each card containing the
error, and only that card, should be printed, along
with a specific comment on the trouble. Alternatively, diagnostics could be printed immediately adjacent to the erroneous statement, as the source language is being printed. Closed algebraic loops

32

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

should naturally be printed separately from format
errors.
It is expected that improved format will reduce
this sort of error, but some are sure to appear and
rapid checkout requires good diagnostics.
Diagnostics and corrections to the program must
be permitted in the source language to free the programmer from the details of debugging at the machine code level. For hybrid work it is essential
that such source level debugging and modification
be permitted on-line through a console typewriter
or similar unit. Extremely rapid compilation is of
course necessary to make this economical.
On-line debugging and modification has been
explored more fully in an earlier article by the
authors.25 The particular framework in point was a
huge multiprogrammed digital computer with analog type terminals (one might say a large scale
multiprogrammed P ACTOLUS, or a time shared
DES-I). With such a system and a parallel language, the advantages of analog computers (parallelism, intimate man-machine communication)
and digital computers (accuracy, repeatibility) are
both apparent. The language employed with this
system must permit clear diagnostics and simple
modification at the source level to retain the analog
virtues of simple communication and rapid modification.
STRUCTURE
Integration with Software System

As is well known, all modern software systems
contain many languages; one might mention FORTRAN, assembly language, ALGOL and COBOL.
These languages are generally under the control of a
monitor or executive program, which calls programs
to compile (or assemble) various source programs
into machine code. Usually subprograms can be
written in any of the source languages, and a complete program linked at load time.
The parallel language should come under this organization, and be available along with FORTRAN
and the rest, as the optimum source code for a particular class of problems. In this way, and using the
subprogram feature, each problem area could be
written in the best language for a particular task;
say, parallel language for the differential equations,
FORTRAN for the arithmetic, and machine language for chores such as masking, character handling, and Boolean operations.

1965

Extension Capability

In order to remain useful in the face of continuously expanding user requirements, any language
must be able to grow with needs. When a parallel
language is examined with the intent of increasing
capability without organizational disruption, it is
seen that expansion should take the route of adding
operators or functions. Expansion must, of course,
fit neatly into the total software system, i.e., the
other languages and the executive program, as outlined above. Since a common subroutine format is
already available with the other languages, any subroutine, written in any source code, could be used
by the parallel language programmer and be called
simply by using the subroutine name as an operator.
Augmenting the operator set must be made very
simple and obvious so the average user, unfamiliar
with normal digital techniques, can exploit the extension feature without recourse to a systems or
maintenance programmer.
User-Oriented Organization

The language should be designed to easily match
the capabilities of diverse programmer levels. Basic
subsets, such as primitive operators, algebraic statements, etc. should be made available to the less sophisticated programmers. These subsets should be
capable of integration and mixed use by the more
highly skilled user. Also, elements of a more complex nature (e.g., serial operators) should be
available to the expert, but not a matter of concern
for the novice. Thus, a structure is required that
will permit the novice to learn a mimimum subset
and then advance, if he wishes, to the use of an extremely complex and powerful simulation language.
(Or looking at. it yet another way, there should be
open and closed shop versions; the various open
versions upwardly compatible with the closed shop
version.)
In sum, there seems to be no need to restrict the
language's use to a particular programmer level, if
the initial design is done in a systematic manner.

IMPLEMENTATION
Regardless of format and structure, the language's
effectiveness will depend entirely on the quality of

DIGITAL SIMULATION LANGUAGES: A CRITIQUE AND A GUIDE

the implementation. This aspect has recently been, a
major interest area, and the concepts are becoming
rather well developed.
In general, a program that produces machine
code is a necessity for efficient execution. MIMIC
and SCADS, compilers, dire"ctly achieve this, while
DSL/90 and ASTRAL generate a FORTRAN deck
which can then be compiled into an object program.
This latter approach, (if a good FORTRAN compiler is used), can produce efficient code by exploiting the considerable efforts expended by FORTRAN designers. There are certain applications,
particularly those with small machines, where an
interpreter program makes more sense, but generally a compiler seems the best route. This is detailed
more fully below. First, an examination of the
trade-offs involved in writing a compiler program
for a parallel language.
Compiler for Different Applications

As was mentioned, there are three major usage
areas for parallel languages: analog check cases, differential equation solving, and the digital protion of
a hybrid problem. The relative weights given to
compiling and execution times vary with the particular application.
Analog Check Cases: This usage is generally on
a single job basis, i.e., the program is compiled and
run once and then discarded. Since the object program is never used again, only the sum total of
compiling and execution time for one run need be
minimized. In fact, this minimization is hardly a
point to stress, since analog check cases would
probably represent a small total of a digital facility's work load.
A II Digital Simulation: If the language is to be
used for this application on a "load-and-go" basis, minimization of the total time is of prime importance. On the other hand, if production programs are the expected rule, execution time is the
quantity to be minimized.
Hybrid: Here, the requirement for an efficient
object program is a vital consideration, and real
sacrifices can and must be made in compiling efficiency.
As a general rule, compiling time should never
be minimized at the expense of input format, and
only as a last resort should format be sacrificed for
decreased execution time. This latter seems a remote possibility, but it is easy to see compiling

33

time increased in the interests of simpler programming.
Different Computers
If this language is to achieve the general usage
typical of FORTRAN, some thought must be given
to implementation for diverse computers. It is pointless to design a system workable only for a CDC
6600-6800 or the top of the IBM 360 line. Similarly,
it is a waste of effort to aim at implementation solely
for a PDP-8, DDP 116 or SDS 92. The large machines obviously should have the full language, i.e.,
all subsets, and be provided compiled versions. For
the smaller machines, two appro~ches are possible.
The basic subsets could be compiler versions, thus
providing efficient programs although only for small
problems and at a modest language level. Alternatively, the complete system could be run in an interpreter mode, sacrificing time, but permitting the
use ofa very powerful tool on a small machine.

REQUIRED FEATURES
Along with implementation, the operational features of the language (the programmer's bag of
tricks) have been a major concern of language designers. This section does not aim to be all-inclusive; probably some of the "required" features have
not been invented yet. The requirements can be
subdivided into two classes: structural or logical
features, and the types of elements or operators.
Sorting is not discussed, since it is assumed that all
modern parallel languages will be so equipped.
Structural Features
Control: Logical. control over
program structure and execution is of paramount importance. DES-I, being sequential, easily incorporates this feature by the
use of "IF" statements similar to FORTRAN. MIMIC, a true parallel language,
still provides decision capability with the
"logical control variable."
In substance, statements or operators are
serviced or bypassed as a function of problem variables. So long as the by-passing
is done in the true digital sense (non-execution), and not the analog sense (execution, but no use made of the outputs), a
substantial time savings is realized.

1. Logical

34

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

Logical control is quite important. Without it a parallel language yields no more
than a hyper-accurate and hyper-repeatable
analog computer; some of the best features
of the digital computer, decision capability
and memory, are unused.

2. Multiple Rates: This important provision,
available in DES-I, minimizes execution
time by servicing slowly changing variables
only as required. Generally speaking, multiple rates increase the effective bandwidth
of the simulation program. This has real
import for hybrid work.
The multiple rate option is clearly a part
of logical control capability. In this case,
sections of the program are not executed at
every pass, but unlike full logical control,
the bypassing is not under control of a program variable.
3. Macro Capability: The macro capabilities
of modern assemblers should be available to the parallel language programmer.
Using this feature, prototypes of often used
problem sections could be coded with unspecified parameters, and then subsequently used as integrated units. Macros would
obviate repetitious coding of identical
loops or problem areas, e.g., parallel sections of control systems that are identical
in structure.
4. Subprograms in Other Source Code: In a
normal digital computer operation, there is
always a large library of routines available
to the programmer. These programs should
be easily incorporated within the parallel
language. If expansion is implemented as
suggested (see Extension Capability), not
only would the entire library be available,
but the programmer with digital training
could use whatever language desired for
particular problem areas. For example, logical or Boolean operations would be most
easily handled in machine language.
5. Repetitive Operation and Memory: It
should be possible to repeat runs, as on a
repetitive analog computer, with new parameters calculated from previous runs.
This implies two further requirements:
function storage, and algebraic calculations
between runs.

1965

Elements
In this section, the normally found operators, e.g.
summers, multipliers, etc., are taken for granted.
No attempt has been made to be comprehensive;
however, those discussed are considered important
and/or relatively rare in present languages.
1. Integrator: An accurate, efficient integration method is the sine qua non of digital
simulation languages. Apparently no firm
conclusions have been reached as to the
best algorithm; the number of schemes
tried is almost as large as the number of
languages (See Table I). As an example of
the dynamics of this situation, note that
Sansom, having used an excellent method
(4 point variable step predictor-corrector)
in MIDAS, changed to another (modified
Runge-Kutta) in MIMIC.
DES-I, DSL/90 and COBLOC permit a
number of integration options, ranging
from simple Euler integration to complex
Runge-Kutta and Adams-Bashford algorithms. This variety does allow the user
to select a. scheme which is adequate for
the required execution time, but presupposes considerable knowledge of numerical
techniques on the part of the programmer.
This presupposition defeats in large part
the basic idea, i.e., the simplicity and ease
of use, even for relatively untrained people.
In sum, it appears at this time that the
debate is hot on integration methods, and
more experience is still required. Parenthetically, it might be said that an objective,
thorough comparison of the various options would be a real service to the field of
digital simulation.

2. One Frame Delay: This element delays
its input by one integration interval. It
should be available for the sophisticated
user to selectively "desort" the program
list. COBLOC and DSL/90 presently have
the option of sort/no sort, but if the no
sort option is required in only one small
area, much care must be taken in the other
sections to insure proper operation. The
one frame delay is also quite useful for
representing sampled data systems or memory functions.

DIGITAL SIMULATION LANGUAGES: A CRITIQUE AND A GUIDE

3. Hysteresis or Backlash: This element is
not easily constructed from standard analog
type elements, but represents a trivial task
for the digital computer.
4. Limited Integrator: Again, no easy chore
from the standard elements, and no real
effort for the digital computer. MIMIC
presently has a limited integrator element
which is used in conjunction with a standard integrator.
s. Transfer Functions: These operators are
used extensively in control system design
and the like, and are simply constructed
from analog type elements. However, the
very frequency of their use suggests they be
made available as integrated general-purpose units.
In addition to the programming time savings, execution time can be saved, since
the integration algorithm required for a
closed loop transfer function is much simpler than a comparably accurate routine for
open loop integration.
Far greater savings are possible by using a
difference equation algorithm. This. method requires only one computational step of
the same size and complexity of a single
integration. Compare this with the n integrations required for a transfer function
with nth order denominator, when programmed by normal analog methods.
6. Print Operators: Very often, in checkout
and operation, it would be helpful to force
a print (number or words) at an arbitrary
point in the program. The operator would
be similar to a "snapshot" print, but would
be under the control of problem variables.
As a trivial example, consider the printing
of "OVERLOAD" when an analog check
case variable exceeds 100.
7. Parallel Logic: The operators of interest
here are the normal digital units found on
most modern analog computers. (AND
gates, flip-flops, counters, shift registers,
etc.) These elements are presently available in the MADBLOC, COBLOC, and
MIMIC languages. Their inclusion is essential to provide a digital check for a
modern analog computer problem. When
solving differential equations, such units
are also useful for simple logic and storage.

35

For the higher level logic of the type normally associated with general-purpose
digital computers, machine language subprograms, as discussed above, are more
useful.
8. Linkage Elements: For hybrid programming, elements or labels for analog to digital converter (ADC) and digital to analog
converter (DAC) components must be
provided. ADC's could be handled simply
as another parameter input to the problem.
These could be realistically labeled and
then identified somewhere in the program
listing, e.g., ALPHA = ADCl. DAC's
could also be easily handled; for the digital
program they are merely elements with one
input and no output. Sorting these elements presents no difficulties: ADC's would
be treated exactly like constants; DAC's
would be sorted like any other element
which has an input.
9. Hybrid Integrators: Since variables transferred to the analog computer are usually
held for an entire frame, an effective half
interval time lag results. Thus, integrators
generating quantities destined for the analog must account for this lag phenomenon.
Those integrators in a purely digital loop
must, of course, neglect this extrapolation.
Therefore, different integrator types, easily
distinguishable and easily specified, must
be provided for the two requirements. It is
entirely possible that the sorting routine
could automatically make the necessary
distinctions by tracing back from a DAC
to integrators not isolated by another integrator. An alternate procedure is the addition of an extrapolation calculation to each
DAC element. However, this approach
costs both storage and execution time.
CONCLUSIONS
Digital simulation languages have made a real,
and probably permanent, impact on the fields of
both simulation and computer programming. As has
been pointed out, there are more or less serious
faults in all existing languages. The success of the
approach is, however, evidenced by the undeniable
acceptance, utilization and enthusiasm for simulation languages, regardless of the difficulties at the
present phase of development.

36

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

It is the authors' hope that the conclusions and
recommendations proposed herein will add significantly to the utility of simulation languages, and
the field will enjoy even further growth and acceptance.

REFERENCES
1. John Locke, An Essay Concerning Human
Understanding, c.f., The Age of Enlightenment, editor-Isaiah Berlin, Mentor, New York, 1956 p. 33.
2. R. G. Selfridge, "Coding a General Purpose
Digital Computer to Operate as a Differential Analyzer," Proceedings 1955 Western Joint Computer
Conference (IRE), 1955.
3. R. D. Brennan and R. N. Linebarger, "A
Survey of Digital Simulation: Digital Analog Simulator Programs," Simulation, Vol. 3, No.6. (Dec.
1964 ).
4. R. D. Brennan and R. N. Linebarger, "An
Evaluation of Digital Analog Simulator Languages," I.F.l.P. 1965 Proceedings, Vol. 2 (1965).
5. F. Lesh, "Methods of Simulating a Differential Analyzer on a Digital Computer," A CM Journal, Vol. 5, No.3 (1958).
6. J. R. Hurley, "DEPI 4," internal memorandum, Allis Chalmers Mfg. Co. (Jan. 1960).
7. J. R. Hurley and J. J. Skiles, "DYSAC,"
Spring 1963 Joint Computer Conference, Vol. 23,
Spartan Books, Inc., Washington, D.C., 1963.
8. V. C. Rideout and L. Tavernini, "MADBLOC," Simulation, Vol. 4, No.1 (Jan. 1965).
9. J. J. Skiles, R. M. Janoski and R. L. Schaefer, "COBLOC," paper presented at Joint Meeting
of Midwestern and Central States Simulation Councils (May 1965).
10. M. L. Stein, J. Rose and D. B. Parker, "A
Compiler with an Analog Oriented Input Language
(ASTRAL)." Proc. 1959 Western Joint Computer
Conference, 1959.
11. M. L. Stein and J. Rose, "Changing from
Analog to Digital Programming by Digital- Techniques," ACM Journal, Vol. 7, No.1 (Jan. 1960).
12. R. A. Gaskill, J. W. Harris and A. L. Mc-

1965

Knight, "DAS," Spring 1963 Joint Computer Conference, Vol. 23, Spartan Books, Inc., Washington,
D.C., 1963.
13. R. T. Harnett and F. J. Sansom, "MIDAS
Programming Guide," Report No. SEG-TDR64-1, Wright-Patterson AFB,
Ohio,
(Jan.
1964) .
14. F. J. Sansom and H. E. Petersen, "MIMICDigital Simulator Program," SESCA Internal Memo
65-12, Wright-Patterson Air Force Base, Ohio
(May 1965).
15. M. Palevsky and J. V. Howell, "DES-I,"
Fall 1963 Joint Computer Conference, Vol. 24,
Spartan Books, Inc., Washington, D.C., 1963.
16. Anonymous, "SDS DES-I," Scientific Data
Systems Descriptive Brochure, No. 64-42-01C
(1964 ).
17. R. D. Brennan and H. Sano, "PACTOLUS,"
Fall 1964 Joint Computer Conference, Vol. 26,
Spartan Books, Inc., Washington, D.C., 1964.
18. R. N. Linebarger, "DSL/90," paper presented at Joint Meeting Midwestern and Central
States Simulation Councils, May 1965.
19. A. B. Clymer, "Report on Joint Midwestern-Eastern Simulation Council Meeting, June
1964," Simulation, Vol. 3, No.4 (Oct. 1964).
20. J. C. Strauss and W. L. Gilbert, "SCADS,"
2nd Edition, Carnegie Institute of Technology
(March 1964).
21. L. Sashkin and S. Schlesinger, "A Simulation
Language and its Use with Analyst-Oriented Consoles," Aerospace
Corp.
Report,
ATR-65
(59990)-5, San Bernardino, Calif. (April 1965).
22. R. F. Stover and H. A. Knudston, "PARTNER'" Doc. No. U-ED 15002, Aero Divn., Honeywell (1962).
23. W. C. Outten, "UNITRAC," paper presented
at J oint Meeting Midwestern and Central States
Simulation Councils (May 1965).
24. C. Green, H. D'Hoop, and A. Debroux,
"APACHE," IRE Transactions on Electronic Computers (Oct. 1962).
25. J. J. Clancy and M. S. Fineberg, "Hybrid
Computing-A User's View," Simulation, Vol. 5,
No.2 (Aug. 1965).

AUTOMATIC SIMPLIFICATION IN FORMAC
R. G. Tobey, R. J. Bobrow and S. N. Zilles
International Business Machines Corporation
Systems Development Division
Cambridge, Massachusetts

The remainder of this paper is divided into four
sections: Historical Background, The Role of Simplification in the FORMAC System, Simplification
Transformations, and The FORMAC Simplification
Algorithm.

INTRODUCTION
Simplification is a central and basic operation in
the manipulation of mathematical expressions. Indeed, much of the tedious algebra that' plagues
scientists and engineers involves the time-consuming application of simplifying transformations to
unwieldly mathematical expressions. It seems obvious, conceptually, that some simplifying transformations can be applied "automatically" to arbitrary
expressions. However, there are transformations
that require special handling; they simplify some
expressions and complicate others.·
FORMAC, an acronym for FORmula MAnipulation Compiler, is an experimental programming
system currently available as a Type II program
from IBM. It is a tool for programming the IBM
7090/94 to perform tedious mathematical analysis
on complicated mathematical expressions. The
FORMAC language contains, as a subset, FORTRAN IV; hence, FORMAC provides the capacity
for performing both nonnumeric and numeric calculations in the same program. The FORMAC language is described thoroughly in increasing amounts
of detail in references 1, 2, and 3. The details of
FORMAC implementation are presented in reference 4.

HISTORICAL BACKGROUND
A "SIMPLIFY" routine was written as early as
1959 as part of the Dartmouth Mathematics Project. It is the most complex routine reported in reference 5. During the same academic year, Edwards 6
and Goldberg7 explored the possibilities of automatic simplification in the context of electrical circuit
analysis. A LISP coded simplification package was
central to Goldberg's work. Within the next two
years Maling8 discovered that simplification was
essential to the LISP differentiation effort and
Hart9 developed "SIMPLIFY," a LISP function for
simplification. In 1963 Wooidridge 10 completed
another LISP simplify program, which was written
to be used on-line in a time-sharing environment.
In April of 1964 the experimental FORMAC system completed systems test and became operational.
It included a comprehensive simplification capability. In November 1964 the FORMAC system was
released as a Type III program.
37

38

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

The FORMAC AUTomatic SIMplification routine (AUTSIM) presents several contrasts to previous efforts:
1. None of these efforts is part of a comprehensive mathematical-expression manipulation system, nor are they as ambitious as
AUTSIM.
2. The LISP coded efforts are recursive.
AUTSIM is essentially nonrecursive; although the basic scan is controlled by a
push-down store, the simplification transformations do not employ recursion.
3. With respect to his own effort, Wooldridge
(reference 10, page 31) observes, "There
is no doubt that a large proportion of the
time spent simplifying is devoted to repeating simplifications already done."
AUTSIM is designed to avoid redundant
simplifications. This is a fundamental aspect of the AUTSIM scan and the entire
FORMAC object time system.
THE ROLE OF SIMPLIFICATION
IN THE FORMAC SYSTEM
The FORMAC programming system consists of
three parts-a programming language, a preprocessor, and a set of object time routines. In this section we discuss the relationship of automatic simplification to the FORMAC programming system.
The FORMAC programming language is a proper extension of FORTRAN IV and contains 4 declarative statements and 15 executable statements in
addition to the full FORTRAN .IV language. FORMAC also introduces additional symbolic mathematical operators from which symbolic expressions can
be composed. The language statements are summarized in Table 1, and the list of operators that may
be used to compose symbolic expressions is displayed in Table 2. These additions to the FORTRAN IV language permit the user to .construct
and manipulate symbolic mathematical expressions
at object time. The statements listed under 2b in
Table 1 provide an interface with the FORTRAN
program logic and with FORTRAN numeric capabilities. The form of generated symbolic expressions
can control the logic of program execution. Symbolic expressions can be evaluated and the numeric results used in FORTRAN-coded, numeric calculations.

1965

The FORMAC preprocessor scans through a
FORMAC source program and converts the FORMAC language elements into FORTRAN IV statements. Among these are many calls to FORMAC
object time routines. In addition, the preprocessor
creates a prototype for each symbolic expression
that occurs explicitly in a FORMAC command.
This prototype is used by the object time routines
Table 1. Summary of FORMAC Language Extensions to FORTRAN IV.
1. Four Declarative Statements
ATOMIC
DEPEND
P ARAM
SYMARG

declare basic variables, which name
themselves.
declare implicit dependence relations.
declare parametric pairs for SUBST
and EVAL.
declare subroutine arguments as
FORMAC variables; flag program
beginning.

2. Fifteen Executable Statements
( a) statements
LET *
SUBST*
EXPAND *
COEFF*
PART
ORDER *

yielding FORMAC variables
construct specified expressions.
replace variables with expressions.
remove parentheses.
obtain coefficient of variable or of
a variable raised to a power.
partition expressions into terms, factors, exponents.
specify sequencing of variables within expressions.

(b) statements yielding FORTRAN variables
EVAL *
evaluate expression.
MATCH *
compare two expressions for equivalence or identity.
FIND *
determine dependence relations.
CENSUS
count words, terms, or factors
( c) miscellaneous statements
BCDCON
convert to BCD form from internal
form (prepare symbolic expressions for output with FORTRAN
"WRITE" statement).
ALGCON* convert to internal form from BCD
form (facilitates input of symbolic expressions with FORTRAN
"READ" statement).
*These commands called AUTSTM.

AUTOMATIC SIMPLIFICATION IN FORMAC

A UTSIM
ERASE
FMCDMP

control arithmetic done during automatic simplification.
eliminate expressions no longer
needed.
symbolic dump

Table 2. FORMAC Operator Set.

+

EXP
LOG

(unary
internally)
*
(external only)
/
(power, t )
**
(factorial)
FAC
(double
DFAC factorial)
COMB (combinatorial)

(natural
logarithm)

SIN
COS
ATAN
TANH

( arctangent)

]

( delimiter)
( differentiation)

DIF

to generate the required expression when the corresponding FORMAC command is executed. Consider the segment of a sample FORMAC program represented by statements 1 and 2, below.
1. LET U = (1
2. LET X = (1

+ Z)**N
+ Z)**M-U + Z**5

These two statements cause the prototype expressions 1p and 2p to be constructed by the preprocessor.
1p. (1
2p. (1

+ Z)**N
+ Z)**M -

U

+

Z**5

When the call statement, generated by statement 1
during preprocessing, is executed at object time, the
symbolic variable U is defined as the name of the
newly generated expression (1 + Z**N. This is accomplished by scanning the prototype expression
which the preprocessor constructed for (1 + Z) * *N
and replacing the variables Z and N by their current
values. Let us suppose that Z is a symbolic variable,
i.e., it is either the name of a symbolic expression
or it may be an ATOMIC variable. In either case
its value is symbolic. N, on the other hand, is a
FORTRAN variable. Its value is numeric. Then the
generated expression for 1p will be like 1p, only Z
and N will have been replaced by their current values. If the value for Z is W-1 and for N is 2, then U
names the generated "expression 1g. Similarly, if the
value for M is 3, then-after execution of statement
2-X names the expression 2g.

39

19. (1 + W - 1) * *2
2g. (1 -I- W - 1) **3 - (1 + W - 1) **2
+ (W - 1)**5
Note that both these expressions require simplification. The extent to which they may be simplified is
unknown at compile time. Moreover, the degree to
which the FORMAC user understands (when writing the program) just which simplifications will be
applicable to these expressions depends on the complexity of the logic of the program in which they
are embedded. For example,
(1+Z)**M-U
will cancel if the current values of M and N are
equal; however, the values of M and N may be determined by quite complex program logic. We see
that in a mathematical formula manipulation system, organized as FORMAC is, an object time simplification capability is essential. (The expressions
being manipUlated may be far more complex than
in the above example!) Moreover, that capability
must be, to as great an extent as possible, automatic.
The FORMAC object time system is composed
of many subroutines. The command level routines
which correspond to the FORMAC executable
statements are the basic object time routines. These
in turn call a number of service routines. The automatic simplification routine, AUTSIM, is the most
important service routine. Each command which is
starred in Table 1 calls AUTSIM at least once.
The role played by AUTSIM in the FORMAC
object time system is not unlike that envisaged by
the Dartmouth Mathematics Project. 5 Their SIMPLIFY routine was designed to serve a threefold
purpose:
( 1) The answers produced by other programs may appear
in a far more complicated form than necessary, and then it
is desirable to simplify them.
(2) It may be desirable to simplify a given formula before
applying one of the other routines.
(3) It is a program that attempts to reduce formulas· to a
canonical form. Such a form is particularly useful, for
example, when we try to find out whether two formulas
represent the same function or not.

Purpose (1) is relevant to FORMAC; the result
of an EXPAND (see Table 1) may require the collection of like terms in a sum. There is an additional aspect which is worth noting. The design of the

40

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

algorithms for the basic FORMAC commands was
simplified by the assumption that AUTSIM would
clean up expressions after manipulations had been
performed. It was not necessary to rule out a fast,
simple algorithm for a particular manipulation simply because it produced a more complicated expression than necessary. Moreover, the inclusion of
code in the algorithm to eliminate redundant expression elements and to clean up expressions, would
have lead to a proliferation of redundant code
throughout the FORMAC object time system.
Several FORMAC command algorithms are
greatly simplified by the assumption that the
expression they receive is already simplified and in
p-canonical form ( to be defined later) . This is
close to the intent of purposes (2) and (3) above.
Note, however, that in purpose (2) the Dartmouth
investigators were also concerned about the success
of their algorithms on a given expression if it were
unnecessarily complicated. The concern was not as
significant in the design of FORMAC algorithms,
but then the FORMAC design goals did not include
symbolic mathematical manipulations for which
complete algorithms do not exist.
The AUTSIM algorithm itself makes use of the
applicability of purpose (3) . Collection of like
terms in a sum of like factors in a product is dependent upon the assumption that such terms or factors
will be in a nearly identical form.
Since AUTSIM is at the iterative heart of the
FORMAC object time system, it is important to
consider just how fast the algorithm is.
An example is provided in reference 11. The
FORMAC system was used to generate expressions
of interest to the astronomer. The computer (IBM
7094) required 18.67 minutes to generate the first
27 iterates. It is estimated that to do this work with
any reliability would require 60 years by hand.
AUTSIM is called 2,975 times during execution of
this program. Note, this does not mean that every
time AUTSIM was called it changed the input
expression. If the expression was already simplified
no simplification was performed. This also holds
for subexpressions which have been simplified previously (see Fig. 1). No doubt, many of the calls in
the above example resulted in very little actual simplification. But this is a mark of a well-designed
simplification algorithm; it must not perform redundant simplifications.
We have seen that an automatic simplification
algorithm is essential to the successful operation of

1965

the FORMAC system. Moreover, once the decision
has been made to include an automatic simplification algorithm in a formula manipulating system,
the design of the other object time algorithms is
simplified in two ways: one can make definite as.,.
sumptions concerning the form of expressions
which are to be manipulated; and, the form of the
manipulated result need only be mathematically
correct (it may contain redundant or unnecessary
subexpressions which the automatic simplification
routines will remove).
SIMPLIFICATION TRANSFORMATIONS
As intuitively obvious as the need for it may be,
simplification is a difficult class of expression
transformations to define. Even to a human engaged in the manipUlation of complicated or
lengthy expressions, it is frequently not obvious
which transformations constitute actual simplifications of an expression. The confusion is compounded by differences of opinion. W00idridge10 acknowledges this aspect of the problem by referring to his
program as one "which performs 'obvious' (noncontroversial) simplifying transformations." Confusion may also arise from the failure to make a distinction between "simplified" form and "intelligible" form. Frequently, these are not equivalent.
Consider the expression

I
2A
C \) DE (2DF

+ C)

It is in some sense simplified, yet for the engineer

it may be more intelligible in the form:
D

I

A

I

A

c'\} E (F + C/2D) = cp '\} E (F + cp/2)
with cp C/D. An engineer may spend weeks
or months massaging a simplified mathematical
expression. His goal is to arrange the expression so
that the relationship between the crucial variables
becomes transparent or intelligible to the human
observer. The adequacy of the result is highly dependent upon human perception of mathematical
relationships. Yet the expression is already simplified. Like terms and factors have been collected in
sums and products; evaluation of strictly numerical
elements has been performed; various redundant or
extraneous elements have been removed. Although

41

AUTOMATIC SIMPLIFICATION IN FORMAC

INITIALIZE
POINTERS TO
EXPRESSION

UPDATE POI NTERS
SO AS TO
SKIP
THIS WFF

PERFORM
TRANSFORMATION
(CALL LEXICO
IF NECESSARY)
UPDATE POINTERS
SET AABITS

UPDATE POINTERS
SO AS TO
SIMPLIFY
THIS WFF

Figure 1. Flow diagram for AUTSIM subroutine.

we have no better definition to offer of intelligible
form and simplified form, we maintain that the distinction is significant. It is well to note that even
though the FORMAC simplification algorithm is
central to the operation of the FORMAC system,
code (written in the FORMAC language) designed

to reduce expressions to a particular intelligible
form is imbedded in many FORMAC user programs.
If the mathematical context within which simplification is to be performed is suitably uncomplicated,
there exists a canonical form for all permissible

42

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

expressions. For example, there is a canonical form
for polynomials in n variables. The existence of
such a form can greatly simplify the design of a
simplification algorithm. 5 In polynomial manipulation
systems,12,13 simplification is simply the reduction of
polynomials to canonical form. The problem of
designing a simplification algorithm becomes that of
reducing expressions to the canonIcal form .. However, in FORMAC it is possible to generate expressions which when simplified are equivalent but not
identical. The fact that, in FORMAC, expansion of
expressions is performed only under user option
indicates one way in which this can occur. FORMAC
will not expand the expression (a + b) 2 to yield
a 2 + 2ab + b 2 , unless such expansion is specifically
requested by the programmer. A second example of
equivalent expressions is provided by the equation
eX _ e- X

tanh (x) = e x .,
'
e-

X

1965

made to incorporate trigonometric identities in the
FORMAC simplification process. Since the categories indicated above are not mutually exclusive,
there is no need to discuss them all. Our discussion
of simplification transformations is partitioned as
follows: natural transformations, transformations
which apply the distributive law, transformations
which embody associativity and commutativity, and
mathematically undefinable expressions.
In the paragraphs which follow the mathematical
transformations are defined in the FORTRAN notation. Letters from the beginning of the alphabet
represent arbitrary mathematical expressions. As
such, they are often referred to as "well-formed
(sub) formulas," or "wffs." The transformations
which AUTSIM performs are labelled with letters
of the alphabet.
Natural Transformations

•

The automatic application of expansion to all
expressions or the automatic replacement of tanh
(x) by its equivalent would make possible the reduction to a canonical form in these two cases.
However, the intelligibility of the expressions being
manipulated would be greatly impaired. Indeed, the
automatic expansion of expressions would frequently produce the opposite result from that desired by
the user. As a result, the FORMAC simplification
transformations establish at best a pseudocanonical
(p-canonical) form. As will become evident, this pcanonical form makes additional simplifications
possible. It also establishes a structural context
which can be assumed for all automatically simplified ("autsimmed") expressions; thus it reduces the
complexity of the other FORMAC expression manipulation algorithms.
Expression transformations that are candidates
for inclusion in a simplification algorithm can be
categorized in many ways. There are transformations that contribute directly to the establishment of
a p-canonical form. Several transformations embody
basic mathematical laws such as the associative,
commutative, and distributive laws. There are
transformations which are "naturals" and transformations which should be placed under programmer
option. Still others, employ basic arithmetic or
functional identities. AUTSIM performs transformations that fall into each of these categories. It
should be noted, however, that no attempt was

Consider the following transformations:
(a) O**A~O
(b) 1**A ~ 1
(c) A * *0 ~ 1
(d) A**1 ~ A

A~O

A = 0

(e ) (-A) * *N~{ -A * *~ if ~ is an odd .integer
A * *N If N IS an even mteger
(f) -(-A)

~

A

(g) EXP(LOG(A» ~ A.
(h) LOG(EXP(A» ~ A
(i) -(3* A *(-B)*C*(-D» ~ (-3)* A *B*C*D
n
n
(j) l Aj ~ l
Aj
Where Ak = 0
j = 1
j = 1
j~k

m

m
Bj~1I

II

1

Bj

j = 1
j ~k

where Bk = 1

m
(k)

II
j = 1

Bj~O

where k exists
such that Bk = 0

These are "naturals." They are transformations
which one usually performs automatically when manipulating a mathematical expression. FORMAC
also performs these transformations automatically.
A less clear-cut but natural type of transformation is the evaluation of non arithmetic operators
with constant arguments. For example,
X

+ SIN

(1.4)

~

X

+ 0.98545

or
y IFAC (5)

~

y 1120

AUTOMATIC SIMPLIFICATION IN FORMAC

However, in some applications it is desirable to replace such expression elements with the proper
numeric value; in others, it is not. The FORMAC
solution to this quandry is to give the programmer
control over the automatic evaluation of these
expression elements. He has four options from
which to choose: (1) all functions are automatically evaluated, (2) only the integer-valued functions
(FAC, DFC, and COMB) are evaluated, (3) only
the transcendental functions (* *, EXP, LOG, SIN,
COS, ATAN, TANH) are evaluated, or (4) no
functions are evaluated. The first option is the default option.

Transformations that Apply the Distributive Law
Two types of "simplification" utilize the distributive law; these are expansion of a product of
sums and primitive factoring. Some examples follow:
1. A*(B + C) ~A*B + A*C
2. A*(B + C)*(B - C) + A*C**2 ~
A*B**2-A*B*C + A*B*C-A*C**2
+ A*C**2 ~ A*B**2
3. (B + C) **3 ~ B**3
3*B*C**2 + C**3

+ 3*B**2*C +

4. A*X + B*X + C*E*X + D*E
(A + B + C*E)*X + D*E

~

( 1) is a simple example of expansion. (2) is an
expression which requires expansion as an intermediate step toward complete simplification. (3)
illustrates multinominal expansion. (4) is an example of primitive factoring (the coefficient of a single variable, X, has been "factored" out of part of
the expression).
Neither expansion or factoring should be applied
automatically by a programming system. As in example (2), expansion may, for a given expression,
provide the key for further simplification. However,
there are expressions for which it inhibits simplification. Consider

'=

A2 - B2

(A + B + SIN (X) ) * (A - B)
+ A*SIN(X) - B*SIN(X).

H this expression is divided by A + B + SIN (X) ,
only in the expanded form will cancellation occur
automatically, since FORMAC cancels explicit factors but does not perform factorization to uncover

43

them. Since only the global context of the expression
manipulation will in general indicate if expansion or
coefficient gathering will lead to desirable results,
these transformations are not included among the
transformations performed by AUTSIM.. The FORMAC commands, EXPAND and COEFF, provide
these transformations under programmer option.

Transfonnations that Embody Associativity and
Commutativity
The associative and commutative laws for + and *
contribute in a fundamental way to the behavior of
mathematical expressions. A basic design goal for
any simplification algorithm (for a mathematical
structure for which these laws hold) must be to incorporate these laws as naturally as possible. As
shall be obvious in a moment, these laws have implications for the internal representation of FORMAC expressions, the FORMAC mathematical operator set, and the p-canonical form for expressions
-not to mention the simplification transformations.
The associative and commutative laws are assumed to hold for any expression which is generated or manipulated in FORMAC. There are three
transformations included in the FORMAC system
that establish associativity and prepare the way for
the sorting of operands. Such sorting implements
the FORMAC assumption that all expressions are
commutative. These three transformations which
affect the structure of the internal FORMAC p-canonical form, are listed below under (1) and (2)
and in the next paragraph under (script 1). (Note:
(1) and (2) are not performed by AUTSIM.)
1. A- B ~A + (-B).
2. AlB ~ A*B**(-l).
Transformations (1) and (2) are analogous and
accomplish analogous results. The binary inverse
operators - and/ are replaced in one instance by a
unary - and in the other by a binary* *. Under transformation (1), the expression A + B - C + D - E
becomes A + B + (-C) + D + (-E); under (2),
A*B/C*D/E becomes A*B*C**(-1)*D*E**(-l).
The net effect of both transformations is the same,
however. The scope of the main operator (+ or *)
is made explicit in the expressions and, hence, so is
the assumption of associativity. This is an important
characteristic of the FORMAC p-canonical form.

44

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

Moreover, commutativity of either operator can
now be relaized simply by rearranging the wellformed formulas (operands) of the operator. These
two transformations are performed in FORMAC by
the expression translator, which takes expressions
written in FORTRAN infix form and translates them
to the internal FORMAC form.
q

e

(I)

Bj

k = 1

where
S

Ai =

e

em,

=

p

+ s - 1, BI = AI, ... , Bi-l

Bi = CI, ... , Bi+ S ... , Bq = Ap , and

A-A~O

5 * A + (-5) * A ~ 0
5 * A + (-2) * A ~ 3 * A
(A + B) * C + (-A + B) * C ~ 2 * B * C
Notice that all of these involve "factoring," the inverse of expansion. In general, they can be represented by Al *B + A2 *B + ... + An *B ~ (AI
+ ... + An) *B. While it would seem optional to
apply such a "factoring" operation in all cases, the
following difficulties arise if no restrictions are
placed on the Ai:
1. In general, factoring of an arbitrary sum (AI
An) would require recursive use of AUTSIM and LEXICO, since it would create a new sum
of arbitrary characteristics which would have to be
simplified and sorted. This is not a major difficulty,
but we hoped to avoid such recursion.

+ ... +

m=1

q

1965

= AI-I,

= C s , B i+ s = Ai+l,
e is either I or II.
1

The transformation (I) must be included in the
automatic simplification algorithm. It is not sufficient
to include it only in the expression translator. The
FORMAC substitution capability may substitute a
sum for a single operand of a sum. Since both
expressions are already in internal form, the transformation (I) must be applied by AUTSIM in order
to maintain the p-canonical form.
An important consequence of associativity and
commutativity is the fact that like terms in a sum
and like factors in a product may be combined.
This is accomplished in FORMAC by imposing a
specific linear order on the operands of these commutative operators.
The linear order is designed so that operands
which can combine are equal. Hence, collection of
like operands is accomplished by a twofold process:
the operands are lexicographically ordered and
those operands which will cancel are combined as
they are sorted together.
That portion of AUTSIM which orders and combines operands is called LEXICO. (lexicographic
ordering). This routine is distinct from Autsim
proper, because the scan required for sorting is noticeably different from that needed to perform the
operator-operator transformations that make up the
bulk of the AUTSIM routine. Lexicographic sorting
accomplishes two things. In addition to the collection of like factors in a product and like terms in a
sum, it contributes to the establishment and maintenance of the p-canonical form.
Examples of the type of combining which one
might like to perform follow:

2. Finding B might be difficult if both B and Ai
are products. Consider how to factor something like:
AI*BI*B2*~
~

(AI * A4

+ BI*A2*B2*A4 + BI*A2*A3*B2
+ A2* A4 + A2* A 3) *B I *B2.

The coefficient of a term like BI *A2*B2* A4 is quite
ambiguous when it stands alone. For example, does
it represent BI occurrences of A2*B2* A 4, or BI *A2
*A4 occurrences of H2? If one is told that the Ai are
parameters and the Bi are variables, then one can
say that the term represents A2 *A4 occurrences of
B I *B 2. However, LEXICO does not have such information. It would have to determine what the symbolic coefficient of a term is by considering all the
terms in the sum. This could be done by obtaining
the greatest common divisor of all the terms. The
symbolic coefficient of a term would then be taken
to be the result obtained by dividing the term by the
greatest common divisor. Thus, LEXICO could perform the transportation illustrated above. However,
the resulting expression would often not be in the
form desired by the FORMAC user.
3. Consider the expression
(A + B)*C + D) + (A-B)*(C + D)
+ (A + B)*(C-D),
in which combining of like terms could produce
either 2*A*(C + D) + (A + B) * (C - D) or
(A + B) *2*C + (A - B) * (C + D).
Clearly, the major difficulty of cancellation in
sums is the determination of which expressions are
"coefficients." The difficulties which can arise in

45

AUTOMATIC SIMPLIFICATION IN FORMAC

the case when "coefficient" is a partially ambiguous
concept are pointed out in (2), while (3) is an example of a case in which it is completely ambiguous as to which expressions are coefficients and
which are not. In order to eliminate such ambiguities while still retaining a useful capability, cancellation was limited to combining numeric coefficients of like symbolic expressions.
In the case of cancellation in products, we wish
to combine exponents. Notation removes nearly all
of the ambiguity corresponding to the coefficient
difficulty in sums, since base and exponent are
readily distinguishable in most cases. However,
problems can still arise; for example,
(A **B) **C*A**D*A **(B*E) *(A **C) **B
= (A**B)**C*A**(D + B*E)*(A**C)**B
= (A**B)**(C + E)*A**D*(A**C)**B
= (A**B)**(2*C + E) * A**D
This ambiguity is resolved by the presence of a transformation in AUTSIM which establishes the pcanonical form for nested exponents so that

(. . . « Al **A 2) * *Aa) ... * *An)
Al * * (A2 *Aa * . . . An).
(m) (A**B)**C~A**(B*C).

~

Because transformation (m) is performed, LEXICO can combine all factors with identical bases,
giving a powerful cancellation ability. The expression above is reduced through a sequence of transformations to
A ** (2*B*C + B*E + D).
While performing cancellation in products by combining exponents, LEXICO may create sums which
had not previously existed, and which must be
simplified. This could have required recursive use
of AUSTIM and LEXICO. If the transformation
(LOGA1 + LOGA2 + ... + LOGAn ~ LOGA1*
. . . * An) were also performed by LEXICO,
these two transformations could lead to an arbitrary
depth of recursion. Hence, to avoid recursion, that
LOG transformation was omitted from AUTSIM
and steps were taken to make possible the simplification of the exponent sums by a simple, one-level
use of LEXICO and no use of AUTSIM. Some of
these steps will be described in the discussion of
general flow and techniques of LEXICO. As is often
the case, however, hindsight is much clearer than
foresight. It appears that a recursive LEXICO would
have resulted in both a faster and a more compact

simplification package than the tricks used to avoid
recursion in the experimental IBM 7090/94 FORMAC system.
In addition to transformation (m), there are several transformations included in the FORMAC simplification procedure for one reason: they contribute to the reduction of expressions to a p-canonical form which extends the simplification possible
via combination.
There are three transformations that contribute
to the cancellation of like terms in a sum.

+ B + C) ~-A-B-C
+ LOG(B1* ... *Bs) + C ~ A + LOG(B 1)
+ .... + LOG(B s) + C

(n) -(A
(0) A

(p) LOG(A**B)

~

B*LOG(A)

The last two transformations, (0) and (p), prepare
for the collection of logarithmic terms in a sum. For
example,
LOG(A) + LOG(B*A**(-2»
LOG(A) + LOG(B) + LOG(A**(-2»
LOG(A) + LOG(B) + (-2)*LOG(A)
Lexicographic ordering, accompanied by collapsing
of like terms can then produce the simplified result,
- LOG (A) + LOG (B). The transformation (n)
is a trivial application of the distributive law. It
makes possible the reduction A + D - (A + B) ~
(A + D - A - B ~ (A - A) - B + D ~ - B + D.
Two transformations perpare the way for the collection of like factors in a product, transformations (m)
and (q).
(q) (Al* ... *An)**C

~

A1**C* ... *An**C.

The FORMAC p-canonical form is further reflected
by these transformations. Factors of a product are
maintained as distinct bases raised to powers; they
are not gathered together as products (of those bases
which have equal exponents) raised to that power.
The form (A1*A2)**B 1 * (A2*Aa*A4)**B2 * (Al*
A4) ** (- Bd becomes Al**Bl * A2**Bl * A2**B2
* Aa**B2 * A4**B2 * Al**(- B1) * A4**(- Bl).
Then LEXICO can sort and collect like factors
producing
A2**(Bl

+ B2) * Aa**B2 * A4**(-Bl + B2).

Mathematically Undefined Expressions

There are three mathematically undefined expres:sions which may be introduced into FORMAC expressions. These are

46

PROCEEDINGS -

1. O**(-a)
2. LOG(O), and
3. 0**0.

FALL JOINT COMPUTER CONFERENCE,

(a is a positive number),

In FORMAC, the first two expressions are evaluated as they would be by FORTRAN; i.e., each is
replaced by 0 and a suitable message written on the
output listing. The third expression is left intact so
that the programmer may substitute a variable or
expression of his own choice for it. These are
neither consistent nor aesthetically pleasing solutions. Alternative approaches to this problem will
be discussed in a later paper. It is the intent of the
authors to publish a subsequent paper that will contain flow diagrams with sufficient detail to simulate
the AUTSIM algorithm. In such a context, it will
be possible to consider adequately the ramifications
of various additions and changes to the AUTSIM
algorithm.
THE FORMAC SIMPLIFICATION
ALGORITHM

1965

by a delimiter, "]". Hence, the Polish string + A B
CD] represents the expression A + B + C + D;
the Polish string

+ A * Be] D 5]
represents the expression A
and the P,olish string

+

A

+ B * C + C + 5;

* BCD5]]

represents the expression A + B * C * D * 5.
The introduction of the variary operators makes
meaningful the application of transformation I to a
Polish string; hence, the implementation of both
associativity and commutativity is simplified by
this notation. Moreover, fewer symbols are required
to represent a sum of product; less space is required
for the internal representation of expressions.
The entire FORMAC operator set is displayed in
Table 2. The differentiation operator requires a further word of explanation; it is also variary. In delimiter Polish,
df
DIF f x 1]
represents ~
()6

This section is an introductory description of the
FORMAC automatic simplification algorithm.
There are three subsections: FORMAC Internal
Expression Representatation, Details of the AUTSIMScan, and The Organization of LEXICO.

Note that, for the sake of clarity, the power operator
** will be represented by the symbol "1''' in delimited Polish expressions.

Details of Expression Representation

Details of the A UTSIM Scan

Any mathematical expression manipulation system must operate on expressions interpretively,
since the form of an expression may change constantly as it is manipulated. An efficient internal
coding for mathematical expressions is essential.
There are two well-known notations for mathematical expressions: commonly used infix, and classical
Polish notation. The unwieldiness of infix notation
and the difficulties and inefficiencies it presents for
algorithm design are well known. The use of prefix
Polish notation overcomes many of these problems,
and "Cambridge" Polish, introduced in reference 14,
provides space and algorithm economies not provided by classical binary Polish.
"Delimiter Polish" is the form used to encode
mathematical expressions in FORMAC. This can
be thought of as classical Prefix notation, permitting unary, binary, and variary operators. Of the
arithmetic operators, only "+" and "*" are variary.
The scope of range of a variary operator is defined

Governing Operators. The key to the basic scan of
the AUTSIM routine is the decision process that
determines whether a "simplifying" transformation
is applicable to that part of the expression currently
being scanned. This decision process is based on
the concept of governing operators. Every operator
acts upon or governs its operands, and each operator (with the exception of the outermost) is governed by a higher level operator. In the example

and DIF f x 2 Y 1 z 3 ] represents

*

A

()2

x () Y ()3

Z

(f).

+ BC] D]

the outermost operator is the * which governs the +
operator. Or in other words the + operator is governed by the *. The applicability of most simplification transformations can be determined from a
simple transfer table based upon the juxtaposition
of governing and governed operators.

Contextual Checking. For some of the transformations it is necessary to do extra contextual checking

47

AUTOMATIC SIMPLIFICATION IN FORMAC

to eliminate unnecessary or unwanted applications
of the transformation. There are essentially three
types of context which may be checked before
applying a transformation:
1. The first type of checking tests for a specific pattern of operands or operators. For
example, the simplification of t -BK is
only done if k is an integer, but the po ssible applicability of the transformation is
recognized by the combination of the
and the - sign.
2. A second type of context checking tests to
see if the governed subexpression has already been simplified.
3. The final type of checking tests the system
switches to determine if the transformation
should be performed. The evaluation of
non arithmetic operators with constant arguments is an example of this type of
checking, since it is done only if the proper switches are set. In some cases the contextual information is discovered before it
is needed. This contextual information is
associated with certain operators such as t,
COMB, and * through flags which indicate
the status of their operands.
Certain transformations are not applied when first
recognized by the transfer table. These transformations are delayed until the governed subexpressions
are simplified. This is done for two reasons.' First the
transformation may disappear when the subexpression is simplified. For example, the transformation
(EXP(A) )**B ~ EXP(A*B) is delayed because A
might be the expression LOG C in which case (EXP
(LOG C)) * *B ~ C* *B. This reduction could not
occur if the transformation were not delayed. The
second reason is that an unnecessary intermediate
growth in expression size results if certain size-increasing transformations are not delayed. An example of this type of transformation is the transformation (Al* ... *An)**C ~ Al**C ... An**C. It
is easy to see that the size of the right-hand expression is greater than that of the left-hand one since the
exponent occurs n times. If the product is simplified
before applying the transformation, then the number
of replications of C is less than or equal to the number required for the transformation acting on an unsimplified product.
The AA Bit. The fact that an operator and its operands have been simplified is indicated by the AA

bit
ish
the
not

(Already AUTSIMed bit). In the delimiter Polnotation the AA bit is indicated by a dot over
operator. However, constants and delimiters do
have an AA bit. For example, in the expression

+ A *:8C5]

l'

A-I]

the subexpression *:8C5] is simplified as indicated
by the dot over the *. There are AA bits on Band
C, the operands of the *, since in some instances
the lead * can be removed by a transformation but
the operands are still simplified. If the expression was
LOG *BC5]
then this can be transformed to

.

.

+ LOG B LOG CLOG 5]
and Band C would remain simplified and require
no further simplification.
The AA bit has an addition function. It indicates
that a subexpression has already been scanned for
transformations, so only transformations which involved the lead operator of the expression are still
applicable. The AA bit prevents the scan for transformations from oscillating indefinitely.
The FORMAC command subroutines do not reset the AA bit on expressions they manipulate, unless they actually alter the expression so that it is
no longer simplified. Then, the AA bit is reset on
the expression but not on those wffs of the expression which have not been changed. In this manner,
the entire FORMAC object-time system operates to
minimize redundant simplification.

The Scan Pointers. As the expression is scanned,
the location of the governing and governed operators constantly changes. The current governing and
governed operators are determined by the two scan
pointers P and C. The pointer C points to the symbol which is currently being scanned. The pointer P
points to the operator which governs the current
symbol. Consider an example. Suppose that the scan
is currently looking at the following expression
fragment.
PC
t

t

... + *Xy] * t Z2W] 5] ...
The current symbol is the first * operator. The
AUTSIM transfer table shows that no transformation is done for + * so the scan pointer must be
moved. The AA bit on the first * indicates that no

48

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

transformations remain in that operand so that the
scan moves to the next operand. The C pointer is
updated to point to the second operand under the
operator,
P
C

t
t
. . . + *Xy] * t Z2W] 5]

...

Now the current symbol is the second * operator.
As before, no transformation can be applied so the
scan pointer is moved. However, in this case the
product is not simplified so it must be scanned for
possible transformations. Therefore, the scan pointer
moves to the next symbol, the t operator. But the t
is governed by the * operator so the pointer P must
be moved to the new governing operator. After the
scan pointer is moved the expression looks like this:
PC

t t
. . . + *Xy] * t Z2W] 5] . ; .
The scan pointers continue to move in this fashion.
After a transformation is performed the pointers
must be updated so that they will be· properly positioned to continue the scan. At each step in the
scan the current operand of the current governing
operator is simplified before the next operand is
scanned. This method of scanning means that the
current symbol pointer, C, oscillates back and forth
along the delimiter Polish string as the expression
is simplified.

The Push-Down List. In the example above, the
pointer P was moved from the .+ to the second *
when the second product was being simplified. After that simplification is completed, the C pointer
will have returned to the * and the AA bits will
have been set.
C

t
. . . *Xy] * i Z2W]

5]

But the P pointer must be reset to the operator
which governs the *, namely the + operator. Therefore, whenever the scan pointer is moved to scan an
operand, it is necessary to save a pointer to the old
governing operator and any flags associated with it.
This information can then be used to reset P to the
+ operator. Since each operand is in itself a wellformed expression, a natural method for saving the
current status of an operator is to make the AUT-

1965

SIM routine recursive. However, for reasons of efficiency, the A UTSIM algorithm uses a push-down
list (PDL) to save the simplification and scan status. The top entry on the PDL always indicates the
current governing operator so that the P pointer is
just another name for this entry.

LEXICO and Expand. Two major departures are
made from the AUTSIM scan in order to perform
large transformations. The first of these, LEXICO,
is described in detail in the next section. The second major departure is under control of the
EXPFLAG. If it is set on either a * or t operator,
then the expand algorithm is invoked to remove
parentheses.
We have seen that the AUTSIM scan is essentially oscillatory in nature under the control of a pushdown store, a current symbol pointer, and AA bits.
A systems level flow diagram for AUTSIM is provided in Fig. 1.
The Organization of LEXICO
The general flow of the LEXICO subroutine is
displayed in Fig. 2. There are three major blocks in
LEXICO: the COMPARE routine, the COMBINE
routine, and the CLEANUJ> section. Although considerations of efficiency led to an intermixing of
the code, the routines are most easily understood as
separate entities. The remainder of this section will
treat each of these blocks. The requirements placed
on each unit, the motivation for imposing these requirements, and the manner in which these requirements are met are discussed.

The COMPARE Routine. Because the internal
FORMAC representation is not designed specifically for sorting, a special sorting list (BWFF) is constructed from the input sum or product which is
being sorted. Each subexpression under the + or *
is handled separately and the sorting list is built up
as each of the sub-wff's is sorted against the subwff's already on the sorting list (see Fig. 2). The
heart of the sort is the routine which compares the
sub-wff being sorted (AWFF) with the ith sub-wff
on the sort list CBWFF(I)). We shall discuss the
criteria for a sorting order and sketch the actual
sorting order employed by LEXICO.
(a) Criteria for a Sorting Order. The description of the comparison routine would be difficult to
understand without a description of the sorting or-

49

AUTOMATIC SIMPLIFICATION IN FORMAC

CLEANUP
NO

FORM SORTING
LIST INTO
WELL FORMED
SUM OR PRODUCT.
SIMPLIFY
DEGENERATE CASES

GET NEXT
EXPRESSION
TO BE SORTED
(AWFF), i .8., AWFF
IS THE NEXT
TERM IN SUM
OR FACTOR IN
PRODUCT

PLACE AWFF ON
SORTING LIST
AS BWFF (1)

INSERT AWFF
BETWEEN
BWFF (I) AND
BWFF(I-I) IN
SORTI NG LIST

INSERT AWFF
BEFORE BWFF(1)
IN SORTING LIST

COMBINE
AWFF AND BWFF(J:).
REPLACE. BWFF(I)
WITH RESULT

INSERT AWFF
AFTER BWFF(I)
IN SORTING LIST

Figure 2. LEXICa flow diagram.

der which it is supposed to implement. The particular sorting order used in LEXICa was chosen to
meet ·a wide range of requirements.
The first requirement of a method of sorting is
that the sorted result be· unique. That is, the result
of the sort does not depend on the original order of
the subexpressions it sorts. In this case, the sort

yields a linear or total ordering. If the comparison
of any two expressions gives a definite ordering for
these two expressions and if this ordering is transitive, then the ordering is total. If this were the only
requirement, expressions which are represented by
linear strings of symbols, could be sorted by the
left-to-right comparison used in dictionaries. All

50

PROCEEDINGS- FALL JOINT COMPUTER CONFERENCE,

that is needed for this technique is a linear ordering
of the possible symbols, similar to that given to the
letters of the alphabet ("alphabetical ordering").
However, LEXICa must "combine" similar
expressions; e.e., it must perform cancellation. This
imposes the requirement that expressions which can
be combined by cancellation should have almost
identical ordering properties, so that, during the
sort, the routine will compare them with one another'
and realize that cancellation is possible.
Specifically, the following classes of expressions
must have nearly dinetical sorting characteristics:
1. explicit products that differ only by a constant
(numeric coefficient, e.g., * ABC K 1] and
* ABC K2 are numbers;
2. a nonproduct expression and a constant multiple of that expression, e.g., SI X and * SIN
XKd;
3. a negative expression and the product of that
expression and -1, e.g., -SIN X and * SIN X
-1] or * ABC -1] .and - * ABC];
4. exponentiated expressions that differ only in
their exponents, e.g., t X Y and t X + W Z]
or t + A B COS Y] 2 and t + A B COS Y]
Q or EXP + X Y - D] and EXP ATAN Q;
5. an expression and that expression raised to a
power, e.g., SIN + X Y] and t SIN + X Y]
* ABC].
Note that since we have no unary operator denoting
the multiplicative inverse, we avoid the problem
analogous to (3) for exponents.
Combining depends upon recognizing these special cases. They involve differences in top-level
structure; the only information required concerning
the lower-l~vel structures is whether or not they are
identical. It would have been possible to design a
routine that checked for these special cases on the
top level, and used a simple dictionary ordering to
compare subexpressions of the terms or factors it
was sorting. For example, if the minus sign (-)
came ,after all variables in the linear ordering of
symbols, it would be possible to design a routine in
which A and -A sorted almost identically as terms
in a S}lm ( and hence could be canceled) but in
which EXP(A) and EXP(B) sorted closer together
than EXP(A) and EXP(-A). However, it was decided that the sorting order would be based on levels and would be consistent on all levels. That is,
identical functions (sums, products, and exponentiated wffs are considered functions in this sense)

1965

would be compared on the basis of their arguments,
and the arguments would be compared in exactly
the same way as arbitrary terms in a sum or factors
in a product. Thus, to compare (COS (A) and COS
(B), the routine would note that the functions were
the same and then compare the arguments A and B
exactly as it would have if they were terms or factors to be sorted.
The above sorting specifications are clear cut. In
addition to these, however, there were two less
well-defined requirements placed on the sorting order. Since automatic simplification is performed on
all expressions in the system, and in particular on
all expressions that are to be written out, a criterion
of intelligibility was imposed. That is, within the
limits of the other requirements we felt that the ordering induced by LEXICa should produce output
that is in some sense"understandable" to the programmer. It should produce expressions which are
similar in appearance to ones which the program
user might write-given the limitations of the character set and printing techniques available. To
achieve this goal without sacrificing the requirements of the internal p-canonical form, a double
approach was taken. The sorting order itself was
designed to be as "understandable" as possible, and
a way of modifying it prior to output (the ORDER
command) was included in the system.
The final requirement was that the ordering
sould be as "simple" as possible. This served the
double purpose of making it understandable to the
user and as easy to implement as possible. AUTSIM is the most active major subroutine in the
FORMAC system. Every expression created is sent
through AUTSIM at least once, and often several
times. AUTSIM may call LEXICa many times in
the process of simplifying a single expression. Thus
efficiency is a prime consideration in the design of
LEXICa. Any increase in the speed of LEXICa
produces a noticeable increase in the system's performance. In this context, the suggestions made by
Martin5 may prove quite significant.
.(b) The Sorting Order. With these requirements
in mind, we now consider the sorting order. Symbols other than +, *, t, and - are linearly ordered in
the following manner. Atomic variables come before all other symbols, and are ordered among
themselves by the numerical value of the core location of their symbol-table word. Since the symbol
table for each routine is placed in core with the

AUTOMATIC SIMPLIFICATION IN FORMAC

51

variables in alphabetic order and with arrays in
standard FOR TRAN order, this results in variables defined in the same routine being sorted in
straightforward alphabetical order by name, with
array elements in their normal order. However,
variables defined in different routines sort according to the placement of their defining routines in
core, which means the actual order in which variables are sorted is dependent on the order in which
subroutines are loaded.

eral small routines that perform the various tasks
needed for cancellation in sums and products. Under
sums the routine adds the coefficients of the two
terms and produces a new term with the sum as
coefficient. This is made somewhat more complex by
the problem of determining the true coefficients. The
routine must act as if explicit coefficients of 1 and-1
occurred instead of implicit occurrences; e.g., as if
* ABC] were *ABC1], -A were *A -1] and - *
ABC] were *ABC -1].

Immediately following the atomic variables in
the linear ordering of symbols are the operators in
the order SIN, COS, ATAN, TANH, EXP, LOG,
FAC, DFAC, COMB, DIF. This ordering is arbitrary and is determined by the bit patterns assigned
to each operator in the internal expression coding.
Following the operators are the constants. Constans
are ordered among themselves by their numerical
value. The algebraically smaller of two constants
preceeds the larger one. Since all constants in
expressions have been coverted to the same mode
(rational or floating point) by AUTSIM, there is
no possibility of comparing constants of differing
mode.

Other difficulties can arise in finding the constant
coefficients of an expression. The· numerical coefficients of products appear as the final constant before
the delimiter (since all products under sums have
been put into canonical form). But, because the
expressions are in Polish notation, it is possible that
a constant appearing in that position may be the
argument of a preceding function. This is difficult to
check in the case of rational constants which may
appear in the form . . . Kl K2 -1 . . . under a
product. In this case, given a product ending in the
string . . . Kl K2 -1], it is possible that either Kl
or both Kl and t K2 -1 are arguments of preceding
functions and not coefficients.

As may be noted, the symbols +, *, t, and are not compared with other symbols. Instead they
cause the scan routine to compare subexpressions of
the expressions A WFF and BWFF (I) and use that
result as the final comparison. Only if all indicated
comparisons result in identical matches, does the
fact that a +, *, t, or - appeared directly influence
the result of the sort. This is done in order to meet
the constraint that items, which can combine with
one another, sort together.
Once the sorting order has been specified and
understood, the structure of the comparison routine
becomes quite clear. The routine represented by the
COMPARE diamond in Fig. 2 is basically two
leveled. The lower level is a routine that performs a
straightforward comparison of the two expressions
it receives as arguments. As output, it indicates the
relative ordering of the two expressions. The upperlevel routine sends parts of expressions to the lower
level, and uses the finromation returned to determine if expressions can be canceled or combined. It
then passes control as indicated in the flow chart.

If the constants to be combined are rationalmode constants, arithmetic must be performed by
special routines which add fractions and produce a
reduced fraction. Finally, if the result is either 0, 1,
or -1, LEXICa must duplicate the AUTSIM transformations involving such coefficients (e.g., deleting the entire produce in the case of 0, or deleting
the constant and prefixing the expression with a minus sign in the case of -1). This was done in LEX1co for efficiency as LEXICa could easily check
for such results at the time of the addition, while
UTSIM would have to make an entire rescan. This
does, however, result in duplication of code in the
two routines as they are currently written. This is
an example of the old problem of space efficiency
versus time efficiency.

The COMBINE Routine. The COMBINE routine
consists of a basic cancellation routine and an arithmetic routine. Cancellation is accomplished by sev-

Combination in products requires the addition of
exponents. Since exponents may be arbitrary
expressions, the reSUlting sums must in turn be sorted and simplified. This is done by permitting the
product cancellation routine to use the rest of LEX1co in a pseudorecursive fashion. Whenever it is
necessary to cancel exponents, the expressions involved are modified so that the first expression (the
one on the product sorting list) is no longer a wellformed formula in internal form. Instead, its expo-

52

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

nent is transformed into a sorting list of the type
used for sorting sums. The comparison and sum
cancellation routines are then used to sort the terms
of the second exponent onto the sorting list, performing cancellations where possible. If the exponent is not a sum, then only a single use of the sort
and combine routines is needed. However, if the
exponent is a sum, then the sort and combine sec-:tion is used once for each wff under the plus, and
the plus is discarded because the sort list is already
a sum. Of course, since one section of the routine is
being called by another section, care must be taken
to preserve and restore the status of all internal
switches and registers that are modified. When all
factors in a product have been sorted and all. exponent cancellations have been completed, it is up to
the cleanup section to take the modified expressions
and restore them to normal form. This may involve
further simplification, as the exponent which finally
remains may be either 0 or 1.
The arithmetic routines are called upon to do
almost all the arithmetic required in LEXICO. These
include the routines that are needed for computing
the constant term in a sum and the constant coefficient in a product and the routines for cancellation.
Basically, these routines perform addition and multiplication of floating-point and rational-mode constants. The floating-point package is straightforward,
with standard checks for overflow and underflow.
The decision to implement rational mode was made
after the system design had been frozen. In particular, it was impossible to add any new operators since
many routines had been coded making explicit use
of the originally defined operator set. Thus, it was
necessary to represent fractions in the form *Kl t
K2 -1 rather than by a binary rational constant operator, RC Kl K2• This introduced several complications for the LEXICO scan.
The rational-mode arithmetic package is more
complicated than the floating-point package. Multiplication requires two integer multiplications, and
addition requires three multiplications and one addition. The major difficulty arises in controlling
overflow. In the experimental 7090/94 FORMAC,
both the numerator and denominator are limited to
integers less than or equal in magnitude to 236 -1.
Thus, with a moderately large denominator, it is
very easy to have a numerator overflow.
In particular, it is possible to create intermediate
results that require double-precision arithmetic, al-

1965

though the final results are small enough to be represented by single-precision fractions. Therefore,
the rational arithmetic routine contains a doubleprecision, fixed-point add routine, in addition to a
routine that employs the Euclidean algorithm, for
reducing fractions to lowest terms.

The CLEANUP Routine. The cleanup action of
LEXICO converts the sort list form of the expression (BWFF) back to normal FORMAC internal
form. Several transformations are performed in the
process of reconstructing the expression. The order
of the items on the BWFF list is inverted and a
simplified sum or product is created. If the result is
a product, the parity bit is tested to determine if
the product has a negative sign. If parity is negative, the minus sign is included in the constant if it
exists. The minus operator is inserted preceding the
product, if there is no constant factor. If the sort
list is empty and there is no constant, then a sum is
replaced by 0 and a produce is replaced by + 1, or 1. If the product or sum has only one argument,
then the operator (* and +) and its delimiter are
not appended and the single wff is returned.
SUMMARY
The central role of simplification in the FORMAC
programming system and the general approach
pursued in implementing the FORMAC automatic
simplification algorithm have been described. It
has been shown how the universal application
of associativity, commutativity, and properties
of the additive and multiplicative identityelements
(0 and 1) in conjunction with the establishment
of a p-canonical form can produce "simplified"
expressions. In addition, the need for placing
application of the distributive law under programmer option has been indicated. The basic principles
employed in the organization of the simplification
algorithms (AUTSIM) have been presented in detail. In, particular, the role of governing relationships between operators, the need for additional
contextual information, the movement of scan
pointers and the organization of the sorting routine
(LEXICO) has been indicated. The importance of
an already simplified flag is completely eliminating
redundant simplification has been stressed.
This paper has introduced the FORMAC approach to the automatic simplification of mathematical expressions. A subsequent paper is planned in

AUTOMATIC SIMPLIFICATION IN FORMAC

which the simplification algorithm will be presented in complete detail.

REFERENCES
1. J. E. Sammet and E. R. Bond, "Introduction to FORMAC," IEEE Transactions on Electronic Computers, vol. EC-13, no. 4, p. 386 (Aug.
1964)
2. E. Bond, et aI, "FORMAC-An Experimental FORmula MAnipulation Compiler," Proceedings of the ACM National Conference, August
1964.
3. "FORMAC," SHARE General Program
Library, 7090 R2 IBM 0016, IBM Program Information Department, White Plains, N. Y.
4. E. Bond, et aI, "Implementation of FORMAC," IBM Technical Report 00.1260 (Mar. 16,
1965).
5. "Symbolic Work on High Speed Computers," Dartmouth Mathematics Project, Project Report No.4 (June 1959).
6. D. J. Edwards, "Symbolic Circuit Analysis
with the 704 Electronic Computer," MIT B.S. Thesis, 1959.

53

7. S. H. Goldberg, "Solution of an Electrical
Network Using a Digital Computer," MIT Master's
Thesis, 1959.
8. K. Maling, "The LISP Differentiation Demonstration Program," MIT Artificial Intelligence
Project, Memo 10.
9. T. Hart, "Simplify," MIT Artificial Intelligence Project, Memo 27 (1961).
10. D. Wooldridge, "An Algebraic Simplify Program in LISP," Stanford Artificial Intelligence
Project, Memo 11 (Dec. 1963).
11. P. Sconzo, A. R. LeSchack and R. Tobey,
"Symbolic Computation of f and g Series by Computer," Astronomical Journal, vol. 70 (May 1965).
12. W. S. Brown, "The ALPAK System for Nonnumerical Algebra on a Digital Computer," Bell
System Technical lournal, vol. XLII, no. 5 (Sept.
1963 ).
13. A. R. M. Rom, "Manipulation of Algebraic
Expressions," Communications of the ACM, Sept.
4, 1961.
14. J. McCarthy et aI, "LISP Programmer's
Manual," MIT Press, Mar. 1960.
15. W. A. Martin, "Hash-Coding Functions of a
Complex Variable," MIT Artificial Intelligence
Project, Memo 70 (June 1964).

THE NEW BLOCK DIAGRAM COMPILER FOR SIMULATION
OF SAMPLED-DATA SYSTEMS
B. J. Karafin
Bell Telephone Laboratories, Incorporated
Murray, Hill, New Jersey

INTRODUCTION

test sense of the word. The blocks comprising the
system perform the only functions a digital computer can perform, namely, accept a number as an input, operate on it, and produce a number as an output.
Continuous systems that are sufficiently bandlimited may also be simulated. However, a sampled-data system must be designed whose output
pulses would correspond to the sample values of the
desired system. This is easily done if there is a
highest system frequency, and if it is practical to
have a sampling rate higher than twice this highest
frequency. For systems that do not meet these requirements, approximations must be made if the
system is to be simulated using BL0DI. Techniques
and computer programs 2 ,3 are available at Bell Laboratories which produce efficient sampled-data approximations to a wide class of continuous transfer
functions. These programs are even capable of producing punched cards suitable for BL0DI input.
The important point here is that BL0DI makes no
pretense of being a continuous system simulator.
The transformations and possibly approximations
necessary in simulating a continuous system with a
discrete system are left to the engineer.
It should be clear that BL0DI is not a digital
imitation of an analog computer. In its most normal

The block diagram compiler known as BL0DI
was put into use at Bell Laboratories in 1959 and
reported in the Bell System Technical Journal in
1961.1 The compiler has been completely rewritten
to provide substantially increased flexibility. The
new program is called BL0DIB.
BL0DI
BL0DI was written to aid in the simulation of
sampled-data systems. It accepts as input a description of a sampled-data system block diagram written in the BL0DI language. It produces, as output,
a machine language program which will simulate
the described system. The major asset of BL0DI is
that the language corresponds very closely to an engineer's block diagram. It is easily learned and used
even by people with the most superficial knowledge
of computing techniques.
The systems with which the compiler can deal
are combinations of sampled-data circuits, i.e., of
blocks that accept pulses as input and yield pulses
as output. These pulses vary in height, but they all
occur at mUltiples of a fixed clock time. Thus the
systems the compiler accepts are digital in the stric55

56

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

mode of operation, it permits the user to go directly
from a block diagram of a sampled-data system involving transfer functions, etc., to the object simulation program without explicitly considering the
underlying differential equations. A myriad of programs exist that do try to make the digital computer behave like an analog computer. 4 ,5 These block
diagram compilers are built around an integrator
block; the diagrams they accept are not so much
system block diagrams as they are block representations of analog computer programs. BL0DI is system oriented. In a paper describing BL0DIB
applications, 6 simulation of a vocoder is discussed.
In that problem the interest is in system performance and optimization. The system is so large and
so complicated that asking for the differential
equiations is an unrealistic question. The system is
simulated using digitized speech as input data. The
output is also digitized speech which is listened to
and subjectively judged.
The BL0DI language is used to describe the system block diagram. Each block of the block diagram is represented by one list, i.e., by one
punched card. (If the description of the block is
lengthy, it may spill over onto more than one card.)
The coder chooses block types from a dictionary of
about 40 types. This dictionary includes such
blocks as delay lines, amplifiers, transversal filters,
rectifiers, cosine generators, function generators,
etc. Table 1 shows the type dictionary. The list for
each block specifies its type, a name assigned by
the coder, parameters associated with it, and the
names of the blocks to which the signal from the
present block is connected. An example of a blockspecifying list is
RAISE AMP 13.7, QUANT, SUM/3
The block named. RAISE is an amplifier with a
gain of 13.7. It feeds a block called QUANT and
the third terminal of a multi-input-terminal block
called SUM. (The various inputs to multi-input-terminal blocks are specified by a slash followed by
the terminal number.) It should be noted that the
user need specify only one half the connection matriX, namely the outputs. The compiler internally
fills out the matrix and reports unusual circumstances by way of diagnostics.
One of the most pleasant features of the language
is the fact that the order of appearance of the various lists in a circuit description is immaterial. The
blocks may be described in any order; the compiler

1965

analyzes the connection matrix and internally orders
the blocks for processing.
Figure 1 is a skeleton form of a PCM television
transmission scheme 7 involving quantization with
error feedback. Consider the BL0DI description of
this system which is given below.
ANALYSIS
TAPE

r-0
I

I

PREDISTORTION
FIL TER

+
I
I

RECONSTRUCTION
FIL TER

y

I
I

I
I

QUANTIZER
NOISE

I
+
I

I
I
I

I
I

-B- -y___ I
I

IL____

DELAY

J

____

ERROR

Figure 1. Transmission scheme involving quantization with
error feedback.

INPUT
HI
SUMM
QUANT

INP
FLT
ADR
QNT

N0ISE
FBDEL

SUB
DEL
AMP

F

H2
0UTPT

5"501,1,,,12,H1
2,1,-0.502,1.0, SUMM/1
QUANT, N0ISE/2
8,120,200',280', (etc.),
H2, N0ISE/1
FBDEL
1, F
-0'. 96"SUMM/2
ACC
0UT
END

O.502,,0UTPT
5"501,1,,,12

Each line of the above represents one block of the
system diagram of Fig. 1. For each block the left
hand column contains the name assigned the block,
the center column specifies the type of the block,
and the right column specifies the parameters and
output connections. Strictly speaking, INP and
OUT are not functional blocks. They specify points
in the system were samples are read from and
written onto designated tape units respectively.

THE NEW BLOCK DIAGRAM COMPILER

57

END is also not a type; it specifies the end of a circuit description.
In the example we again point out that the process is one of a system simulation. Both the input
and output are tapes of digital television picture
data.

thought of as providing the capabilities for system
simulation coding that is
• evolutionary,
• compatible, and
• modular.
Each of these categories will be discussed separately.

BL0DIB

Evolutionary Programming ( SUPERs)

Using the BL0DI language as a foundation, a
new compiler, BL0DIB, has been written. The new
compiler provides a language that is more flexible
and a programming system that is more complete.
Whereas the old compiler offered a fixed source
language and produced object programs of one rigid
structure (main programs all of whose arguments
were explicitly numeric), BL0DIB offers the engineer some of the generalities available to users of
general purpose programming systems.
With the new compiler, simulation programs (the
result of BL0DIB compilations) are more like the
programs produced by other more general compilers. For example, the user may now choose to have
the simulation run in either the integer or floating
point mode. (The old program ran only in the integer mode. ) Furthermore, simulation programs
may now have symbolic parameters, the values of
which can be supplied at run time and varied to facilitate optimization routines and collections of
families of data. Most important too is that simulation routines may now communicate with other
programs in the computational environment. These
features open the way for many new applications,
some of which are discussed below.
The source language also has new flexibility and
offers new potentialitis. The changes impart roughly
the same flexibility to BL0DI as MACR0 FAP
does to F AP. Along the providing features to make
the coding of simulation problems more convenient
and less tedious, the new program gives the user
the ability to write higher-level, specialized, simulation languages using BL0DI statements as atomic
blocks.
The compiler itself has a new structure. BL0DIB
is actually a preprocessor coupled with a library of
high-level macro definitions. This structure provides general flexibility, lends itself more readily to
changes and additions, and is somewhat less dependent on particular monitor systems and machines.
For purposes of discussion, BL0DIB can be

It may happen that several interconnected BL0DI
blocks are required to realize a single functional
block that will be used many times, perhaps with
several different values for some group of parameters. What is called the SUPER facility of BL0DIB
essentially permits the programmer to draw a line
around such a group of blocks, to name it, and to
use it thereafter as if it were a basic block. Figure 2
shows the block diagram of what can be thought of
as a rectangular integrator. To define a SUPER to
realize this function, coding of the following form
is given to the compiler as part of the source description.
INT
MACR0 INC0N
MIP
INPUT
1,INTRV
INTRV
AMP
1.0 E-5"SL0W
DEL
SL0W
1,SUMM/1
BAT
VALUE
INC0N, DELAY, SUB/1
DEL
DELAY
1, SUB/2
SUB
SUB
SUMM/2
ADR
SUMM
RECT
RECT
ACC
1.0,,0UTPT
0UTPT
M0T
END

After defining INT in this way, it can be used as if
it were a basic block type with one parameter (the
initial value). (In the example the integration interval, which corresponds to the sampling period, is
10-5 • )
We digress to point out that although BL0DIB is
not primarily an analog computer simulator, the,
preceding definition of a rectangular integrator
shows that the compiler has at least as much power
to tackle analog computer problems as some compilers that are so oriented. An example of such a
compiler is DAS-4, which uses rectangular integration and a fixed time base.
Since a SUPER may be used as a basic block after it has been defined, it can be used in the description of a more complicated SUPER. A trival
example is shown where the previously defined INT
block is used in the definition of a new super that

58

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

BATTERY
-INITIAL
CONDITION

1965

UNIT
DELAY

OUTPUT

UNIT
DELAY

UNIT
DELAY

Figure 2. A BL0DIB rectangular integrator.

rectangularly integrates the weighted sum of four
inputs.
SIN
IN1
IN2
IN3
IN4
WGHTI
WGHT2
WGHT3
WGHT4
SUM
INTEG
0UT

MACR0
MIP
MIP
MIP
MIP
AMP
AMP
AMP
AMP
ADR
INT
M0T
END

WI, W2, W3, W4, INC0N
1, WGHTI
2, WGHT2
3, WGHT3
4, WGHT4
Wl"SUM/l
W2"SUM/2
W3"SUM/3
W4"SUM/4
INTEG
I,INC0N,0UT

In BL0DIB, SUPERs may be nested to an almost arbitrary number of levels. Since each SUPER
is very nearly an independent circuit description, a
BL0DIB program can be thought of as an ordered
sequence of circuit descriptions. Each circuit possibly contains one or more of the previously defined
circuits one or more times. The last circuit is of
course the one to be simulated. Coding can thus be
thought of as an evolutionary process. The programmer builds up a "super-BL0DI" language featuring blocks that are commonly used in his application.
Compatible Programming (Subroutines)

BL0DIB offers the user the facility to write simulation programs that can coexist, communicate,
and interact with other programs in the computational environment. The user is provided with a

staement that closely resembles the F0RTRAN
SUBROUTINE statement. With this facility the
programmer has the ability to write a BL0DI program, i.e., a circuit description, with some parameters, such as amplifier gains or quantizer decision
levels expressed as variables, specifying them as
symbolic names rather than as numbers. At the beginning of the program, the programmer tells the
compiler that what follows is to be a subroutine
with the name he specifies and that the variables in
the list he writes must be supplied when the subroutine is called. A typical opening statement of a
BL0DIB subroutine source program might appear as
TEST

SUBR

(GAINI ,GAIN2,SHIFT),

where test is to be the name of the subroutine and
GAINl, GAIN2, and SHIFT are variables whose
values shall be specified by the calling program, and
which are used somewhere in the circuit description
or standard BL0DI program that follows. Statements involving the variables might appear as
AMP22
COUNT

AMP
ACC

GAINl ,SHIFT ,0UTP3
GAIN2,2,0UTP4

The program that is produced is a subroutine structurally identical to subroutines produced by other
compilers such as F0RTRAN. Its parameters may
be varied. It can be loaded along with other programs. It can receive parameter values, and it can
transmit and receive data.
Futhermore, the ability to use floating point arithmetic is simulation programs enhances the compatibility of those programs with numerical analysis

THE NEW BLOCK DIAGRAM C::OMPILER

routines, almost all of which are written in the
floating point mode. (It hardly seems necessary to
state that the use of floating point arithmetic almost
completely eliminates the scaling difficulties inherent in many simulation techniques.)
The simplest application of the subroutine feature is the case in which one wants to simulate a
system repeatedly for a range of values of a parameter(s). For this case one codes the simulation program as a subroutine with a variable parameter(s).
The subroutine is then used in conjunction with a
main program, written in some general purpose language, that calls the simulation subroutine with various values for the parameter (s ) of interest. The
main program can obtain the parameter values from
some internal array, by reading cards, or perhaps
receiving them from a remote console at which the
engineer is stationed.
Iterative system design schemes can be implemented using the subroutine facility. Situations arise
where one has to optimize a group of parameters
associated with a complicated system. The solution
of such a problem might involve the following steps:
1. Make an initial guess of values of the variables.
2. Simulate the system using those values.
3. Use the results of the simulation to calculate new values for the variables.
4. Return to step (2) unless the new values
are within a given neighborhood of the last
values.
To implement such a procedure one writes a simulation subroutine and loads it along with the necessary analysis and design programs. A main program will probably also be necessary to handle control.
Unfortunately, many problems of parameter optimization require human intervention commonly
known as eyeballing and knob-twiddling. This
points up another reason why it is so important for
the simulation program to have the ability to communicate with other routines. The era is almost
upon us in which men at remote stations will have
the capability to interact with the computer. Simulation seems supremely suited for man-machine interaction.
Another use of the subroutine feature is to allow
simulation programs to function as analysis programs. At Bell Telephone Laboratories, a program
used to design sampled-data filters presents, as

59

part of its output, a plot of the impulse response of
the designed filter. Instead of using residue calculations based on the continuous analog of the filter,
the response was obtained from a BL0DIB-produced
subroutine which simulates the actual sampled-data
filter. The circuit is excited by a single pulse and the
resultes of the simulation are plotted and presented
as part of the output.
To sum up this discussion, simulation programs
can now be written to be compatible with other
kinds of programs, opening the way for a great
many diverse functions.
Modular Programming
This feature allows the user to write simulation
subroutines in the BL0DI language that structurally
resemble simulation blocks. This facility allows
what can be thought of as modular programming. A
basic simulation program can be thought of as a
piece of hardware with sockets. Various subsystems
are coded, and the main system is run with a selected group of subsystems plugged into the sockets.
Among other things, modular programming allows the user to effect structural changes. Suppose
there is a very complicated system to be simulated,
and suppose there is a block whose function one
would like to change for each of three simulations.
Perhaps one would have this block a transversal filter for. one simulation, a quantizer for a second, and
perhaps nothing, a wire, for a third. In the main
circuit description the block in question might have
a type called M0D. Three modules would then be
coded, each of type M0D, one a filter, one a quantizer and one a wire. One then runs three different
simulations, loading a different module each time.
An important point here is that the main system
need be compiled only once. This main piece of
software is never changed. New elements are merely
plugged into the sockets to test various design
schemes.
Modular programming makes it possible for one
to build a library of simulation modules .in much
the same way as a library of numerical functions subroutines is built. The feature aids in producing
complete simulation systems for major projects such
as, for example, vocoder research.
.
CONCLUSIONS
BL0DI has proven to be an efficient and easy to

60

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

use tool for the simulation of a class of systems
that:
1. involve a relatively smooth flow of data
(signal) into and out of the system, i.e.,
the system does not process samples in a
complicated order;
2. can be represented in terms of the pulse
circuitry that has been described;
3. and that, once depicted as digital system
block diagrams, contain blocks that usually
change state at each sampling instant.
For this class of problems the compiler produces
machine language programs that are as efficient as
those produced by professional programmers. (For
example, in the course of the algorithm for ordering
the blocks for processing, the compiler searches the
connection matrix, attempting to save store and
fetch operations.)
A new program, BL0DIB, has been written and
described, which is based on the BL0DI language.
BL0DIB is coded for the IBM 7094 II under the
control of the Bell System VII monitor and 1/0
system. To use the system under another monitor
would involve only changes in the 1/0 and interaction with the macro assembler. Changes in the 1/0
are identical to those that were necessary for the
original BL0DI, which were carried out successfully at many computer (7090) installations. This new
program offers -many new features but suffers no
degradation in object program efficiency or ease of
usage. The new features change the nature of the
compiler from a language translator to a full programming system. The new program is particularly
suited for
1. building higher-level BL0DI languages by
defining block types from combinations of
blocks,
2. interative simulation procedures,
3. coding of large, flexible, modular, simulation systems, and
4. the use of simulation programs as subroutines for more complex procedures.
ACKNOWLEDGMENT
We wish to thank R. H. Roth and D. E. Eastwood, with whom many valuable discussions concerning BL0DIB were held, G. J. Spivak, who
helped with the time-consuming task of writing the

1965

compiler, and M. Karnaugh who suggested and encouraged the entire project.
REFERENCES
1. J. L. Kelly, Jr., C. Lochbaum and V. A. Vyssotsky, "A Block Diagram Compiler," B.S.T.l., vol.
40, no. 3, pp. 669-76 (May 1961).
2. J. F. Kaiser, "Design Methods for SampledData Filters," Proc. Frist Allerton Conference on
Circuit and System Theory, Nov. 1963, Monticello,
Ill.
3. R. M. Golden and J. F. Kaiser, "Design of
Wideband Sampled-Data Filters," B.S.T.l.,. vol. 43,
no. 4, part 2, pp. 1533-46 (July 1964).
4. R. A. Gaskill, "A Versatile Program-Oriented
Language for Engineers," IEEE Transactions on
Electronic Computers, vol. EC-13, no. 4, pp. 41521 (Aug. 1964).
5. R. D. Brennan and R. N. Linebarger, "A Survey of Digital Simulation: Digital Analog Simulator Programs," Simulation, vol. 3, no. 6, pp. 23-36
(Dec. 1964).
6. R. M. Golden, "Digital Computer Simulation
of Communication Systems Using the Block Diagram Computer: BL0DIB," Proc. Third Annual
Allerton Conference on Circuit and System Theory,

Oct. 1965, Monticello, Ill.
7. C. C. Cutler, "Transmission Systems Employing Quantization," U.S. Patent No. 2,927,962, Mar.
8, 1960 (filed Apr. 26, 1954).
Table 1. BL0DIB Type Dictionary.
Block
Type

Function

Output

DEL
VLD
ACC

Fixed Delay
Variable Delay
Accumulation

Yk = Xk-l
Yk = Xlk-x2
Yk = Xk + P1Yk-l

FLT

Transversal Filter

Yk = !,pPl-lxk-lp2

AMP

Amplifier

Y = Plx

ADR

Adder

SUB

Subtractor

y = !'Xi
i=1
y = Xl _ X2

MAX

Maximum

y = max Xi
i=1

MIN

Minimum

MPR
DIV

Multiplier
Divider

y = min Xi
i=1
y = X1X2
y = Xl/X2

( pl-2)
1=0
4

4
4

61

THE NEW BLOCK DIAGRAM COMPILER

CLP

Positive Clipper

CLN

Negative Clipper

SCL

Symmetric Clipper

FWR
BAT

Full Wave
Rectifier
Battery

COS

Cosine Generator

GEN

y =

x

+

PLS

Pulser

PRT

Printer

INP

Input

OUT

Output

BOF

Output Buffer

PIP

Integer to floating point conversion
Floating point to
kuteger conversion
Microfilm plotter
Plots up to three
signals on a linear
plot under control
of a fourth input
and a threshold.
Input to SUPER
Output from SUPER

Pl

Yk = pscos(2'1T'k + P2)
Pl
Function Generator y= Pi; i = 2, ... ,Pl

the sequence of parameters repeated
cyclically from second to last.
Pseudo-vondon noise
Noise Generator
WNG
from Gaussian distribution with
standard, deviation
Pl.
QNT
Quantizer
Pl in the number of
representative levels. The representative levels are P2,P4,
• • • , p2Pl. The decision levels are
... ,PS,P5, ... ,
p2Pl-l.

LQT Linear Quantizer

y= ( ;

SQT

y=

Square Root

SMP Sampler

HLD

CNT

DTS
FLF

=

y

)rounded up.

Pl.

yx

{xP3oneotherwise
sample out of P2

Pl specifies an initial phase.
Sample and Hold
Yk = Xl l where Xl2 was
the last control
sample to exceed
the threshold, Pl.
Counter
Output is active level
every.nth time input
exceeds a threshold
and a passive level
the remainder of
the time.
.
{Xl; x 3 > Pl
Double Throw SWItchy= r; oth-;;-rwise.
Flip-flop
Output has a low
state output until

the input exceeds an
upper threshold. An
upper state output
is then maintained
until the input is
below a lower
threshold, etc.
If the input exceeds
trigger level, the
output is the pulse
level for the next
d samples, where d
is a parameter for
pulse length. The
output is a quiescent level if none of
the last (d-J) samples exceeded the
trigger level.
Lists up to three input
signal under control
of a fourth signal
and a threshold.
Reads data from tape
for input.
Writes data on tape
for output.
Writes output samples
into a buffer area in
the computer mem-

P0P
MIC

MIP
MOT

ory.

In the above Yk

= Y (kT) where T is sampling period

= xi(kT)

where xi(t) is the ith input
to the block
The superscript is missing for blocks with only one
input, while the subscripts are neglected for blocks
with no dependence on the past. pj is the jth parameter of the block.
Xik

TWO'-DIMENSIONAl PROGRAMMING*
Melvin KIerer and Jack May
Columbia University
Hudson Laboratories
Dobbs Ferry, New York

2. The system should be easy to learn (and
therefore subject to universal use);
3. It should be adaptable to a wide range of
problems and applications; and
4. It should produce a final product that is
better than the "old-fashioned" product.
In other words, not only should the object
program be cheaper to produce but it
should run faster than programs obtained
using present compilers.

A new user-oriented programming system for
the purpose of facilitating the programming and·
analysis of well-formulated problems has lt been designed and implemented at Columbia University,
Hudson Laboratories. This system consists of a
standard Flexowriter modified to construct twodimensional mathematical expressions and a new
programming language.
The typing and language rules are quite flexible,
unrestrictive, and easy to learn. Typing errors are
easily corr~cted by backspacing and overtyping or
by pressing a special "erase" key. Subscripted and
superscripted arithmetic expressions can be typed
conveniently. Arbitrary-sized summation, product,
integral symbols, and other mathematical symbols
can be constructed from elementary strokes or
formed automatically by selecting the desired symbol from an accessory console keyboard.

Figure 1 is an example of what one research
scientist brought to us for computation and illustrates what we mean by a well-formulated problem. A is a function of all the other variables and,
except for x and y, all are input parameters. When
this is coded-regardless of whether we use FORTRAN, ALGOL, or any other system-the programmer must be careful that the argument of the square
root does not become negative, and that the denominator of the function to be integrated does not become so small as to cause overflow.t
Figure 2 shows the corresponding source language statement as typed on our input device in our
language.

We attempted to meet the following criteria:
1. There should be less human effort: by this
we mean fewer instructions (therefore fewer
errors), less total time spent in coding, less
debugging, and less high-level thinking
necessary to solve the problem;

t A system which will automatically make such analyses
and take appropriate actions is under development by the
authors.

*This work was supported by the Office of Naval Research and the Advanced Research Projects Agency.

63

64

JOINT COMPUTER CONFERENCE,

1965

A=

Figure 1.

'0/ J
1

dx dYe

1

Figure 2.

Our Flexowriter has been modified so that the
platen may be revolved by keyboard control. One
presses the subscript key for the subscript position
and the paper moves up half a line; similarly, the
paper moves down half a line by pressing the superscript key. A typewriter device with this particular
facility is not particularly new. As indicated in the
references, announcement of the intention to construct such a machine was made as far back as July
1958 by two independent groups, one working at
Los Alamos,l1 the other at Lincoln Laboratories,14
and pioneer work in this field has been done by Mark
Wells at Los Alamos. 12,13
Our system permits the construction of symbols
of arbitrary size besides allowing the use of other
conventional mathematical forms such as implied
multiplication, subscripting without the use of artificial conventions, subscript notation to denote a
logarithmic base, and superscripting as in cos -1 x
and cos 2X. Arbitrary-sized integrals, summation symbols, or parentheses may be typed by combining basic
strokes-horizontal and vertical bars, diagonals in
both directions, and upper and lower semicircles as
shown in Fig. 19. These basic strokes have been
designed to interlock with each other. Symbols need
not be symmetric nor well composed. Figure 3
illustrates some of the poorly formed symbols that
are recognized correctly by our system. The strokes
may be typed in any order. For instance, one may
type part of a summation sign, then type part of the
argument and go back to type more of the sum or
part of the limits. Restrictions are of a minor nature;
for instance, there must be enough room above and

below the summation symbol to type the upper and
lower limits.
Figure 4 is a photograph of a page from Hildebrand's book7 on numerical analysis, illustrating his
prescription for solving linear equations. We chose
this as a good example of a well-formulated problem
for comPlltation. We would not call this an algorithm
because it contains an inherent ambiguity. Note that
the last equation has to be computed for i taking on
the value of n first and then n - 1,n - 2, etc., down to
i = 1. When j = 1 in the first equation, the sum
becomes the null set.
Figure 5 is the corresponding program for the
solution of a set of n linear equations in n unknowns as written in our programming language.
The maximum value of n has been arbitrarily set at
20. It can be noted that the body of the typescript
is a fairly reasonable transcription of the text indicating double subscripts, etc. In the last formula our
loop is programmed backwards, but we did not
have to worry about the fact that the summation's
upper limit can be less than the lower limit-the system automatically takes care of this consideration.
Figure 6 shows a truncated continued fraction as
typed for computer input.
One question usually asked after we demonstrate
our system to a visitor is: The system seems fine
for the novice but will it be a useful tool for the experienced senior programmer? Our answer is yes.
The language allows the expert to write long complex statements that are not possible with most
presently operational compilers. Figure 7 illustrates
a program written by one of our senior program-

65

TWO-DIMENSIONAL PROGRAMMING

L

r

n

II

[]

[]

[

LJ

]

J

\

s

v
Figure 3.
431

NlTMEltICAL SOLUTION OF EQUATIONS

tical with c~. Each succeeding element above it is obtained as the result
of subtracting from thc ('orre:,;ponding element of the c' column the inner
product of its row in A' and the x column, with all uncalculated elements
of t.he x column imagincd to be zcros.
The preceding inst.nlct.ions are summarized by the equations
(i

~

j),

(10.4.4)

(i

< j),

(10.4.5)

(10....6)

and

x, -- c.I -

~
L.,

(10.4.7)

I
aikx.t,

k-i+l

where i and j range from 1 to n when not otherwisc
seen that '~e proec8.'1 dr' i hy (lOA "\ is iden··
solution'
t,he Ga"
'on, wl '
1terr

~tricted.

t

'h the

It;A
II'

(10.3 •
T

Figure 4.

mers. Except for the initialization, it is a one-statement algorithm for computing prime numbers.
Note that two variabtes are stepped; one variable is
incremented by 2 with no explicit upper limit while
the· other variable is stepped by 1 (an increment of

1 is assumed if a BY clause is absent) until a
terminating condition is satisfied. In this case the
condition involves the use of the incremented variable, but, in general, the condition does not have to
depend upon the incremented variable and may be a

66

PROCEEDINGS -

1965

FALL JOINT COMPUTER CONFERENCE,

MAX I MUM n=20.

READ n.

READ A
FROM j=1 TO nAND 1=1 TO n.
1j
READ C FROM 1=1 TO n.
1

a 1j=: A1j

IF 1~j THEN

FROM j=1 TO nAND 1=1 TO n

~
-L
a1k~j OTHERWISE a 1j=
k=1

1-1

-L

FROM 1=1 TO n

C1
a 1k'Vk
COMPUTE 'V1= _....::k::;;;;=.....
1 _ _ __

aU

L
n

FROM

,=

BY -1 UNTIL '(1 <"""UTE X,= "

-

"'kX. •

k=1+1

PRINT i {2} , Xi FOR 1=1, 2, ••• , n.

FINISH.

Figure 5.
READ z.
x

=1

+ _ _ _ _ _ _ _--!:.z_ _ _ _ _ _ _ __

--=z=--_______

1 _______
2

+ _ _ _ _ _ _.:;:.z_ _ _ _ _ __
3 _ _ _ _ _ _..::z:-_ _ _ __
2 + _ _ _ _.:;:.z_ _ _ __
5 _ _ ___"z_ _ _ __
2 + ____
z _ __

7 _ _..;;;;Z_ _
2 + _z_

9

PRINT z, x.

FINISH.

Figure 6.

function of parameters unknown at compile time.
Another feature of our "implied loop" is that the
index i is tampered with inside the loop. Also,
FROM clauses may be located anywhere in a statement as long as they make sense. The first FROM
clause is performed most often; only when its UNTIL condition is satisfied does the next FROM
variable become incremented. Apart from computer
memory size there is no restriction to the number

of FROM or FOR clauses allowed.
The use of IF conditional clauses and PRINT
FORMAT statements is shown in Fig. 8. This
program computes moving averages of every 10 data
points and prints out a cumulative average every
20 points. We may see that multiple replacement
operators can be used within a statement. The UNTIL
condition on the FROM loop is satisfied by the reading of a particular data point from a punched card.

67

TWO-DIMENSIONAL PROGRAMMING

DIMENSION P=1000.

j=l.

PRINT j, Pj =3.

FROM 1=1 UNTIL FRACTIONAL PART ~ =0 IF P1 2)P THEN 1=j, j=j+1 AND PRINT j, Pj=P FROM P=5 BY 2 TO INFINITY.
1

FINISH.
Figure 7.
A=8=1=J=k=0.
FROM 1'=1 UNT.IL X=99999 READ X, C()Io1PUTE A=A+X, 8o=8+X, 1..1+1, j .. j+1,
(IF k=0 PRINT 'Y {

3 }, x{

4.2}

AND k=1 OTHERWISE }oo.O AND PRINT 'Y {

3 } , , x { 4.2

IF 1=10 PRINT FORMAT 1, 'Y, B/10 AND C()Io1PUTE 1...80=0, IF j=2O PRINT FORMAT 2,
FORMAT 1 AFTER A TOTAL OF

xxx

POINTS THE MEAN OF THE LAST TEN POINTS IS

FORMAT 2 AND THE AVERAGE OF THE WHOLE SET IS

xxxx.xx.

:yA

} ),

AND C()Io1PUTE j ..O.

xxxx.xx.

FINISH.

Figure 8.

Punched input card format is free field with blanks
separating each datum. As many data points as desired are allowed on each card and the number may
vary from card to card without the need for any
defining information. The range of IF statements
may be delimited by parentheses. OTHERWISE or
ELSE clauses may be absent. Additional IF clauses
may be nested within other IF clauses and may be
put after THEN or ELSE clauses. The parentheses
around the IF k = O... clause cause the program to
go to the IF i = 10... clause in either case; if the
parentheses were not present then the program would
test IF i = 10 only if k =1= O.
There are several ways to print answers on the
highspeed printer. A standard PRINT A statement
will cause the value of A to be printed in floating
point style. A may be an expression and may contain a replacement operator. The PRINT 'Y {3},
X {4.2} will cause 'Y to be printed as a 3-digit integer
and X to be printed with 4 places to the left of the
decimal point and 2 places to the right. Finally, one
may mix numerical results with literal messages by
using a PRINT FORMAT statement and a FORMAT image. The PRINT FORMAT statement lists
the expressions whose values are to be printed, while
the FORMAT image contains the text with the position and size of the results denoted by groups of
lower case x's. When the magnitude of a number is
unknown. one lower case y will cause the result to

be printed in floating point style. Figure 9 shows the
output of this program.
Whenever it is easily possible to determine the
size of an array by inspecting a program there
should be no need to specify its dimension explicitly. Inspection of Fig. 10 indicates that the X array
will require 500 locations and so the program automatically assigns 500 locations to X at compile time.
Currently there is no analysis of space requirements
at run time, so these decisions are made by the
compiler. Figure 10 illustrates a program to compute the mean and standard deviation of a group of
numbers. This also shows how comments are inserted-by putting them between braces.
Figure 11 shows semiautomatic dimensioning. In
this correlation program, the number of points will
be decided at run time but it is known that there
will never be more than 500. It is certainly easier
to specify a "maximum value" for one variable and
let the system do the clerical work than to specify
the same dimension for a number of arrays (X, Y,
and A). Finally, one may also dimension arrays
directly using a DIMENSION statement as shown
in Fig. 12. Here the size of the arrays is not obvious so a DIMENSION statement is needed.
For systems of this type there is always the inherent possibility of ambiguity. For example, since we
allow both double subscripts and implied multiplication, A ij in Fig. 13 may mean either A as a function

68

PROCEEDINGS -

1
2

FALL JOINT COMPUTER CONFERENCE,

1965

2145,32

3
4

128,73

5

630e,75

9012.45
2373.38

6

9523.54

'7

'520,75

8
9
10

6280,40

4510.83

6419.01
10 POINTS THE MEAN OF THE
11
7 06:5,57
12
6312.4'
245,12
13
14
186 0 .23
6105,85
15
16
3015 4 .12
1,54,95
11
18
85,8.44
33 2 8,49
19
20
665 0 .17
AFTER A TOTAL OF 20 POINTS THE MEAN OF THE
AND THE AVERAGE or THE WHOLE SET IS 49'61. 83
2130,11
21
22
8365.7'
2238,01
23
24
1543.25
3658,91
25
26
375.15
92,14
27
28
9825.16
5241.36
29
30
6327.01
AFTER A TOTAL or 30 POINTS THE MEAN OF THE
31
2238,47
32
9510 •• 2
55 1 4,03
33
34
25e 4 .45
35
3275.28
36
3514.?5
258,14
37
38
6325.02
3514,75
39
40
258.14
AFTER A TOTAL OF 40 POINTS THE MEAN OF THE
A~D THE AVERAGE OF' THE WHOLE SET IS 4550.84
41
63 2 5,02
42
68~·.14
43
267.14
44
4814.14
9235,41
45
46
6732.14
5602.14
47
48
2418.46
3579,96
49
50
9520,'1
AFTER A TOTAL OF' 50 POINTS THE MEAN OF' THE
8762.28
51
52
357,19
6854,42
53
2398.75
AFTER ,4 TOTAL OF'

LAST TEN POINTS IS 54 2 8,32

LAST TEN POINTS [S 4495,34

LAST TEN POINTS IS 4580,35

LAST TEN POINTS IS 3699,34

LAST TEN POINTS IS 5546,90

,4

Figure 9.

of two independent indices, i and j, or A as a function of one index, the expression, i times j. Also, since
the argument of a function does not have to be delimited by parentheses, the interpretation of "SIN A COS
B" is ambiguous. Is the argumen tof the "SIN" "A
COS B" or just "A"1 If the expression is interpreted

as (SIN A) X (COS B)-which seems reasonabledoes this mean that if no parentheses are present to
delimit an argument, then the appearance of another
function name will delimit the argument? If so,
then "SEC TAN-l (A/2B)" would be "SEC of
nothing times TAN-l (AI2B)."

TWO-DIMENSIONAL PROGRAMMING

READ S { IDENTI F ICATION

~

•

READ Xi FROM 1=1 TO 500.

y

=
500

PRINT FORMAT 1, S, Y, cr.
FORMAT 1 THE MEAN OF GROUP xx IS xxxx.xx WITH A STANDARD DEVIATION OF y.
FINISH.
Figure 10.

MAXIMUM n=500.
READ n.

n-T

AT=

~ X1 Y1+T FOR

T=O, 1, ••• , n-l.

1=1

WRITE TAPE A, 2, 2, n.
FINISH.
Figure 11.
DIMENSION A=100, 8=100.
READ K,

€.

FROM 1=1 TO LOG2 K COMPUTE A1=B1K AND PRINT 1, A1 , B1 €
FINISH.
Figure 12.

69

70

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

Y=SIN A COS B.
Z=SEC TAN- 1 ~B.
A=CSCH -1 A - L.

C=A/2B.

2

7r

E=LOG 2k+14 P + 2

Q

Figure 13.

For the next statement we might ask whether the
argument of CSCH-l is A or A - L. For the following
statement we would want to know whether or not
M is within the summation. The system's interpretation of the last three statements is also of interest. (1T and e are interpreted as 3.14159. . . and
2.71828 ... ) Immediately after the source program
is read, the system's interpretation is listed on the
high-speed printer in a linear, FORTRAN-like, intermediate language. The output resulting from Fig. 13
is shown in Fig. 14. This shows that Aij is interpreted as a two-dimensional array but another context
may yield a more appropriate interpretation. Y is interpreted as the product of SIN A and COS B. The
argument of the secant is interpreted as TAN-l
(A/2B). The variables Land M are interpreted to
be outside the argument of the CSCH-l and the sum,
respectively. The next statement is interpreted in the
FORTRAN manner and is not (A/2B) but(A/2)B.
The argument of the TAN-l in statement 3 is inter-

preted as A / (2B), because it was originally typed
using displayed division rather than a slash. Statement
7 shows that the exponent, 3n - 2 has been moved
from its location adjacent to the COS to its proper
place for computation. Statement 8 shows how the
base of a log is treated. After the "LOG to the base
10" of the argument is taken, that quantity is divided
by the "LOG to the base 10" of the base. We emphasize that each particular interpretation is a function
of the local context in which it is actually used. In
our opinion, an immediate response to the· user returning the system interpretation is of great utility in
resolving many ambiguous forms.
The single variables on our keyboard include the
entire uppercase alphabet, 12 lowercase letters and
16 Greek letters for a total of 54 variables. This may
be doubled because a letter typed in red is considered
different from the same letter typed in black. If 108
variables are not enough one may define other var-

TWO-DIMENSIONAL PROGRAMMING

THIS IS THE WAY WE INTERPRET YOUR STATEMENTS.
AOOOOl

71

IF ANY ARE INCORRECT PLEASE RETYPE THE STATEMENT CORRECTLY,

X-A SUB II,Jl

A00002

A00003

Z.SEC[ARCTANr [IAJ/r2*B]]

A00004

A.ARCCSCH(AJ-L

A00005

B=SUM WITHIN (100,1.1]

J)

or

(A SUB [I).B SUB IIJ)+M

A00006

A00007

A00008

E.LOG[4*P RAISED TO r2]J/LOG[2*K+1J+r[PI]/(2)J

Figure 14.

iables by a SPECIAL VARIABLES statement as
shown in Fig. 15. However, if it is desired, extra
variables may be constructed without the need for
predefinition by appending a red superscript to a
variable, as in AMAx. This figure also illustrates the

trick used to show functional relationship while saving memory space. Comment braces are put around
the SUbscript of F so that the sums are not stored
in an array. The system's interpretation is shown in
Fig. 16.

SPECIAL VARIABLES TEMPERATURE, PRESSURE.

READ AMAX, TEMPERATURE, PRESSURE.

v= (c x TEMPERATURE

V=C

+

+

K x PRESSURE) AMAX.

TXEXMxPxEXRXAxTXUxRxE - K

+

AMAX.

10

F

{!.f =

L

X1J FOR 1=1, 2,

3, ••• ,

50.

J=1
PRINT F.

Figure 15.

Another example of the use of comments is indicated in Fig. 17. This is a segment of an actual pro-

duction program to calculate the power spectrum of
a filtered signal. The part shown in the figure com-

72

PROCEEDINGS -

1965

FALL JOINT COMPUTER CONFERENCE,

THIS IS THE WAY WE INTERPRET YOUR STATEMENTS,
AOD001

DIMENSION TEMPERATURE, PRESSURE

AOD002

READ AMAX,TEMPERATURE,PRESSURE

Ir ANY ARE INCORRECT PLEASE RETYPE THE STATEMENT CORRECTLY,

AOD003

AOD004

AOD005

PRINT r

A00006

rINISH.

Figure 16.

TO M COMPUTE C1=C 1+XX1 • FROM 1=0 TO M-l COMPUTE ~=Xl+l.
READ TAPE XM,2,2,1 AND COMPUTE XMFXM-S. STATEMENT 2. ~ROM J=N-M TO N LOOP TO STATEMENT 3.

FROM

1=0

FROM 1=0 TO

MCOMPUTE

C1=C1+XX1 •

FROM 1=0 TO M-l COMPUTE X1=Xi +l •

2
STATEMENT 3. FROM 1=0 TO M COMPUTE Ci - G
N-l

l

fiNITE COSINE SERIES TRANSFORMATION OF C1

k=2M. D =COS ~ FROM p=0 TO M. D =Dk

P

'"

~

SMOOTH ING THE SPECTRUM

~

OPTION A}

P

-p

M=M-l.

Ci.
FOR 1=0 TO M

FROM p=M+l TO k.

V1 =6t rC
o

L

+

2

t

C

j

COS

~ + CM COS 1T ]

I

J=l

LOOP TO STATEMENT 4. FROM 1'=0 TO M.

p=W=0.

OPT ION A HANN ING OR OPT ION B HAMM ING }

IF OPTIONAB=O THEN E=.5 AND F=.25 OTHERWISE {OPTION B} E=.54 AND F=.23.

Uo=E(VO+V l }. FROM 1=1 TO M-l COMPUTE Ui=EVi+F(Vi_l+Vl+l}.

UMiE(VM_l+VM}.

Figure 17.

putes a correlation function and its cosine transformation. For clarity the actual "book" formula is printed
in red (the color is immaterial) and put between the
comment braces. An experienced programmer would
realize it would be highly inefficient to compute COS
ij7rM a total of M2 times. Since M, i and j are integers
and cosine is a periodic function, the same numbers
would constantly repeat themselves. Thus, the program, which is listed below the comment, gives the
correct answers, but the computation is done in a

much more efficient manner, and the comment serves
as documentation.
With regard to machine code efficiency, it is
always difficult to pick unbiased examples. However, our experience has ted us to believe that in general our object programs are very efficient. Our
symbol recognizer, translator and compiler make for
a complex software system and there is no escaping
the fact that it would be a substantial task to code
our system for another machine. Because we were

TWO-DIMENSIONAL PROGRAMMING

interested in machine-efficient object programs
we made no attempt to make our coding techniques
machine-independent. However, it is possible to
simplify the task of recoding for another system.
One may just recode the symbol recognizer and
translator parts, i.e., up to the point where the
FORTRAN-like intermediate language is produced.
Thus these parts can be considered to be a preprocessor for an existing FORTRAN-like compiler.
We have become convinced that the voluminous
programming instruction and operating manuals
usually encountered are rarely necessary. Thus we
are trying to explore how concise one can make a
system reference manual without impairing its practical utility. Presently we are using a manual consisting of one sheet of stiff 81h x II-inch paper
printed on both sides, as shown in Figs. 18 and 19.
As yet, we do not have enough experience with it to
know whether we want to increase the size of this
one-sheet manual'; yet it is hard to envisage its
ever growing to a size larger than two or three double-faced sheets.
ACKNOWLEDGMENTS
We acknowledge with thanks the programming
assistance of David Levine and Fred Grossman, the
engineering assistance of Charl'es Amann and Saverio Conforti, and the encouragement of Alan Berman, Robert A. Frosch, and Ivan E. Sutherland.
Fig. 4 is reproduced by permission of the McGraw-Hill Book Company.
REFERENCES
1. K. G. Balke and G. Carter, "The COLASL
Automatic Coding System," Dig. Tech. Papers,
ACM Nat!. Con!., 1962, pp. 44-45.
2. A. J. T. Colin, "Note on Coding Reverse
Polish Expressions for Single-Address Computers

73

with one Accumulator," Comput. J., vol. 6, pp.
67-68 (1963).
3. H. J. Gawlik, "MIRFAC: A Compiler Based
on Standard Notation and Plain English," Comm.
ACM, vol. 6, no. 9, pp. 545-547 (1963).
4. A. A. Grau, "The Structure of an ALGOL
Translator," Oak Ridge Nat. Lab. Rep. 3054, Feb.
1961.
5. M. Grems and M. O. Post, "A Symbol Coder
for Automatic Documenting," Comput. News, vol.
147, pp. 9-18; and vol. 148, pp. 15-19 (1959).
6. C. L. Hamblin, "Translation to and from
Polish Notation," Comput. I., vol. 5, pp. 210-213
(1962).
7. F. B. Hildebrand, Introduction to Numerical
Analysis, McGraw-Hill Book Co., New York,
1956.
8. M. Klerer and J. May, "Algorithms for
Analysis and Transl'ation of a Special Set of Computable Mathematical Forms," Tech. Rep. 113,
Columbia U., Hudson Labs. (Oct. 1963).
9. M. Klerer and J. May, "An Experiment in a
User-Oriented Computer System," Comm. ACM,
vol. 7, no. 5, pp. 290-294 (1964).
10. M. Klerer and J. May, "A User-Oriented
Programming Language," Comput. I., vol. 8 (July
1965).
11. Los Alamos Scientific Laboratory, "MANIAC II," Comm. ACM, vol. 1, no. 7, p. 26 (1958).
12. Mark B. Wells, "MADCAP: A Scientific
Compiler for a Displayed Formula Textbook Lan13. Mark B. Wells, "Recent Improvements in
guage," Comm. ACM, vol. 4, pp. 31-36 (1961).
MADCAP," Comm. ACM, vol. 6, pp. 674-678
(1963).
14. A. Vanderburgh, "The Lincoln Keyboard-A
Typewriter Keyboard Designed For Computers Input Flexibility," Comm. ACM, vol. 1, no. 7, p. 4(1958).

74

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

REFERENCE MANUAL
Subscripted variables need not be dimensioned when used in
forms such as:
(1) Aij=BiQi,j FOR j=O(2)20 AND i=1 TO 5
or
(2) MAXIMUM n=10. K=15

Vocabulary List
ABS
ABSOLUTE
AND
ARCCOS
ARCCOSH
ARC COT
ARCCOTH
ARCCSC
ARCCSCH
ARCSEC
ARCSECH
ARCSIN
ARCS INH
ARCTAN
ARCTANH
BY
CALL

CARD
CARDS
COMPUTE
CONTINUE
COS
COSECANT
COSH
COSINE
COT
COTANGENT
COTH
CSC
CSCH
CYCLE
DIMENSION
DIVIDED
00

ELSE
END
EOF
EQUALS
EXP
FILE
FINISH
FOR
FORMULA
FROM
GO
HEADING
IF
INFINITY
LABEL
LINE
LINES

LN
LOG
LOOP
MAXIMUM
MESSAGE
MINUS
OF
OR
OTHERWISE
PAUSE
PERFORM
PLOT
PLUS
PRINT
PROCEt>URE
PROGRAM
PUNCH

READ
RETURN
REWIND
ROUND
SEC
SECANT
SECH
SIN
SINE
SINH
SLEW
SPECIAL
SQRT
STATEMENT
STOP
SUBROUTINE
SWITCH

TAN
TANGENT
TANH
TAPE
THE
THEN
TIMES
TO
TOP
TRUNCATE
TYPE
UNTIL
UPPER
VARIABLE
VARIABLES
WITHIN
WRITE

Aij=BiQi,j FROM j=4.5 ••••• K WITHIN i=O BY 3
UNTIL n.
or
(3)

{UNt~L}

[j: ) G
etc.

i=E TO G (Unit steps assumed)
i=N BY 2.34 UNTIL A+B
A=B+5 BY 2 UNTIL Q>20
i=E TO INFINITY
Note: Any number of dots permissable but no extra spaces
FOR i=l. 2 ••••• 5
FOR j=5Cl0)55
before terminating comma. The
difference between the first
FOR i=0 •• 5 ••••• 7.5
two numbers specifies the incremerrt in the first FOR form.
FROM or FOR forms can be used either to begin or end a
statement.
Ai=iBi FROM i=1 TO 10.
FROM i=1 TO 10 COMPUTE Ai=iB i •
00 [UN~~L] = LOOP [ ] = CYCLE [ ]
00 STATEMENT 5 FROM J=l TO 10.
This indicates that all statements up to but not including
5 will be executed. (No two LOOP statements should terminate at the same statement number. Otherwise, any number
of LOOP procedures within or external to other LOOP
procedures is permitted.)

Examples of Acceptable Forms

FROM=WITHIN=AND
FOR +=0,5, ••• ,90 WITHIN r=l TO 10 AND 0=1 TO 5 LOOP TO
FORMULA 6.
The loop to be performed most often is the first one; the
least often is the last.

Note: The horizontal extension
of the lower limit equation and
upper limit expression should
not exceed the corresponding
arms of the sum symbol. The
operand of the sum should be
outside the symbol.

lr

P=

FROM
FROM
FROM
FROM

The letters E, F, G denote an arithmetic expression, e.g.,
E may denote the expression A + 2B + i, otherwise a single
variable is meant. Braces { } denote a choice of forms.
Square Brackets. [ ) denote those forms that are optional.

i,j=E

~B'
i=1 ~,

FROM i-E [BY F)

A period denotes the end of a statement or the end of an
implied loop.
Corrections can be made by overtyping or by pressing the
control key ERASE when positioned over the eI'ror.
The initial value of all variables (including subscripts
is assumed to be 0 unless defined.
Each program must be terminated by the statement END OF
PROGRAM. or FINISH.
More than one statement per typing line is acceptable.
To continue a statement beyond the maximum typing length
for one line, press the TAB button and at least one
carriage return.
Names of variables with more than one character should be
defined by a SPECIAL VARIABLES statement before use.
A comma or the word AND may be used to separate computable
statements.
FROM i=1 TO 10 COMPUTE Ai=Bi+Ci+l' Ci=Ai+lX AND 0 =SIN 6 i •

t

A=

READ = READ CARD = READ CARDS
READ Ai FROM i= 1 TO Aj?15.
Card Format is free field; number of data points may vary
from card to card and may be in either fixed or floating
point form.
READ X. (only one card is read, one datum per card)
READ Ai' Bi + 1 FROM i=E UNTIL Ai=93.643. (Only one set Ai'
Bi+l per card.)
READ Ai FOR i=0(1)105. (Any number of Ai's per card.)
Data may be punched into cards in the following forms:
2 -2 1.596 +3.213 -4.60 2.78T2[=2.78xlO~]
2.78T-2[=2.78x10~2]
2.78E-3(=2.78x10- l ]
Each datum should be separated by at least one blank space
and the value should be within tlO"7& and not exceed nine
significant digits.

E

1,j=E

DIMENSIONA=(N. M).
This indicates that A is an (N+l) by (M+l) array
DIMENSION B=40. Z=30. Q=(10. 50).
SPECIAL VARIABLE[S]=DIMENSION
SPECIAL VARIABLES TEMPERATURE~ HUMIDITY. PRESSURE. COUNT.
LBJ=(14. 200). ay=(10. 15).
UPPER is used in the same manner as DIMENSION AND SPECIAL
VARIABLES except that the indicated variables are stored
in upper memory.
UPPER C. WEIGHT=56. K=(20. 30).

Three Alternate Formulations Of The Same Problem
C--1.

0-15.

FROM n-1 UNT I L

E~3.

F-li.

G-2.

4 COIw

THEN GO TO STATEMENT 2.

PRINT p.

FORMULA 3.

IF w)" GO TO STATEMENT 1.

END OF PROGRAM.

PR INT S.

Figure 18.

p-p""X··

S-S+Px" AND a-a+l.

PRINT A.
FINISH.

FROM V-X TO W COMPUTE

END OF PROGRAM.

a-auyv y •

75

TWO-DIMENSIONAL PROGRAMMING
~RINT X,Y,Z.
PRINT Yi FOR i=I,2, ••• ,N.
FROM i=1 TO N PRINT Ai'
PRINT Yi (A. B).
A and B are integers!;)etween a and S. Yi will be printed
in fixed point output, A significant figures to left of
decimal point, B significant figures to ~iiht of decimal
point. PRINT Yi(3.2), Yi(~)' Vi(~')' ViCO.2)

PRINT Yi (A.B.C).
(Printed as above except that the number is first divided
by laC to change its range.)
PRINT A, B(4.2), C(O.l.l), D. (Maximum of 8 var1ables)
PRINT LABEL = LABEL = HEADING = PRINT HEADING
Only symbols available on the printer are to be used,
maximum of 15 characters per label, maximum of 8 labels
separated by commas.
LABEL A, COUN~, 3X, ZlA, , SIGMA(X), TEMP ••
Messages on the printer or typewriter are printed using
the following forms:

Ai
READ Ai' COMPUTE

Y=~

IF a>k COMPUTE x=~(a-X)6, Y=BijX+COT
AND PRINT Y; a, T, k OTHERWISE COMPUTE x=2ak,
V=Bijx+C OT6 AND PRINT Y, a, T, k FROM a=l TO n
WITHIN T=2 BY .01 UNTIL 3 AND FOR k=0(5)90.
FROM i=l TO 10 AND j=l TO 10 READ Aij ,
COMPUTE Bij=Aij+Xi+Yj AND PRINT Aij' Bij' Xi' Yj , i, j.
FOR r=l, 2, ... , 1,0 AND FOR 9=-w(.01)w

PRINT MESSAGE ••• or TYPE NEGATIVE SqUARE /tOOT.
SLEW N (Printer paper spaced N lines)
SLEW [TO] TOP (Paper will advance to top of page)
IF F
IF F
IF F
IFF

G
G
G
G

IF F

G THEN • • • {OT~~:~ISE} {

IF F

G THEN [CONTINUE] {OTHERWISE} {

./ r

L TAN('hfe),
=~
41=1

cos-Ie, A=T r

THEN GO TO STATEMENT 1.
GO TO STATEMENT 1.
THEN B = C + E.
THEN READ ...
E

GO TO
COMPUTE •••

IF (X!Y AND y (X_Y)2 THEN
COMPUTE TXy=y(c=~)2 AND W=(YTXY)YC AND PRINT W, T ' X, Y
XV
FROM y=2k+3 BY .01T UNTIL W>5800 AND FROM X=l TO 100
OTHERWISE GO TO STATEMENT 2

E

GO TO
}
COMPUTE •••

Examples of mUltiple condition" ~
COMPUTE •••
READ a
2
IF T=5 OR Ga THEN C=D
GO TO FORMULA
CONTINUE
IF P=G AND H>£/2 AND
AND H!CIIl)
IF U=O OR (G=r SIN

OTHERWISE
To define a procedure within a program:

...

• {~~S~g~J~~E} (Name).

GO = GO TO
GO TO STATEMENT 20

•••••••••••••••••••••• RETURN •••••••••••••••••••••••••••••

Comments (non-computable statements) are entered between
{ } symbols.
FROM i=l TO 10 READ X· {READ VALUES}.
Y{i,j}=i+12j.
~

Superscripts that are red are used to form new characters
rather than being interpreted as exponents. The fOllowing
is a short program to determine the maximum absolute value
of a set of positive numbers Xi' The memory cell used by
XMAX_is set to 0 if not previously defined.
i=l TO 100 IF IXil>XMAX""THEN

READ TAPE V, T, P, L. The first L elements of the tape
record is read into locations Vo to VL_ I •
WR~!~eJAPE V2 ' T, P, 5.
(Locations VZ-V6 are written on
REWIND T, p. RWD T, p.
WRITE END OF FILE T, p. EOF T, P.
IF END OF FILE P THEN •••
IF EOF P GO TO •••

~~g~g~J~~EJ ].

To call a procedure:
... CALL (Name) [~~S~~~J~~E] ...
Relative Positions of Special Characters

0 \
•
I
I

I
I

I

__ J

r - -,

r--..,

I

I

'
I

I

I

I

L __

I
I.---l

~

:--1
I

~

In the following example Y is the varl.dble to be plotted,
x is the "independent index" (Le. Y=f(X), A=the minimum
value of X and B=the maximum value of X.
PLOT Zi' i, 0,

• [END[(Name)]

The name of a subroutine can be an alphanumeric string of
any length but must begin with an alphabetic character and
cannot be identical to any item in the vocabulary list.
As many RETURN's as desired may be inserted to branch out
of the subroutine back to the main p~ogram. The END statement is optional. It is preferable that all procedures be
typed at the end of the program. If this is done precede
the subroutine by the statement: STOP. However, if it is
desired to define a procedure inside the main program then
in some manner the program should "jump over" the procedure.

xMAX~IXil~red)

In the following tape commands L is the number of, elements
in the array V, T is the tape number and P is the controiler
(plug) number.

PLOT Y, X, A, B.

• ••••••••••••••••••••••••••••••••• RETURN ••••••••••••, •••••
.............

Use of the next forms eliminates the necessity of using
"DO" or "LOOP" statements. Complitable sub-statements
within an implied loop are separated by a comma or AND.
FOR i=1(1)50 AND j=O BY 2 UNTIL Y>2'000 READ X..
l.J,
COMPUTE Y=2X i ,j AND PRINT Y.
FROM i=l TO INFINITY READ Xi' IF xito COMPUTE Y=Y+Xi'
n=n+2 OTHERWISE GO TO STATEMENT 1.

F~~M

AND PLOT Y, i, -1, 1

FROM i=1 UNTIL Y>l.

FROM i=l TO 565w.

Figure 19.

L __ -l

I
L
__

I

[--1
__.J

F-~
I

I

I
__..J

MICROPROGRAM CONTROL FOR THE EXPERIMENTAL SCIENCES

w. C. McGee and H. E. Petersen
IBM Systems Research and Development Center
Palo Alto, California
INTRODUCTION
In many areas of the experimental sciences, increasing use is being made of general-purpose computers to control experimental apparatus and to record data from experiments. In most such applications the problem exists of connecting the apparatus
to the computer so that data and control information may flow between the two. The problem is
usually solved by placing a controller between the
computer and the external equipment (Fig. 1). In
this position the controller serves two functions:

External
Equipment

~

1'-------11

I

____~~-~

Controller

L
r--jI
I

I

Computer

_ i-----~~______~

Figure 1. General control system.

elements are then interconnected to give the controller its proper terminal characteristics. The design process is essentially no different from that
conventionally used in designing computers, except
of course that a controller is usually not as complicated as a computer.
Although the conventional design process is
straightforward, it has the inherent disadvantage
that it must be repeated for each new configuration
of computer and external equipment. In the experimental sciences, the number of such configurations
is increasing rapidly, and it is quite possible that
progress in this area will be limited by the time and
cost to develop the requisite controllers by traditional methods. The situation would be materially
improved if there were a single design schema

(a) It provides a suitable electrical and logical
interface between the computer and the
external equipment; and
(b) It provides detailed control of the external
equipment, thus leaving the computer free
for other work.
The design of a controller for a particular set of
external equipment and a particular computer presents no serious obstacles. Traditionally, controllers
are implemented from flip-flop registers, logic elements (AND, OR, NOT, etc.), and occasionally
small memories for data buffering. Timing diagrams are drawn showing the levels and pulses required at the controller's terminals, and the logic

77

PROCEEDINGS - - FALL JOINT COMPUTER CONFERENCE,

THE MICROPROGRAMMED CONTROLLER
CONCEPT
The functions of a microprogrammed controller
are expressed in a microprogram which is stored in

1965

a control memory. The microprogram is composed of microinstructions which are read out of
the control memory, one at a time, decoded, and
executed. The microprogrammed controller is thus
primarily a sequential device, in contrast to the
c01,1ventional controller in which different operations usually proceed in parallel.
The microinstructions of a microprogrammed
controller control a simple yet general hardware
configuration. This hardware must be capable of
storing small amounts of data, performing simple
arithmetic and logic operations on these data, and
accepting and transmitting data and control signals
to the attached equipment. The general structure of
one possible configuration meeting these requirements is shown in Fig. 2. The controller is organD-~--

B

~-+----~~-----~I------~-r------~

A __

______J -_ _ _ _ _ _L -_ _ _ _ _ _

~

which was sufficiently general to accommodate a
wide variety of computers and external equipment,
and which could be quickly and easily particularized to meet the requirements for specific controllers. One design schema which appears to approach
this goal is microprogram control.
In microprogram control, the functions of the
controller are vested in a microprogram which is
stored in a control memory. The microprogram is
made up of microinstructions which are fetched in
sequence from the memory and executed. The microinstructions control a very general type of hardware configuration, so that merely by changing the
microprogram, the functions available in the controller can be made to range between wide limits.
In addition, instead of the multiple, parallel logic
elements found in conventional controllers, the microprogrammed controller requires only a single,
central element to perform all logic and arithmetic.
The microprogrammed controller thus has a potential cost advantage over the conventional controller.
The microprogrammed controller concept has
been used to implement the IBM 2841 Storage
Control Unit, by means of which random access
storage devices may be connected to a System/360
central processor. Because of its microprogram implementation, the 2841 can accommodate an unusually wide variety of devices, including two kinds of
disk storage drive, a data cell drive, and a drum.
The 2841 thus provides an instance of the effectiveness of the microprogrammed controller concept in
minimizing the effort that must go into controller
design.
In this paper we will attempt to extend and generalize the microprogrammed controller concept, as
embodied in the 2841 Storage Control Unit, to
yield a more general controller design schema which
would be suitable for use in die experimental
sciences. We will first describe the basic concepts
of the microprogrammed. controller, and then describe how such a controller might be applied to a
control problem typical of the experimental sciences,
namely, the control of a CRT for scanning bubble
chamber firm.

~

78

__

Figure 2. General structure of microprogrammed controller.

~

ized around a set of three data buses, A, B, and D;
an arithmetic and logic unit (ALU); and a set of
registers, Rl, R2, ... ,Rn. Two of the data buses
(A and B) provide input data to the ALU, and the
third (D) receives the output of the ALU. The
ALU is capable of performing simple arithmetic
and logic operations on the input data, such as add,
subtract, AND, OR, etc. The registers provide the
sources of data to be operated on and also serve as
destinations for the results. In general, any two registers specified by the microinstruction may provide
the input data, one of them being connected to the
A bus and the other to the B bus. The result of the
ALU operation may then be returned, via the D
bus, to any specified register (including one of the
source registers, if desired). The registers, buses,
and ALU are all the same width, which may be
chosen to match the requirements of the control application. For example, a bus width of 8 bits (+
parity) appears to be a good choice for a wide
class of applications.
Microinstructions are divided into fields, each of
which has a specific function. To control the data
flow in the configuration of Fig. 2, four fields

MICROPROGRAM CONTROL FOR THE EXPERIMENTAL SCIENCES

would be required: CA, CB, COP, and CD. Field
CA determines which register will be connected to
the A bus; field CB determines which register will
be connected to the B bus; field COP determines
what operation the ALU will perform on the A-bus
and B-bus data; and field CD determines which register the ALU results will be sent to. Each of these
fields can be made large enough to handle the maximum number of variations required. For example,
by using 4 bits for the CA field, one can specify up
to 16 different sources for the A bus.

R1

R2

ADD

R3

CA

CB

COP

CD

~

To illustrate, suppose it were desired to add the
quantity in register R1 to the quantity in R2 and
place the sum in register R3. This could be accomplished with the following microinstruction: *
The structure of Fig. 2 provides for the manipulation of data already in the system, but provides no
way of introducing data into the system. In general
there are two ways of accomplishing this. One is by
providing external connections to some of the registers, as will be described below; the other is by providing input directly from the microinstruction itself. In particular, one of the B-bus sources can be
defined to be the "constant" field CK of the microinstruction. Whenever this source is specified in
the CB field, the contents of the CK field in the
same microinstruction will be gated onto the B bus.
This technique is especially useful for introducing
increments to counts (e.g., + 1) or certain bit patterns to mask off portions of data bytes. For example, to increment the quantity in register R1 by 4,
the following microinstruction could be used:

R1

CK

ADD

R1

CA

CB

COP

CD

4

~

CK

The registers of a microprogram controller fall
naturally into three groups: a control group, in in*The fields of the microinstruction are shown symbolically; in prac~ce they would contain equivalent binary codes.

79

put group, and an output group. To illustrate this
grouping, a slightly more detailed schematic of a
microprogrammed controller is shown in Figure 3.
The control registers are those registers required
for general controller operation, i.e., without regard
to the particular device or devices being controlled.
For example, registers must' in general be provided
to hold intermediate results of ALU processing.
These registers are designated TMP in Fig. 3.
Another set of registers (CHI and CHO in Fig. 3)
is provided for data to be transmitted to and from a
general-purpose computer. These registers could,
strictly speaking, be placed in the input and output
register groups, so that the computer would assume
the same status as any other device connected to the
controller. Communication with a general-purpose
computer is sufficiently stereotyped, however, that
the registers required to effect this communication
can be properly viewed as part of the control group.
A third type of register in the control group is
the status register, designated ST in Fig. 3. Each
bit of a status register indicates the (binary) status
of some portion of the controller or device being
controlled. A status bit may in general be set or reset from an external source (e.g., the computer
channel, to signify that the CHI register is ready to
be sampled); or from the microprogram itself. For
the latter purpose, a CS field is provided in the microinstruction whose decoded value designates a
particular status register bit and the value to which
the bit is to be set. This provides the controller
with the ability to "staticize" certain conditions existing at one time so they may be used to condition
operations at a later time. An important example is
the condition "D=O," i.e., whether or not the output of the ALU is zero. A certain value in the CS
field will cause a 1 or a 0 to be set into a certain
status register bit, according as D = 0 or D=¥=:O on
that microinstruction step. In addition to conditioning later operations of the controller itself, the status registers may of course be used to condition the
operation of external equipment, and as such provide one of the sources for external equipment control.
To illustrate the function of the CS field, suppose
register R 1 contains a count of the data bytes received from the external equipment. Each time a
byte is received, the count is to .be decreased by one

80

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

Control Group

Output Group

Input Group

1965

r·---···----J.-··-··--------··---~ ,--~ , - - __ .--A......-__ "
ALU
Control

Data

j I
.r . - '--r-LI~"l--~
j

Input
Gates

I

Conditions

l

Computer
Channel

q~JjLl-TtJ
c!oI

~JJ
r

Output
Gates

Data

---.

-~I

·1

lMi:c",;",'mcHo_" Decod;nQ

Control

1 I

Memory

Control
Memory
Address

i
_ _ _ _ _ _ .. _____J
Figure 3. Basic microprogrammed controller.

and the resulting value tested for zero. When the
value goes to zero, bit 1 of the status register is to
be set to 1. This can all be accomplished with the
following microinstruction:

Rl

CK

ISUB

CA

CB

COP

1 RIll
CD

I)) I(D=O)~STII )

CK

CS

The second group of controller registers, the input group, provides a place to hold data coming

from the equipment being controlled. In many cases
these data will take the form of binary voltage levels which will be held by the external equipment
until .sampled by the controller and perhaps later
caused to change. In such cases the registers need
not be flip-flop registers but simply terminals which
can be connected to the A or B bus. In other cases,
it may be necessary, because of timing or other
considerations, to buffer the input into flip-flop

registers. In these cases, gating control must generally be provided by the controller and/or external
equipment.
The third and final group, the output group, consists of flip-flop registers where the controller may
deposit data to be used by the external equipment.
The output of these resigters may be taken directly
to the external equipment as binary levels, or may
be transferred, through suitable gating, to external
registers. Normally, the output registers need be
connected only to the D bus. Under certain conditions, however, it may be convenient to bring the
output register data back into the system, and so Abus connections are in general provided for the output registers.
The setting of status register bits under microprogram control provides the basic mode of controlling the external equipment. In some cases it is
convenient to augment this facility with control bits
taken directly from the microinstruction. This is
the principal purpose of the CX field. When a mi-

81

MICROPROGRAM CONTROL FOR THE EXPERIMENTAL SCIENCES

croinstruction is read out of control memory, the
bits of the CX field are not decoded as are the
other fields, but are instead used directly in the external equipment. For example, the microinstruction might, by virtue of the 1 in the CX field, cause
the gating of a quantity into an input register.

CA

CB COP CD

CK

CS

CX

The CX field may also be used to extend the facility provided by the CK field for introducing arbitrary constants into the external equipment. Unlike constants from the CK field, any constants in
the CX field would not enter the bus structure, but
instead would go directly to the external equipment.
Since the microprogrammed controller is a sequential device, a key characteristic is the method
used to get from one microinstruction to the next.
One could, for example, have a conventional "program counter" which contains the memory address
of the instruction currently being executed, and
which is either incremented by one or is respecified
to an arbitrary value (in case of a branch) to obtain the address of the next instruction. For microprograms, a more efficient procedure is to specify
the address of the next instruction in every instruction, whether branching may occur or not. By this
means, branching does not take a separate step, but
may be performed on the same step as some other
operation. Further, successive instructions may be
located anywhere in control memory relative to one
another, providing greater flexibility in the sharing
of common sequences of microinstructions among
different control functions.
In the microprogram controller we are describing, the address of the next instruction is normally determined by the CN and CL fields. The CN
field contains the high-order n-l bits of the n-bit
address of the next microinstruction; and the CL
field determines which of a number of sources will
be used to supply the low-order bit of the address.
Two such sources, of course, are simply a "zero"
and a "one," so that the location of .the next microinstruction may be arbitrarily specified. Thus,
the microinstruction

CA CB COP CD

CK

CJ

CN CL

CS

ex

specifies that the next microinstruction is to come
from location 179 X 2 + = 358. Other sources
which can be specified in the CL field include single
bits of the status register. The microinstruction specifies that the next microinstruction is to come from
location 179 X 2 + = 358 if STI = 0, or from
location 179 X 2 + 1 = 359 if STI = 1, thus effecting a two-way branch on the value of bit 1 of the
status register.

°

°

CA CB COP CD CK

CJ

CX CN CL

CS

By providing additional fields in the microinstruction to designate sources for other bits of the
next-instruction-address, a capability of performing
four-way~ eight-way, etc., branching may be obtained. For simplicity, only two-way branching is
assumed. However, we do provide a more general
facility for using any input or calculated quantity as
the address of the next instruction. Specifically, if
the CJ field of the microinstruction is 1, the next
address will not be obtained from the CN and CL
fields as described in the preceding paragraph, but
instead will be taken from the A bus. Thus, whatever register is gated onto the A bus by the coding in
the CA field, that register's contents will be taken
as the address of the next instruction. This facility
provides a versatile many-way branch which is useful in command decoding and function generation.
For example, suppose a code has been operated on
arithmetically, and the result, which represents the
starting address of the microprogram corresponding
to this code, has been left in register Rl. The coding will perform the desired branching.

IRI I I I I 11 I-I
CA CB COP CD CK

CJ

CN CL

I
CS

II
CX

82

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

In the examples considered above, the microinstructions are shown performing only a single function. In actual use, a single microinstruction will in
general perform a number of functions, within the
constraints imposed by the microinstruction format.
Thus, a single microinstruction will in general perform an arithmetic or logic operation (fields CA,
CB, COP, CD, and possibly CK); set a status register bit (CS field); set external lines (CX field);
and select its successor (CN and CL fields).
The performance of the system described above
is obviously very dependent on the speed of the
control memory in providing microinstruction sequences, as well as the speed of the circuits being
used. In general we can assume that the circuits are
fast enough that the memory will be the limiting
factor. Thus, for high performance, a very highspeed memory is required. However, it is not necessary that the control memory be an ordinary
read/write memory. What is desired is that the
memory be capable of being read very rapidly but
that writing may take place fairly slowly.
In many applications even manually changing the
contents of the memory might be suitable, since it
is possible to rapidly change from one element of a
program to another by branching without shifting
in large blocks of a new program. This means, then,
than any fast-read, slow-write memory that is economical might be used. For several years, the literature in computer technology l-5 has described many
such memories in which data can be changed in a
period of minutes or at most hours, whereas the
data reading times may be as short as a few tenths
of a microsecond. In general, such "read-only"
memories have shown savings in cost over their
read/write counterparts in the same performance
range. Should this cost picture change, read/write
memory can be used though adequate consideration
must be given to the system and operational advantages that apply to each.
By using the control memory as described, we
very much limit the data storage capability of the
system as described t~us far. At least two simple
alternatives are 'available to provide such a capability. One is to attach a conventional random-access
memory directly to the controller bus structure, using one or more of the controller's registers as the
"memory address register" (Le., to hold the address
of the location to be read or written); and one or
more of the controller's registers as the "memory

1965

data register" (Le., to hold the words read from or
written to memory). Reading and writing operations would then be effected by appropriate microprogram sequences, much as any other external device is controlled.
The second alternative to providing storage capability is simply to use the memory of a general-purpose computer attached to the controller through
the computer interface which is provided in the
controller design. This method is especially appealing if the computer has input-output "channels"
which can operate independently of the main processor, since in this case the controller can communicate with computer memory without interfering with the main computer program. Given such a
facility, the controller we have described can perform many functions normally considered to be in
the computer's domain, such as limit testing, function generation, data assembly, etc.
APPLICATION TO PEPR
To illustrate the basic concepts of microprogramming, we would like in this section to describe
briefly a typical control application and the manner
in which a microprogrammed controller might be
configured and programmed to handle the job. The
application we have chosen for this purpose is the
PEPR6 film scanning application. PEPR is a computer-controlled CRT scanner used to automatically
measure bubble chamber tracks which have been
recorded on film. The PEPR cathode ray tube defocuses the electron beam into a short lnie segment
whose angular orientation and location can be independently controlled by the system. Thus, a short
line of light is controlled in angle and position on
the face of the CRT and swept for a short distance
under system control. When this .line of light falls
on one of the film tracks, a photomultiplier tube
responds and the position of the beam is recorded
as the time of arrival of the photomultiplier response. This is accomplished by starting a counter
at the same time the line starts to move and remembering the count value when response occurs. These
count values and the associated angle are sent to
memory where subsequent processing will occur.
The angle of the line is changed and scan repeated
until the entire range of angles specified has been
examined. A similar scan in another small area of
the film is then initiated until, after approximately

MICROPROGRAM CONTROL FOR THE EXPERIMENTAL SCIENCES

500 such cells have been examined, the entire picture has been scanned.
In controlling this scan, the system must specify
the coordinates of the cell center, the range of angles
to be covered, and a few other factors such as sweep
speed, line length, etc. The generation of the line by
the CRT requires a special focusing system and currents that are non-linear functions of the angle 
of the line. These nonlinear focusing currents functions M (  ) and N (  ) must also be supplied by
the system.
A possible configuration for the PEPR system
is illustrated in Fig. 4. The principal elements in
this configuration are:
r -.--------.- ----

x

1
I
!

.-------i..--,I

6!1 CRT!

! \ \

I :

c>

:.
i

I i

L~'

~ ~j I

~--------l

LrOutput'Co'
n k'---tr I

o--oFILM' : ,-,::}-

i

(a) The coordinates of the scan cell center.
(b) The length of the flying line.
(c) The effective excursion of the flying line
on a single sweep.
( d) The range of angles to which the flying
line will be oriented on successive sweeps.
Data returned to the computer includes

r:~--,:->----~

y'ri::1-

designated cell on a bubble chamber photograph.
The controller responds by issuing the proper signals to the scan table, receiving signals from the
scan table, converting these signals into meaningful
data, and relaying these data back to the computer.
Command parameters which are available to the
computer include

,

!M-N r- ~}----1~--,
'I

83

Iloput

~I

C
omputer

J'

I

L ____ _

~~--

L. __ . _____ .___ . __ .___ :

Figure 4. PEPR system schematic.

(a) Scan Table. The scan table contains the
cathode ray tube and associated beam
control circuits; the film transport equipment; the optics equipment, including the
photomultiplier tube. and circuits; and the
data acquisition registers.
(b) Computer. The computer provides overall
direction for the scanning, and performs
the logic and arithmetic necessary to correlate isolated "hits" from the scanner into
"tracks." Although not shown, the computer configuration would include certain
standard peripheral items, including a magnetic tape unit for recording system. output.
(c) Controller. The controller provides detailed control of the scan table, in response
to commands from the computer.
Under program control, the computer may issue a
command to the controller to initiate a scan of a

(a) The angle at which one or more hits were
detected.
(b) The interpolation count representing the
location of each hit.
(c) The identification of which track element
detector (TED) detected the hits.
For the sake of illustration, we will assume that
the controller responds to three different commands
from the computer, as follows:
1. Accept Parameters. When the computer
issues this command, it follows the command immediately with a single set of scan
cell parameters, i.e., coordinates of scan
cell center, line length, etc. For simplicity,
we assume that the entire set is transmitted
each time the command is given, and always in a fixed order. These parameters
will then be in effect until the next set is
transmitted.
2. Start Sweep. Using the parameters previously supplied, the controller initiates a
sequence of sweeps, each sweep being
made at an angle one degree greater than
the previous sweep. This continues until
the final angle is reached, or until a hit is
detected at some angle;- In either case, the
controller then sends an appropriate interrupt signal back to the computer.

84

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

ALU
Conditions

TED 10

Computer
Channel
Hit Counters
-A ....... _...... _._._

y
FOCUS
OAC
Scan Table

Control
Memory

y
LENGTH
OAC

Control
Memory
Address

STARTI
SWEEP I~

Figure 5. Microprogrammed controller for PEPR scanner.

3. Send Data. This command causes the controller to transmit to the computer the results of the last-detected hit, i.e., the hit
angle, interpolation counts, etc. Again for
simplicity, we assume the entire set of data
is transmitted each time the command is
given and always in the same order.
The computer uses these commands to control
the scanning operation. When data is received from
the controller via the "send data" command, the
computer must make any ncecssary coordinate conversion, consolidate redundant data and correlate
track data from different cells. The result of this
processing and control are track coordinates which
are then recorded on magnetic tape. This data tape
is later processed by a general-purpose computer to
do the physics calculations.
A microprogrammed controller to perform the
above-described functions is shown in Fig. 5. Since

the majority of parameters and data values are . . .
bits or less, we assume a register-ALU-bus width of
. . . bits. The functions performed by the ALU include addition, subtraction and "no-operation," the
latter being used when it is desired to just move a
data byte from one register to another.
The control registers include a single "temporary" register; two channel registers for communication with the computer; and a single status register with bit assignments as follows:
STO

Not used

ST 1

End of sweep; set by scan table

ST2
ST3

Hits obtained on sweep; set by scan table
Controller request; set by controller

ST4

Channel request; set by computer

ST5

Final angle reached; set by controller

ST6

Channel acknowledge; set by computer

ST7

Controller acknowledge; set by controller

85

MICROPROGRAM CONTROL FOR THE EXPERIMENTAL SCIENCES

Bits ST 2 and ST5 are also used directly to initiate
interrupts in the computer.

registers, which in turn drive DAC's in
the scan table.

The input group consists of 8 sets of input terminals of 8 bits each. Six of these (B 1 through B6)
are connected to interpolation counters, while the
remaining two (Tl and T2) are connected to the
TED indicator logic. The input terminals are connected through control gates to the A bus.

(c) CXM and CXN are each 9 bit fields, containing the values of M and N, respectively,
corresponding to a given angle.

The output group contains 10 registers of 8 bits
each. Eight of these registers hold parameters for a
given scan cell and are directly connected to the appropriate external device:
Register

Parameter

The intent of placing M and N into the CX field is
to provide a very rapid means of supplying new M
and N values on each sweep repetition, as descirbed
next.
The operation of the controller is depicted in the
flow charts of Fig. 7. The corresponding coding is
given in Fig. 8. In its quiescent state, the controller
sits in an endless loop waiting for the computer to
issue a command. The controller expects one of
three commands, as follows:

XYl, XY2, XY3 Cell center coordinates X, Y (12
bits each)

Command

Code

F

Focus correction

Accept Parameters

00000001

CO

Interpolation Counter Open Gate

Start Sweep

00000010

CC

Interpolation Counter Close Gate

Send Data

00000011

S

Sweep Speed (Amplitude)

L

Line Length

The remaining two registers,  I and F, hold the
initial and final angle, respectively. These registers
are not connected to external equipment, but are
included in the output group for convenience. All
registers in the output group may be connected
through control gates to the A bus, the B bus where
specified, and to the D bus.
The control memory for this application requires
a capacity of at least 256 words and a word length
of at least 54 bits. The format of the microinstruction word, together with the various values which
may be assumed by its fields, is shown in Fig. 6.
Except for the CX field, the meaning of the various
fields is exactly as described in the preceding section. For the present application, the CX field
would be divided into four subfields:
(a) CXl provides a one-bit signal to the scan
table to start a sweep.
(b) CX2 provides a one-bit signal to gate the
CXM and CXN fields (see below) of this
microinstruction into a pair of external

When the presence of a command is detected, the
controller adds a constant to the command to obtain
the address of the next microinstruction. This microinstruction in turn branches the controller to the
sequence corresponding to a given command.
In the "accept parameters" sequence, the controller simply waits for the computer channel to
transmit successive 8-bit bytes. As each byte is
transmitted, the controller deposits it in the appropriate register in the output group.
The "send data" sequence is similar, execept that
the controller places the contents of successive input-group registers on the channel and each time
waits for the computer channel to acknowledge.
In the "start sweep" sequence, the controller execute a microprogram loop, with each traversal of
the loop corresponding to a different sweep angle.
On each traversal the controller performs the following steps:
( a) Places the current angle (  I) on the A
bus and branches to the corresponding
location. In locations 0 through 179 are
stored 180 microinstructions which are
identical except for the values in the CXM
and CXN fields. These values correspond

86

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

MICROINSTRUCTION CODING FOR PEPR CONTROLLER
Field
Decoded CA
(5)
Field
Value

o

0

CB
(2)

COP
(2)

CD
(4)

CK
(8)

CJ
(1)

0

NOP

0

0

ADD

XYl

XYl ¢F

2

XY2 TMP SUB

3

XY3 CK

-

CN

<::l

(7)

(3)

CS
(2)

UseN 0

0

NOP

DIRECT

1

UseA 1

ST1

1~ST3

OUTPUT

XY2

2

2

ST2

(D=O)-+ST5

TO

XY3

3

3

-

1-+ST7

INTERFACE

4

F

F

4

4

ST4

5

CO

CO

5

5

ST5

6

CC

CC

6

6

ST6

7

S

S

7

7

~

8

l

l

CPI

¢I

·

·

9

10

~F

¢F

11

TMP

·
·

·
·

TMP (to

(to

12

CHI

13

-(1)

14

-

15

-

16

-

17

81

18

82

19

83

20

84

21

85

22

86

23

11

24

T2

25

·
··

31

-

-

225)

127)

CHO

-

-

FIgure 6. MICrOInstruction codmg for PEPF controller.
( 1) Indicates' not defined

CXl
(1 )

CX2 CXM
(1)
(9)

CXN
(9)

87

MICROPROGRAM CONTROL FOR THE EXPERIMENTAL SCIENCES

Idle loop

Accept Parameters
Sequence

,"-

Send Data
Sequence

...
I

,.---

No Command

.

Test ST4
(Channel

Test for
Command

J

Start Sweep
Sequence

t

ft

I

(180-way bran
ST4=1

Co mma nd ST4=O

Calculate
Command
Pointer Add ess
Branch to
Command
Pointer

Store First
Byte in
Ref:dsters

-

Put 2nd
Byte on
Channel

i
ST5=O
($i=f)

J

Branch to
Command
Sequence

5T6=1

5T6=O

Test ST4

1sT4=1

5T4=O

r.

Branch to
location

Store 2nd
Byte in
Registers

r.Test.~r~~

Start
Sweep

J

5T6=O

-

i

I

ST6=l

I

etc. for
remaining
para~eters

I

Store last
Byte in
Registers,
Branch to
Idle loop

5T1=O
(not end of
end of sw ep)
sweep)
r - - -.......- - .
Test for
Hits

I
etc. for
remaining
data bytes
I

I
I

!

I
I

~-----;

I

Put last :
Byte on i
. Channel,
Branch to
Idle loop

I
Branch to
Idle Loop

Figure 7. Flow chart of microprogram for PEPR controller.

to the associated angle, e.g., location 80
contains M(80) and N(80).
(b) Transmits the appropriate M and N to
external registers; subtracts F from I
and sets ST5 to 1 if the result is zero,
i.e., if I = F.
( c ) Increments the current .angle by one degree; tests ST5 and branches accordingly.

(d) Assuming ST5 = 0 (i.e., I = F), transmits a start sweep pulse to the scan table.
(e) "Waits" for end of sweep.
(f) Tests for hits on the sweep and branches
accordingly.
Assuming no hits were detected, step (f) would
branch back to step (a), and the loop would be repeated. If hits were detected, the controller would

88

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

MICROPROGRAM FOR PEPR CONTROLLER
Location

CA

CB

COP

CD

CK

CJ CN CL CS

CX1

CX2 CXM CXN Remarks

0
0
0
0

0
0
0
0

(2)

IDLE LOOP
200
201
202
203
204
205

- ADD
- - - _(1)

CHI CK
TMP
"

-

- - -

-

0
0
TMP 202 0
0
1
0
0

-

-

0
0

-

200 ST4 0
202 0 0
0
208 0 0

- -

- - - -

0

230 0

0

0

0

-

0

238 1

0

0

0

- -

-

-

Branch to
Accept'
Branch to
"Start"
Branch to
II

"Se~d"

ACCEPT PARAMETERS
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227

-

CHI

-

CHI

-

CHI

-

CHI

0
0
0
0

-

NOP

-

NOP

-NOP
-NOP

- CHI 0

NOP
-

0

NOP

CHI

-

- - -NOP
CHI 0
- - CHI 0
NOP
- - CHI 0
NOP
-

CHI

-0 -

NOP

0
XY1
0
XY2
0
XY3
0
F
0
CO
0
CC
0
S
0
L
0

4>1:
0
1

-

-

MN TABLE

o
1
2

··
·

79

11

0

-

232 0

1~ST3

0
1...,.ST3
0
1~ST3

0
1~ST3

0
1..."ST3
0
1-+ST3
0
1~ST3

0

~ST

- -

-

-

-

- .
-

-

-

-

M(O) N(O
M(I) N(1)
M(2) N(2)

! 111 11 11 t t t

has been reached, the controller returns to its quiescent state to await further commands. The computer may at this point request data; or it may transmit new parameters; or, it may cause scanning to
resume at the angle one greater than that at which
hits were last obtained, simply by issuing a "start
sweep" command.

M(179) N(179)

In the PEPR application, the cycle time of the
control memory would ideally be selected so that
the loop time of the controller exactly matched the
sweep time of the scan table, i.e., so that neither
device waited for the other. According to Fig. 7,
the controller executes six steps in the loop. Thus, a
sweep time of 10 microseconds would require a con-

90

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

trol memory cycle of no greater than 10/6 = 1.67
microseconds. Such cycle times are readily available
with current technology.

REMARKS
In this paper we have described a different approach to controller design, whose salient aspect is
the use of microprogram sequence in place of conventional wired logic. The implications of microprogrammed control can perhaps be better understood by considering briefly the similarities and
differences between two kinds of controllers for the
PEPR application: the microprogrammed controller
we have just described, and a controller implemented in the conventional manner.
From the standpoint of the hardware (registers,
gates, etc.) required to hold the data coming from
the scanner and computer, the two kinds of controller appear to be roughly equivalent. For exampI, the conventional controller would have to have
two registers for holding the current and final angles, a counter for incrementing the current angle,
and a comparator for comparing the current angle
against the final angle. In the microprogrammed
controller, the corresponding hardware is to be
found in two registers for holding the current and
final angle; and an ALU for decrementing and testing the angle. The specific manner in which this
"common" hardware is controlled, of course, is
much different in the two kinds of controllers.
Another significant difference is in the manner
in which the M and N functions are generated. In a
conventional controller this would be accomplished
with a nonlinear function generator, whereas in the
microprogrammed controller, the function is stored
directly in control memory. The latter is obviously
an advantage if it is ever necessary to modify the
function.
Another difference is found in the generality of
the ALU in the microprogrammed controller. A
conventional controller would not be built with
more arithmetic capability than absolutely required
by the application, whereas the microprogrammed
controller, through its very simple ALU and data

1965

flow characteristics, has theoretically unlimited arithmetic capability. The possibility therefore exists
of extending the controller's functions (e.g., adding
or subtracting constants to data as they are transferred to or from the computer) without loss of
time or additional cost.
We have provided a detailed discussion of one
application, but several others are immediately apparent. Control of any CRT scanner would be similar to the PEPR scanner. In other data collection
systems, counters, pulse height analyzers, telemetry
converters, etc., may all serve as sources of input
data. The controller output registers may be used
for a variety of external control purposes as well as
data sources for display and printing devices. A
wide and dynamic range of control can be provided
by a single hardware complex by means of the "personality" provided by the control program. The
simultaneous control of different experiments, for
example, would be possible simply by incorporating
separate programs within the control memory.
While communication line switching and exchange
and multiple data channel control are potential applications, preliminary analysis has indicated that
expansion of some of the baisc concepts presented
may be desirable.
The microprogrammed controller appears to offer
significant advantages in design simplicity and flexibility, with respect to both the functions performed
(as determined by the microprogram) and the particular equipment to be controlled (as determined
by the input/output register configuration). For
this reason, we feel that the approach is well suited
to the laboratory environment, where changing requirements must be accommodated with a minimum of confusion and cost.
ACKNOWLEDGMENT
The authors would like to acknowledge the initial suggestion made by Dr. Horace P. Flatt that we
explore the use of microprogram control for scanning systems and his continued encouragement of
this effort. We also appreciate the courtesy and help
given by Drs. Irwin Pless, Horace Taft and Arthur
Rosenfeld toward understanding the PEPR system.

MICROPROGRAM CONTROL FOR THE EXPERIMENTAL SCIENCES

REFERENCES
1. D. H. Looney, "A Twistor Matrix Memory
for Semi-Permanent Information," Proceedings of
the Western Joint Computer Conference (1959).
2. J. H. DeBuske, J. Janik and B. H. Simons,
"A Card Changeable Non-Destructive Readout
Twistor Shore," ibid.
3. H. R. Foglia, W. L. McDermid and H. E.
Petersen, "Card Capacitor-A Semi-Permanent,

91

Read Only Memory," IBM Journal (Jan. 1961).
4. T. Ishidate, S. Yoshizawa and K. N agamori,
"Eddycard Memory-A Semi-Permanent Storage,"
Proceedings of the Eastern Joint Computer Conference (Dec. 1961).
5. J. M. Donnelly, "Card-Changeable Memories," Computer Design (June 1964).
6. 1. Pless et aI, "A Precision Encoding and Pattern Recognition System (PEPR)," 1964 International Conference on High Energy Physics.

PICOPROGRAMMING: A NEW APPROACH TO INTERNAL COMPUTER CONTROL
B. E. Briley
Automatic Electric Research Laboratories
Northlake, Illinois
control pulses must be dispatched to the arithmetic
unit. In addition, it performs certain housekeeping
duties, such as incrementing the instruction location
counter.
Most of the housekeeping is performed for all
instructions, and the housekeeping hardware is
shared by them for economic reasons. Similarly,
like portions of different instructions are often realized with the· same piece of equipment. This design
technique is very desirable from the point of view
of economics, but it makes the machine more prone
to total failure if a single element malfunctions.
The conventional control is totally wired in, rendering it quite inflexible. Any afterthought alteration of the instruction set requires a "soldering
iron" approach.

INTRODUCTION
The central processors of conventional computers
may be roughly divided into two sections, an arithmetic section, which performs operations analogous
to arithmetic upon representations of numbers, and
a control section, which produces essentially a sequential group of gating pulses to accomplish the
desired manipulation in the arithmetic section.
The arithmetic section lends itself admirably to
modularization because of its repetitive structure. It
is relatively easy to design and diagnose. The control section, however, has stoutly resisted similar
treatment because it conventionally consists of an
ensemble of special logic arrangements which differ, and, therefore, do not lend themselves to modularization on a logic level. This section is more difficult to design, and if the control malfunctions, an
attempt at self-diagnosis by a typical machine
may be roughly compared with asking an insane
psychiatrist to analyze himself.
Described herein is a new approach to the design
and realization of a control section which is modular by nature, simple to design and diagnose, and
flexible to a unique degree.

Microprogrammed

The microprogramming approach is a definite
step forward in increasing the flexibility of a machine. A microprogrammed control section utilizes
a macroinstruction to address the first word of a
series of microinstructions contained in an internal,
comparatively fast, control memory. These microinstructions are then decoded much as normal instructions are in wired-in control machines, to initiate
production of (in general) a sequential series of
pulses to control the arithmetic section. 1
The microinstructions are generally relatively
weak, but the macroinstructions, calling upon sub-

CONVENTIONAL CONTROL SECTIONS
Wired In

A conventional control section decodes an instruction to ascertain which of a prewired set of
93

94

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

routines of microinstructions, can be quite powerful.
Since these subroutines are alterable, the nature
of macroinstructions is very flexible, limited only
by the microinstruction capabilities which are,
however, fixed by wiring.
Unfortunately, the portion of the control which
handles the microinstructions suffers the same lack
of modularizability as the totally wired-in system.
PICOPROGRAMMED
Philosophy

Consider the control wires passing between the
control section and the arithmetic section; these
might number 100 in a machine of moderate size.
If the signals which appear on these lines are examined during the execution of a typical instruction, it
will be found that relatively few are activated. Further, for most instructions, the number of pulses
which are produced on anyone line is quite small
(there is, of course, a small class of cyclic instructions typified by SHIFT N, which require long
trains of pulses; these will be discussed separately).
Understanding the pieoprogramming technique
requires the recognition of a correspondence between the pulse-programming requirements of a
control section and the capabilities of a memory
element known as MYRA.2 A MYRA memory element is a MYRiAperture ferrite disk which, when
accessed, produces sequential trains of logic-level
pulses upon 64 or more otherwise isolated wires.
The relative width and timing positions of the
pulses on the various wires are trivially adjustable,
not only with respect to other pulses on the same
wire, but with respect to pulses on the other wires
associated with the same disk.
Thus, each memory element is capable of directly
providing the gating pulses necessary to execute an
instruction. A picoprogrammed system, then, consists essentially of an arithmetic section and a modified MYRA memory. A macroinstruction merely
addresses an element in the MYRA memory; whea
the element is accessed, it produces the gating signals which cause the arithmetic unit to perform the
desired functions. In addition, it provides gating
pulses which fetch the operand (if needed), increment the control counter, and fetch the next instruction. Thus, the housekeeping is distributed upon the
disks, so that each instruction is essentially independent of the others.

1965

No clock is needed because each disk, as it completes its switching, causes the next instruction to
be obeyed (i.e., the next (or the same) element to
be addressed). Thus, the machine is not synchronous. On the other hand, it does not have the generally accepted earmarks of an asynchronous machine.
Therefore, a new term has been coined to categorize this species of system: Autochronous (or selftimed).
As a consequence of autochronous operation, if
the driving mechanism for a particular disk should
fail, the machine will halt upon attempting to obey
the corresponding instruction, rather than continuing to perform incorrect calculations as might a
clocked machine when an instruction malfunctions.
It wi)l be seen that the picoprogramming scheme
may be viewed as a logical extension of a microprogrammed system, but on a more basic level. The
required instantaneous levels on all the gate leads
may be considered as bit values of a picoinstruction
which has a word length equal to the number of
gate leads. Picoinstructions are stored at constant
radii upon a MYRA disk, in the proper order to
perform the desired task. The advantages of the
MYRA element are that the picoinstructions are
automatically accessed in sequence (without the necessity of a picoinstruction counter), and successive
one's or zero's in the same bit position are automatically "slurred" together, so that, for example, two
successive one's produce a pulse of duration twice
that of. a single one preceded and succeeded by
zero's. Thus, race conditions and static hazard difficulties are easily avoided.
Advantages

The advantages of a picoprogrammed system are
as follows:
1. Tailorability: Since the instructions are
in effect memory elements they can be
plugged in anywhere, and only their address (order code) changes; a wide range
of instructions (greater than the number
which the system can accommodate) can
therefore be offered. Thus, for example, a
customer could choose any 64 of perhaps
200 available instructions. This produces
about 1.6 x 1053 combinations (in practice,
since some software, e.g., an assembler, is
usually desired, a standard nucleus of instructions might be provided, and the free-

95

PICOPROGRAMMING: NEW APPROACH TO INTERNAL COMPUTER CONTROL

2.

3.

4.

5.
6.

dom of choice would be somewhat reduced; even so, it should be possible to offer a range of machines extending from
highly bit-manipulative to highly computational with the same mainframe) .
Post-Alterability: As a corollary to item 1,
a machine in the field can be altered easily
if the customer decides later that his original
choice of instruction set is no longer optimum.
Graceful Failure: Because each instruction is independent, the failure of one will
not affect others. Thus, catastrophic (nothing works) failure should become a rarity.
Diagnosable: Because of item 3, it should
nearly always be possible to successfully use
some diagnostic routine. In addition, the
unique modularity of the control section
makes localization of a control failure easy.
Easily Designed: Disk wiring follows directly from the required timing diagram.
Housekeeping Processes: May take place
anytime during the instruction execution,
allowing optimum sequencing.

THE MYRA ELEMENT

ical positions of the looped portions as shown in
Fig. 1.2

IlJL

THICKNESS: 0.060"
WIRED CODE: 0 II 00100 (ith bit of 8 picoinstructions)
DRIVE LINE

to

OUTPUT

o
o

o

o

o
o

0
0
O.OIS"

O~

o
PROPAGATING
FLUX CHANGE
WAVE t=to.

------,

MYRA DISK SHOWING ONE
PICOPROGRAMMED WINDING

General

Figure 1. MYRA disk showing one picoprogrammed winding.

A brief description of the operation of the
MYRA element is in order. Already applied as a
semiconventional memory element, 2 where its natural propensity to produce sequential trains of
pulses is, to some degree, circumvented, this ability
is instead capitalized upon in the picoprogramming
approach.
When a step of voltage is applied across a drive
winding passing through the central aperture of a
square loop apertured ferrite disk in the proper remanent flux state, a current ramp will result, and a
propagating flux change wave will nucleate at the
central aperture, and propagate outward at a uniform velocity. As this wave traverses a portion of
material singly looped by a conductor, it produces
across the conductor an emf which, in a properly
proportioned and constituted disk, is large enough
to drive logic circuits directly. This voltage pulse is
proportional in temporal length to the physical
length of the looped portions of the disk. Its position in time relative to other looped portions of the
disk is likewise related directly to the relative phys-

When the disk is reset by a drive and current
in the opposite sense, a flux change wave in the opposite sense nucleates at the center (as before) and
propagates outward, producing an emf in the opposite sense at the outputs of each looping conductor.
If, as is usually the case, the logic elements driven
are sensitive to only one polarity of input voltage,
they will react only to the train of pulses produced
during say, set, and not to their mirror image about
ground produced during reset. However, other
windings can produce the proper polarity during
reset and be ignored during set. Thus, the reset time
is not wasted, for useful pulses differing from (or
identical with) those during set can be produced.
This is somewhat analogous to playing both sides of
a phonograph record.
Pulse widths as brief as 250 ns can be produced
directly, and 125 ns pulses are obtainable from a
disk with phased radii. The output impedance of
the disks is less than 10 ohms, so that many gates
may be driven without buffering, and even coaxial
cable can be driven directly.

96

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

System .Considerations
Many instructions require a waiting period in the
midst of their execution (e.g., for an operand fetch
from memory). It is easily possible to accommodate such delays between the set and reset of a disk.
Instructions also differ in their total time of execution. While it is possible to force all instructions
to occupy the same time (dictated by the lengthiest) , it is more efficient to allow differing execution times. T~is is effected by making use of disks
which either physically or operationally differ in
dimensions; the operationally small disks are of the
same physical dimensions, but are only partially
switched.

WORKING PROTOTYPE

General Description

Figure 2. ADD instruction card.

A feasibility model prototype dubbed PUPP
(Prototype Utilizing Picoprogramming) was constructed. Its instruction repertoire includes:
1. ADD

add contents of addressed memory location to contents of accumulator.

STR

store contents of accumulator in
addressed memory location

2.

3. SFT
(a) Right

shift contents of accumulator
one binary place to the right

(b) Left

shift contents of accumulator
one binary place to the left

4. SKP

skip next instruction on non-zero
accumulator

5. PCH

punch (on paper tape) contents
of accumulator

6. NOP

perform no operation, proceed to
next instruction

7. HLT

cease activity

Only a four instruction repertoire can be accommodated at once, one of them necessarily HLT.
Each instruction is implemented in a single pluggable circuit card as shown in Fig. 2 and the instruction cards are completely interchangeable; the same

instruction in a different location performs in exactly the same fashion, the only difference being
that its order code (i.e., its address) changes.
HLT is a special case: the address corresponding
to its order code is an empty location. When an attempt is made to access .an empty location, all activity ceases, and the machine halts. The cessation
of activity is quite literal because of the absence of
a clock.
All flip-flops in the system are of the set-reset
variety. Thus, the double rank instruction location
counter requires four timed pulses for address incrementation; similarly, the accumulator is double
rank. Thus, the system would be considered fourphase if a clock were used.
Memory is provided by flip-flop registers. The
word length is a modest four bits, but the control
signals are essentially identical with those necessary
for a -full size machine.

Instruction Implementation
The implementation of a typical instruction,
ADD, will be discussed.
The pulses which this and all instructions must
provide are those necessary for housekeeping, that
is, incrementing the instruction location counter,
fetching the next instruction, and providing a pulse
which causes the next instruction to be obeyed (addressed). (See Fig. 3.)

PICOPROGRAMMING: NEW APPROACH TO INTERNAL COMPUTER CONTROL

SET

o
CLEAR AUX. COUNT REG.

---

GATE UP COUNT

I

2

+I

RESET

4

5

6

7 \/ 0'

2' ?J

4'

5'

e' 7' \
....

l"""-

I--

DOWN

-

t!)

z
0::

r--

CLEAR INSTRUCTION REG.

UJ
UJ

I-- I--

FETCH & GATE INSTRUCTION

~

UJ

U)

:::>

r--

SET COMPLETED

o

:I:

r--

RESET COMPLETED
SUSTAIN SET

I'

-

CLEAR COUNT REG.
GATE COUNT

a

97

-I--

SUSTAIN RESET

f-....
r--

CLEAR AUX. REG.

-I--

GATE UP ACCUMULATOR

-I--

r--

o
o

-

CLEAR ACCUMULATOR
GATE ADDER TO ACC.
GATE AUX. REG. TO ADDER

c(

o

r--

I-:
ILl

r-- r--

:::>

a

Z

....

:::>

Figure 3. Pulse trains produced by one picoprogrammed MYRA disk to execute ADD (250 ns/division).

In addition to the above, there are some housekeeping pulses which are unique to the picoprogrammed implementation; among these are the sustainers, which are logically combined with a test
pulse to assure the health of the driving circuits independent of the remanent state of the accessed
disk. Normally, an accessed disk will always be in
the proper remanent state to provide a relatively
high impedance to the driving circuit. If, however,
a malfunction (e.g., a power failure) should upset
this arrangement, a driving circuit might attempt to
switch an already-switched disk, and endanger itself; to prevent this, a narrow test pulse is first applied, then, if the device is in the proper state, the
sustainer pulse sustains the drive; otherwise the
drive ceases with no damage done. A SET COMPLETED and RESET COMPLETED pulse is also
provided to inform the circuitry that the disk has
finished setting or resetting, respectively.
Each instruction disk must, of course, provide
pulses (in addition to housekeeping) which are
unique to it; these are shown in Fig. 3 for ADD.
This timing diagram, which in a conventional
sequential circuit control design would mark the
beginning of the design problem, marks instead the
completion of the picoprogramming design problem .. T4is is true because the timing diagram is essentially identical to a cross-section of a wired
disk, with a correspondence between time and radi-

al position, and voltage and axial position of the
wire.
It is, of course, understood that a control wire
which performs some function such as Clear A~cu­
mulator will loop some portion (or portions) of all
those disks which require clearing of the accumulator. Since only one disk can ever be in the act of
switching, oring is performed by this common wire;
this wire plays the same role as a sense wire in a
conventional core memory, except that it fails to
loop all memory locations (in general).
In Fig. 2, the windings for the ADD instruction
can be seen. The two multiple turn windings are the
drive windings, one used for setting, the other for
resetting. These are the only multiple turn windings
necessary. Note how few of the radial sets of apertures are populated with wires.
The instruction card is constructed with the
heavy current drivers upon it to minimize the areas
of high-current loops. This has the added advantage of making each instruction autonomous with
respect to failure because any component on the
card can fail without disturbing the remainder of
the machine.
The disks could be driven on a matrix basis
(though, of course, not by coincident current), but
the economic saving would not be significant, the
noise problem could become severe, and the localization of failure advantage would be lost.

98

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

Results

PUPP has logged over 3,000 hours of successful
operation running a Markov Chain program at
speeds not less than 200,000 instructions per second, and up to 300,000 instructions per second.
Complete interchangeability of instructions is
demonstrably realized and electrically as well as
physically smaller disks are successfully employed.
Self-induced noise is a non-existent problem;
instruction cards reside comfortably beside logic
cards.
Forced air cooling is used in the instruction card
area.
A later instruction card design is shown in Fig. 4.

1965

ond disk. The second disk performs one cycle of the
operation, decrements an operation counter and
tests for completion of the operation; this is the
Cycler Disk This disk readdresses itself if the test
indicates that the operation is incomplete; when the
disk has cycled a sufficient number of times to
complete the operation, it addresses the third disk
The third, or Clean Up, disk performs the remaining housekeeping operations: fetching the next instruction, etc. In addition, it performs any operations necessary for, and unique to, the completion
of the instruction.
One disk could suffice for realization of a cyclic
instruction, but it would require extensive inhibition logic to prevent the start-up and clean-up
pulses from occurring during the cyclic portion of
the operation, etc.
FUTURES
Picoprogramming should be applicable to a wide
range of computer sizes because of its mix of advantages. It should make a stored program approach
feasible for very small systems because of its economic advantages; it should substantially tilt the
rule-of-thumb balance between the costs of a
processing unit and its control in such systems. Its
flexibility and diagnostic advantages should make it
attractive in rather large systems as well, particularly in multiprocessor arrangements.
ACKNOWLEDGMENTS

Figure 4. Improved instruction card.

Cyclic Instructions

There is a relatively small class of instructions
such as Multiply, Divide, Shift N, etc., which are
cyclic in the sense that the same sets of pulses must
be made available repetitively. These instructions
can be handled most easily by a set of three disks
per instruction. The first (Set Up) disk performs
the set-up functions, indexing, fetching the operand, placing it in the proper register, and setting
certain count flip-flops; it then addresses the sec-

I wish to acknowledge the encouragement of this
study by J. E. Fulenwider and E. L. Scheuerman,
the cooperation of Dr. M. E. Dempsey and R. J.
Nin, and the very able services of J. R. Holden.
REFERENCES
1. For example, D. Fagg et aI, "IBM System/360 Engineering," Fall 1964 Joint Computer
Conference, Vol. 26, Part I, Spartan Books, Inc.,
Washington, D.C., 1964.
2. B. E. Briley, "MYRA: A New Memory Element and System," Proc. 1965 Intermag. Conference.

PRECESSION PATTERNS IN A DELAY LINE MEMORY
Stanley P. Frankel
Los Angeles, California

and
Jorge Hernandez
SCM Corporation
Oakland, California

INTRODUCTION

The circulated information bits compose 120 "characters" of 4 bits each. (Most of these are decimal digits.) These form three "visible" registers
called K (for "keyboard"), Q ("quotient"), and P
(the double-length "product") register. Associated
with each of these is a storage register of equal
capacity, which is not displayed. Many of the operations of the calculator involve the transfer of the
content of one register to another; from one visible
register to another or from a visible to a storage
register or conversely. These operations are facilitated by increasing the time of handling of each bit,
hence the time in which it is conveniently available
for such exchange processes, to cover the period in
which all possible exchange partners pass through
the delay line circuitry. The use of precession in the
COGITO memory was, in part, motivated by this
facilitation of the transfer operations.
It proved possible to provide the COGITO memory with a precession pattern which divorces the
rate of information handling in arithmetic processes
from the bit transmission rate of the delay line, and
thereby to permit choosing each of these rates to fit
the convenience of its associated circuitry. It is the

The SCM COGITO-240 is an electronic desk
calculator which makes use of one sonic (magnetorestrictive) delay line as its primary memory element.
Some 480 bits of information are held in the delay
line circulation pattern. These are represented in a
Pulse-No Pulse code; the insertion of a pul'se into,
or its emergence from, the delay line at a particular
moment indicates the value one for the corresponding information bit. The absence of that pulse represents the value zero. For a memory unit of this
type it is convenient to recirculate information at a
rate which is of the order of 10!i bits per second.
Thus a convenient value for the delay time of the
line, and for the time of one complete recirculation
of the stored information, is about one-half millisecond.
In the development of the COGITO design it
proved preferable to make use of a rate of handling
of information, as for example in the performance
of an arithmetic operation, which is substantially
smaller than the 10' bits per second recirculation
rate. One reason for this preference is as follows:

99

100

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

purpose of this report to describe that precession
pattern and also several simpler patterns which provide some, but not all, of the desired properties.
Many details of the system chosen were motivated
by unusual aspects of the COGITO design and are
not likely to be of widespread interest. They are not
discussed here.
TIMING CHAIN SYNCHRONIZATION
A series of flip-flops, the timing chain, serves to
count the successive one-microsecond-long time
intervals in which successive information bits are
delivered to and received from the delay line. The
timing chain is driven by a free-running oscil'lator, the "clock."
If the delay line were to be used merely to recirculate without change the 480 bits of stored information, then the task of the timing chain would be
merely that of subdividing one "memory cycle";
that is, the period of time required for one recirculation of the stored information. That is, in fact,
the task of an early part of the timing chain which
serves to distinguish one from another of approximately 480 "clock periods" into which a memory
cycle is divided. By reason of the precession system
a longer period of time, called a "machine cycle,"
becomes significant. The later part of the COGITO
timing chain serves to count the 60 memory cycles
in each COGITO machine cycle.
In a delay line memory of this kind there arises a
problem of synchronization; that is, of ensuring that
information-bearing pulses emerge from the delay
line in an accurately controlled phase relationship
with the clock oscillation. A straightforward way of
ensuring synchronization is to impose rigid control
on the frequency of the oscillator and on the delay
time of the line, and to adjust one or the other of
these parameters so as to bring about the desired
phase relationship. As a measure of the necessary
rigidity of control it may be noted that in a machine like COGITO a long-term drift in either
parameter of 0.1 percent would be intolerable.
HindalP has described a method of synchronization which obviates the need for rigid long-term
stability of these parameters. He uses a delay time,
and therefore also a memory cycle length, which is
substantially longer than the time required for the
insertion of the entire body of stored information
into the delay line. In each memory cycle a "marker
pulse" which is distinguishable (for example, by

1965

greater magnitude) from the information pulses is
set into the line before the insertion of the stored
information. After the entire block of stored information has been received from, and reinserted into,
the delay line there occurs a "silent period" in
which no further information is received from the
line. During the silent period the clock oscillator is
disabled; that is, its oscillation is suppressed. The
emergence of the marker pulse from the delay line,
somewhat later, marks the end of the silent period
and brings about the release from inhibition of the
clock oscillator. The timing of the succeeding activities is controlled by the now-enabled clock.
These succeeding activities are: the insertion into
the line of a new marker pulse, the receipt from and
the reinsertion into the line of the pulses representing stored information, the disabling of the oscillator
for the following silent period, etc.
COGITO makes use of a method of synchronization which is distinguished from that of Hindall in
that. the marker pulse does not differ from the information pulses in magnitude or the like. Rather it
is recognized as the marker pulse by reason of its
emergence from the delay line during a silent period. That is, the first pulse to emerge after the clock
has been disabled is accepted as the marker pulse
and terminates the period of inhibition of the clock
oscillator.
The silent period provides a convenient reference
point for the description of the memory cycle. In
the following the term "memory cycle" will be used
to refer to a period of time which begins in one,
and ends in the next succeeding, silent period.
With either the Hindall or the COGITO method
of synchronization the oscillator frequency and the
delay time of the line may, without harm, drift
gradually; the duration of the silent period will
change continuously to accommodate these drifts. (It
must not, of course, be all'owed to shrink to zero.)
The possibility of continuous change in the length
of the silent period, consistent with the desired synchronization, arises from the suppression of oscillation of the clock. During the silent period all phase
relations from the previous memory cycle, in which
a marker pulse and the block of information pulses
were inserted into the line, are forgotten. After the
silent period the phase of oscill'ation of the clock is
determined by the time of emergence of the marker
pulse and is thus consonant with the times of emergence of the information pulses. Although these two
methods of synchronization provide tolerance of

101

PRECESSION PATTERNS IN A DELAY LINE MEMORY

gradual changes in the two parameters discussed, a
sudden change in either, that is, a substantial
change occurring within one memory cycle, would
still lead to malfunction. Fortunately, such sudden
changes are much more easily prevented than are
long-term drifts.
PRECESSION PATTERNS
In a simple recirculating memory using
GITO synchronization the duration of the
cycle is equal to the delay time of the line,
with its associated circuitry, since each

the COmemory
together
pulse is

reinserted into the line simultaneously with its emergence. The word "simultaneously" must not be
interpreted very literally, since the time of traversal
of the associated circuitry is substantial. More precisely: the recognition of an emerging pulse permits
the introduction into the line of a pulse which is of
well-standardized magnitude, duration, and phase
with respect to the clock oscillator. Figure 1 shows
the simple recirculation without precession of a
marker pulse and a group of information pulses,
with the emergence and reinsertion shown as
"simultaneous" in this conventionalized sense.

CLOCK
OSCILLATOR

SILENT --__.o

PULSES
EMERGING
MARKER

BITS- 51

VI

52

V2

S 23sa

V23sa 5340 V240

51

VI

PULSES
REINSERTED
MARKER

Figure 1. Recirculation without precession.

One-half of the 480 bits of memory held in COGITO, called "V-bits," represent the numbers
held in the 3 visible registers while the remaining
240 bits, cal'led "S-bits," form the storage registers. One S-bit and the corresponding V-bit
form a "bit-pair." It proves convenient to handle
the two bits of a pair together, for the most part,
and to make them available for manipulation over
periods of time considerably longer than a few microseconds. A simple way in which that can be
done is illustrated in Fig. 2. The information bits
which emerge from the delay line in the first memory cycle are named
sl,vl,s2,v2, ... ,s239, v239,s240,v240
in the order of their appearance following the
marker pulse. The first two bits, sl and vI, form
one bit-pair; the following two another pair, etc.
As the first two bits emerge they are captured in
two flip-flops, S and V respectively, and are not
simultaneously reinserted into the delay line. The
following 478 bits are reinserted immediately upon
emergence. Following the insertion of bit v240, the
bit (s 1) held in S is inserted, and after it the bit

(vI) is inserted into the line from flip-flop V. Only
then is the clock oscillator inhibited in order to begin a sHent period. The marker pulse which
emerged immediately before s 1 was not reinserted
immediately but was inserted only at the time of
emergence of the second information bit, v 1. In
that way the introduction of a gap between the
marker pulse and the first information bit is avoided. In the second memory cycle the information bits
emerge in the sequence
s2, v2, s3, ... , v239, s240, v240, sl, vI
and the first two bits, s2 and v2, are captured in S
and V and are held for later reinsertion in the same
way as the first pair was earlier, etc. It will be seen
that in each memory cycle the sequence of 240
bit-pairs is cyclically permuted and that after 240
memory cycles the original sequence has been restored.
Figure 2 has been drawn so as to emphasize
another feature of this simple precession pattern:
the duration of the memory cycle is greater by two
clock periods than that shown in Fig. 1. It is also to
be noted that the "early part" of the timing chain

102

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

FIRST MEMORY CYCLE
CLOCK
OSCILLATOR

5IL£NT--

PULSES
EMERGING
EMERGING

SI

VI

INFO.<
BITS
INSERT ED
PULSES INSERTED

~

S2

V2

53

52

n

V2

S3

V3~'- n

V240

V240 51

VI

V231 S240 V240 51

VI

SECOND MEMORY CYCLE

CLOCK
OSCILLATOR
SILENT

PULSES
EMERGING
EMERGING
IN FO.<
BITS
INSERTED
PULSES INSERTED

53

S2

V2

~
Figure 2. A one-group precession pattern.

must now distinguish 482 rather than only 480
clock periods following the appearance of the mark~
er pulse. Atypical activities occur in the first two
and in the last two of these.
In the system of Fig. 2 each V-bit is held in
flip-flop V throughout one memory cycle (perhaps
excepting the silent period) and is available there
for leisurely manipUlation, and one S-bit is simifarly held in S. After one machine cycle, consisting
of 240 memory cycles, all information bits have
thus been held and the original bit-configuration
has been restored. It did not prove convenient to
use in COGITO a machine cycle quite so long as
240 memory cycles ( about one-eighth of a second) and therefore a slightly more complex precession pattern was considered.
A further classification of the information-bits
held in the COGITO memory must now be described. Most of these bits represent the decimal
digits which constitute numbers held in the various
registers. Each decimal digit is represented by four
bits, called tl, t2, t3, t4 in order of increasing significance. (A simple 1,2,4,8, BCD representation is
used.) It therefore proves convenient to organize all
other information held-decimal point·positions, plus
or minus signs, etc.-in similar 4-bit characters.
Thus the entire body of stored information may be
divided into 4 equal parts; a group of 120 bits (60

bit-pairs) which are tl-bits, 120. t2-bits, etc. The
transfers of numbers from one register to another
respects this separation into four groups; in such
a transfer a t1-bit always remains a t1-hit, etc.
Thus it proves convenient to separate the body of
stored information into four parts, and to introduce a precession within each part separately. Such
a precession pattern is shown in Fig. 3.
To reflect the separation into four groups the 480
bits held in memory are renamed as follows. The
120 tl-bits are called
s11, vlI, s12, v12, ... ,s 160, v160.
Similarly the group of t2-bits carries the superscript
2, etc. In the first memory cycle (of a machine cycle)
these 480 bits emerge from the delay line in the order
named: the 120 tl-bits follow immediately after the
marker pulse, then the t2-bits, etc. The first information bit, s11, is copied into flip-flop S and is not immediately reinserted. Then the second bit, v11, is
copied into flip-flop V and a marker pulse is inserted
into the line at this time. (It is the first pulse inserted
since the silent period.) In the following 118 clock
periods the remaining bits of the tl-group are reinserted immediately upon emergence. Then, however,
when the first bit of the second group, namely s21,
emerges from the line it is exchanged with the content
of flip-flop S. That is, the emerging bit is set into
flip-flop S while the prior content of S is returned to

103

PRECESSION PATTERNS IN A DELAY LINE MEMORY

FIRST

MEMORY

CYCLE

CLOCK
OSCILLATOR

SILENT--

~

PULSES
EMERGING.

S4 60 v4so~---------

PULSES INSERTED

CLOCK
OSCILLATOR
---SILENT--~

PULSES
EMERGING
INFO.
BITS

<

EMERGING

INSERTtD

PULSES INSERTED

Figure 3. A four-group precession pattern.

the delay line. In the next clock period the content
of flip-flop V, namely v1 1, is set into the line and the
bit v2 1 is placed in flip-flop V. The remaining bits of
the second group are then reinserted as they emerge.
Similarly, the first two bits of the third group are
exchanged with the contents of flip-flops S and V
and the rest reinserted, and similarly during the emergence of the fourth group. After the emergence and
reinsertion of the last bit of the fourth group (060),
the contents of flip-flop S and V are inserted into the
delay line in two further clock periods in .the same
way as has been described for the simpler precession
pattern of Fig. 2. The bits thus returned to the line
are s41 and 01 respectively.
As can be seen in Fig. 3, the operations just described result in a cyclic permutation of the 60
bit-pairs of each group separately-together with a
rightward displacement of the entire pattern in the
same way as in Fig. 2. After one machine cycle,
consisting of 60 memory cycles, the original configuration has been restored. During that machine cycle each V-bit has been held in flip-flop V, and
each S-bit in S, for one-fourth of one memory
cycle (with the neglect of the silent period) .
In the discussion above attention has been directed to the circulation and precession of the bits of
information held in storage in a delay line. The
possibility that the value of an information-bit

may have changed by reason of an inter-:register,
or an arithmetic operation, etc., has not been mentioned. Each of the symbols used, such as v1 1,
should, however, be understood to represent merely
the name of a variable which may change its value
from time to time by reason of activities not described.
The precession pattern illustrated by Fig. 3 fails
to provide one essential feature of COGITO. Each
V-bit (that is, each bit of a "working register")
upon being picked up into flip-flop V must be
provided with opportunity for leisurely interaction
with the fourth bit to precede or succeed it in occupancy of flip-flop V (that is, the corresponding
bit in another register, with which it may be involved in arithmetic manipulation.) For this reason
a bit which has been held in V for a quarter of a
memory cycle (called a "bit period" ) is not, in
fact, returned to the precession pattern as has just
been described. Instead, it is set into a 4-flipflop shift register in which it remains easily accessible for 4 additional bit periods, that is, for an additional one memory cycle. A bit which is held in
storage in flip-flops in this way may be changed
in value in anyone of these 5 bit periods. After
this holding period the (possibly modified ) V-bit
is returned to circulation as illustrated in Fig. 4. By
reason of the general precession the time for rein-

104

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

CLOCK
OSCILLATOR

gap

Figure 4. COGITO precession pattern (shown for third memory cycle of a machine cycle). The information bits are
shown as ambiguous, pulse present or absent.

sertion of the bit which has been held out of circulation for an additional memory cycle is immediately before, rather than after, the, clock period in
which the bit held in S is reinserted. In the clock
period following the reinsertion of the S-bit no
pulse is set into the line, thus the bit pattern shown
in Fig. 4 has one-clock-period-long gaps there.
The "bit value" shown with these gaps is zero. The
omission of four bits from the pattern shown in
Fig. 4, which is otherwise like that shown in Fig. 3,
can be understood as arising from the fact that at
each moment four bits are held out of circulation in
the flip-flop shift register.

CONCLUSION
These examples illustrate the considerable flexibility of delay line storage systems provided with
simple precession patterns. It seems likely that similar techniques will prove helpful in many situations
in which the desired rate of handling of data is
smaller than that convenient for a delay line memory.
REFERENCES
1. L. D. Hindall, "Self Synchronous Delay
Line," United States Patent No.2, 783,455, issued
Feb. 26, 1957.

AN ASSOCIATIVE PARALLEL PROCESSOR
WITH APPLICATION TO PICTURE PROCESSING*
R. H. Fuller and R. M. Bird
General Precision Inc.
Librascope Group
Glendale, California

INTRODUCTION
In recent years, a number of hardware associative
memories had been designed and experimentally
verified. 1,2 These memories allow simultaneous
comparison of all stored data to external data. Data
may be read from, or written into, comparing
words. These memories, acting as peripheral devices to conventional computers, have been studied
for ?pplication to various tasks described in references 1 and 2. The concept of "associative processing," i.e., simultaneous transformation of many
stored data by associative means, has been described previously.3,4,5 This processing mode showed
promise in a variety of tasks, but was not efficient
when peripherally controlled by a conventional
machine. Novel machine organizations were required to fully exploit the potential of these techniques for solving poorly structured nonnumeric
problems, at which present-day machines are not
efficient.
This paper describes a novel Associative Parallel
Processor (APP), having an associative memory as
*The work repored here was supported by AF Rome Air
Development Center, Griffiss Air Force Base, N.Y., under
Contract AF 33 (602)-3371.

an integral part of the machine. Arithmetic algorithms are described which allow it to perform adaptive pattern recognition by evaluating threshold
logic functions. Novel algorithms allow simultaneous
processing of m~my operands in bit-parallel fashion.
The processor is a stored program device with a
powerful command set, and thus has general utility
in problems which allow a single set of commands
to be executed independently, and thus simultaneously over many data sets. These conditions frequently arise in nonnumeric data processing tasks
such as pattern recognition.
Parallel processing is accomplished within the
associative array of APP by the powerful technique
of "sequential-state-transformation," previously described by one of the authors.3 The parallel search
function of associative memories requires that comparison logic be provided at each memory word
cell. The APP, by moderate additions to this logic,
allows the contents of many cells, selected on the
basis of their initial content, to be modified
simultaneously through a "multiwrite" operation.
Content search and multiwrite are the primitive operations necessary to parallel processing by sequentialstate-transformation.
105

106

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

To illustrate the concept of sequential-state-transformation, consider an associative memory which
stores two operands, Ai and Bi, in each word of memory. We desire to add operand Ai to operand Bi
simultaneously in some subset of these words. Processing is serial by bit, and parallel' by word, starting
at the least significant bit of each field. Each word
has an auxiliary storage bit, Ci stored within the memory array. Bits within operand field Ai are designated
Aij (j= 1,2, ... , N), where N is the field length. Bits
in field Bi are similarly designated. The truth table
defining the addition is as follows:
State Number
1
2
3

4

5
6

7
8

Present State

Next State

Au

Bij

Ci

Bij

Ci

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
1
1
0
1
0
0
1

0
0
0
1
0
1
1
1

Note that variables Bij and Ci differ in their present
and next states only in states numbered 2, 4, 5, 7.
The search and multiwrite operations may be used
to perform the addition of all number pairs, starting
at the l'east significant bit, as follows:
1. Search words having Aij = 1, Bij = 1 and
Ci = O.
For these words multiwrite Bij = 0, Ci = 1.
2. Search words having Au = 0, Bij = 0 and
Ci = 1.
For these words multiwrite Bij = 1 and Ci
= O.
3. Search words having Au = 0, Bij = 1 and
Ci = 1.
4. Search words have Aij = 1, Bij = 0 and
Ci = O.

For these words multiwrite Bij

=

1.

Steps (1) through (4) are repeated at each bit of
the operands. Within each bit time, processing is
sequential by state over present states which differ
from the next. state in one or more variables. All
words in a given present state are transformed
simultaneously to the desired next state.
Sequential-state-transformations used to perform
the above word-parallel, bit-serial addition, is evidently a very general mode of associative processing. It allows transformation of memory con-

1965

tents according to any Boolean function of stored
and external variables. It makes full use of comparison logic, implemented at the bit level within an
associative array, and thereby simplifies logic required at the word level. It compares favorably with
other associative processing methods in both speed
and processor complexity.
In the next section we describe the organization
and command set for a processor using the sequential-state-transformation mode of associative processing. In the following section command routines
are given for word-parallel, bit-serial processing described above; and also for a novel mode of wordparaUel, bit-parallel processing which yields significant speed improvement over bit-serial mobes. The
pattern-processing applications is discussed last.
ORGANIZATION AND COMMAND SET
The addition operation presented in the preceding section is a typical example of the associative
processing technique. From it, several conclusions
concerning the desired structure for an associative
processor can be formulated.
1. The single primitive step in associative
processing is identification of all words
storing some configuration of binary state
variables, followed by binary complementation of some state variables within identified words. This primitive makes the
basis of an associative "micro instruction"
which, repeatedly executed with varying
parameters, can transform memory contents according to any Boolean function of
stored and external' binary variables.
2. Since processing is simultaneous over all
stored data, no explicit word address is
provided within an associative instruction.
Many words may be transformed in response to a given instruction. These words
are identified by search criteria contained
within the instruction.
3. Data is processed column-serially to minimize the number of state variables and
thus memory states which must be identified and transformed sequentially. Associative micro instructions thus address a small
number of bit columns in memory. Since
many consecutive bit columns are sequen-

AN ASSOCIATIVE PARALLEL PROCESSOR

tially transformed, efficient means for column indexing are required.
4. Several temporary storage or "tag" bits
within each word are useful to identify
words as members of various sets currently
undergoing transformation. The carry storage bit, defined for the addition task of the
previous subsection, is a tag bit. The location of tag columns are unchanged as successive data columns are processed.
5. Each word cell must have electronics, external to the memory array, which temporarily store the match status of the word, relative to the most recent search criteria, and
allow writing of selected bits in matching
words to either the one or zero state. Writing is simultaneous over all matching
words.
6. For generality, stored program control of
the associative processor is desired. Instructions are accessed sequentially from
control memory, with possible branching
as in conventional machines. Since no benefit derives from storing these instructions
in associative memory, the control memory
is a less costly location-addressed randomaccess memory. Having separate instruction and data memories, the access times
for each may be overlapped.
Elements of the Librascope processor are shown
in Fig. 1 This realization contains an associative
array, partitioned into data and tag columns
(fields), together with requisite word and digit
electronics. Instructions are read from a randoma---I

I

_ _ _ ...J

A LIMIT

B LIMIT

A COUNT

B COUNT

CENTRAL
-CONTROL

I
I

~-..,..--

I

I

I
I

-..,.--- --J.--- - - - - I

I

I
I

L...

I

I

I

t---- I--...,.-

I

WORD
CONTROL

MATCH
INDICATOR

~
I
I

RANDOM ACCESS
CONTROL MEMORY

TAG FIELD

DATA FIELDS

14-----'--WORD

----~

I
WORD
ELECTRONICS

ASSOCIATIVE ARRAY
CONTROL PATH -

-

-

-

DATA PATH - - - - -

Figure 1. Structure of the associative parallel processors.

the command as associative. The two adjacent bits
define the initial state of match flip-flops in word
logic units (Le., the detector plane). Other bits define search and rewrite criteria for the A field, the
B field, and for each of four tag bits. The rightmost bit controls rewrite into matching words or
their next lower neighbors. Functions of these bits
are described in Fig. 3.
To illustrate the utility of this command, consider the task of searching the associative memory

for words matching the data register over a field having it upper limit stored in the A limit register and
its lower limit stored in the A counter. Matching
words are to be tagged in tag bit 1.
The following command accomplishes the desired
tasks:

1Esi SLDWIS--W-SOW
~~---------

. A Control
B Control
Tag 1
The following routine 19ads data into each word
in the associative array. The word field to be writ-

109

AN ASSOCIATIVE PARALLEL PROCESSOR

WRITE NEIGHBOR CONTROL

NEXT
HIGHEST
NEIGHBOR

TO
WORD IN
MEMORY ARRAY
FROM
WORD IN
MEMORY ARRAY
NEXT
LOWEST
NEIGHBOR

SELECTION
TRANSFER
DP TO DR

'1...-_ _ _....

COMMON FOR
ALL WORDS
]

MAlCH STATUS GATE

1------... TO CONTROL UNIT

Figure 2. Word electronics.

ten is again defined by contents of the A counter
and the A limit register:
1. Set the match flip flop for word 0 to "1."
2.
1 N S L D W S - - - - S - W N
3. 1 N S L D W S - - - - S - W L
A Control B Control Tag 1
4. If not match, exit: otherwise go to (3).
Instruction (2) writes into word 0; instruction
(3) writes sequentialiy into each remaining associative word.
Nonassociative commands are provided to load
the A and B counters and limit registers, to branch
from linear instruction sequencing either unconditionally or when specified conditions are met, and
to input or output data. Nonassociative commands
are specifically defined in the illustrative programs
presented in the next section.
ARITHMETIC ALGORITHMS
In previous parallel processors4,5,6 arithmetic algorithms were typically executed over many operands simultaneously, but in bit-serial fashion. All

bits of an operand are stored within a single word
cell as shown in Fig. 4. For operations requiring
two operands, operands may be paired by storing
them in the same cell or by restricted communication between word cells (e.g., communication be. tween "nearest neighbors" only). This word-per-cell
( W / C) organization is efficient when all or
most operands in memory are processed by each
associative command.
An alternate data organization stores bits of an
operand in separate contiguous word cells as shown
in Fig. 5. A similar organization, independently
derived, was recently .described. The bit-per-ce.1l
(B/C) organization allows many operands to be
processed simultaneously in bit-parallel fashion.
Command execution is thus appreciably faster than
for the W / C organization, but each command is
typically executed over fewer operand pairs. Any
operands stored in the same set of contiguous word
cells may be simply paired. The B / C organization is thus efficient for problems which do not allow simultaneous processing of all operands by a
single command, and for problems in which each

110

PROCEEDINGS 0

<

~
~

8
ILl

>

~

0
0

~

<

a:3

(,)

0

(,)

0:
ILl
lZ

0:
ILl
IZ

~~

~I...JILl

(,)0

I\r---\J

I~ I

Eso

E~.

~

lsi s

I
SI L I

-d
Z

N

It)

'It

d

d

ci

~x

CI)

CI)

CI)

CI)

iii

l-

Z

Z

Z

l-

I-

Z
1&.1

0:

~

8

0

iii

iii

iii

iii

C!)

C!)

~ID

~
I-

C!)

;<
0
I

0

D

\I

I~I

I

IWIN

0

~

\/

\/

D

~

~~~~~~

~--

S - DON'T

I-

~
~
~
\ r - - - \ r-----\r-\

l.!ol S 1 0I 1~ I I 1].1 0 I Wl!.1 0 I ~ 1!.I 0 I.!.
IWIN
~IIIW SIIIW SlljW
SiLl

C!)

I-

(,)

~

O:fd

i·

I-

Z

C!)O:

0:

0
0:

0
0:
l-

Cl)1l..

0

...J

II..

o ILl
ILIZ

1965

FALL JOINT COMPUTER CONFERENCE,

...J

Z

I.!

l.!ol

I 0
SIIIW

N
L

I

WRITE

0- SEARCH FOR ZEROS
I -SEARCH FOR ONES

1 - - - - S- SEARCH
SEARCH

1- INCREMENT COUNTER
N - NO CHANGE IN COUNTER
W-WRITE

W- DON'T

WRITE

1 - ' - - - - 0 - SEARCH FOR ZEROS

1----- I - SEARCH
1----- 0 - SEARCH

FOR ONES
COMPLEMENT OF D. R.

' - - - - - D- SEARCH EQUAL TO D. R.

I - - - - - - - S - SINGLE COUNTER INCREMENT
~-----

L- INCREMENT COUNTER THROUGH LIMIT

1-------- S -SEARCH
L...-._ _ _ _ _ _

S-

DON'T SEARCH

E10 - CLEAR DP TO ZERO

EI. - CLEAR DP TO ONE
N

- NO CHANGE IN DP

o -ASSOCIATIVE

NORMAL- N

COMMAND

I -NON-ASSOCIATIVE COMMAND

WRITE LOWER NEIGHBOR - L

Figure 3. Format for associative command.

_________________________________________- J

1

ASSOCIATIVE
ARRAY
Figure 4. Word per cell data organization.

operand must be paired with many others at various
computational steps.
The processor organization and command set
described in the preceding section is equally applicable to W IC and RIC data organizations. Arithmetic
algorithms, approprite to each data organization, are
presented below.

WORD
ELECTRONICS

Consider first an algorithm for the W IC data
organization (Fig. 4), which adds contents of all A
fields to contents of respective R fields, leaving the
resulting sum in the R fields. Tag 1 is used for carry storage and is assumed initially cleared. The routine is as follows:

111

AN ASSOCIATIVE PARALLEL PROCESSOR

____

1

_ _ _ _- J

ASSOCIATIVE
ARRAY

WORD
ELECTRONICS

Figure 5. Bit per cell data organization.

Cell

Contents
B Field
Tag 1
S S 1 W N SSIWNSOW
S SOW N S S O W N S I W
S SOW N S S I W N S I W
S S 1 W I
SSO W I
SO W
If A Count> A Limit, continue; otherwise
jump to (0).
A Field

o

1

1

1

2
3
4

1
1

ESl
ESl
Esl
Esl

The routine first addresses least significant bits
of A and B fields and tag 1. Of eight possible states
for these variables, four must be transformed to new
states (see Introduction). Commands 0-3 accomplish the four required state transformations. Command 3 increments A and B column addresses. The
InstructionNo.
o 1 ESl
1 1 ESl
2 1 N
3 1 Esl
4 1 Esl
SIN
6 0 N

routine is repeated at each column in the A (and
thus B ) field.
A routine which performs the equivalent operation for operands stored in the B I C organization
(Fig. 5) is shown as follows:

A Field
B Field
Tag 1
S-1 WNS-O W N - - S-1 WNS-l W N - - S--W-S--W-SOW
S--W-S-OWNSIW
S - - W - S - l WNSI W
S--W-S--W-SOW
If DP =1= 0 jump to (3).

Lowest
Neighbor
Control
N
N
L
N
N
L

112

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

Instructions 0, 1, and 2 form the partial sum.
Instructions 3, 4, and 5 ripple all carries to comple.;
tion, as is detected by instruction 6. For a worstcase carry, N -1 iterations of steps 3, 4, and 5 are
required.
However, even when the number of parallel data
words is very large, the longest expected carry
string is significantly less than N -1 bits. Typically,
the foregoing algorithm is two to three times faster
than for the algorithm presented for the WIe configuration.
ASSOCIATIVE PATTERN PROCESSING
A number of linear threshold-pattern-recognition devices have been built using analog techniques. 8,9,10,11 Such devices are relatively fast and
inexpensive when applied to simple pattern recognition tasks. They are limited in the allowed
number of input variables and in the dynamic range
of weights assigned to these variables. Wiring complexity increases rapidly with the number of threshold units used. Modification of the weights assigned input variables or of thresholds is expensive
and time-consuming. Higher-order restructuring is
even more difficult. Analog units are thus not suited for classification of complex problems for which
many properties are measured, and where suitable
properties may not be known a priori.
The parallel processing capability of an associative processor is well suited to the tasks of abstracting pattern properties and of pattern classification

1965

by linear threshold techniques. Threshold pattern
recognition devices execute a given operation independently over many data sets, and thus allow the
paralleiism necessary for efficient associative processing. Associative processing affords the accuracy
of digital number representation, and is thus unlimited in fan-in and dynamic range of weights.
Weights are simply altered by changing memory
contents. Wiring and components are regular and
are thus amenable to low-cost, batch-fabrication
techniques. The set of measured pattern properties
is changeaable by changing memory contents, rather
than by rewiring as for analog units. Adaptation is
thus possible in measured properties as well as in
classification.
The Pattern-Processing Model

In this subsection, the pattern-processing model
will be briefly described. Figure 6 represents the
model of the pattern recognition system. "N" binary
valued sensor units are summed, with weights -t- 1,
into some or all of "K" thresholding logic units. A
threshold level, tk, is established for each logic unit.
If the sum of weighted inputs exceeds the threshold,
the unit becomes active and the output, b k , is one;
otherwise the output is zero. Each logic unit has a
weighted connection to some or all of N r response
units. Weights of active logic units are summed and
thresholded at each response unit. A pattern is
classified according to the set of activated response
units.

LOGIC
UNITS

DECODED
RESPONSE
UNITS
PROVIDE THE
CLASSIFICATION

Figure 6. Analog model of pattern recognition system.

113

AN ASSOCIATIVE PARALLEL PROCESSOR

vectors Ck. Logic unit outputs which yield the property vector Bi are formed in the detector plane. In
Phase (2), the inputs to the response units are calculated, using the vector Bi and the weights stored
in the appropriate portion of the associative memory. This yields the response vector Ri in the detector
plane. In Phase (3) , the response vector Ri is
compared with the target vectors T m stored in the
associative memory, and the classification of the
pattern associated with A i is determined. The three
processing phases are further described as follows:

Associative Realizations
The associative memory is organized into three
sections containing, respectively, the connectivity
'vectors Ck, 1 :::; k :::; K; the system of weights Wkn,
1 :::; k :::; K, 1:::; n :::; N r; and the target vectors
T m , 1 :::; m :::; M. The general organization of the
associative memory is shown in Fig. 7, which is
interpreted as follows: In Phase ( 1 ), the set of
logic units activated by the ith pattern is determined,
using the input vector Ai and the stored connectivity
INPUT
FROM
SENSOR
UNITS

AI

DATA
REGISTER

0

CONNECTII(ITY

Qk

0

WEIGHTS
Wkn

0

TARGET VECTOR

1m

DETECTOR
PLANE

ASSOCIATIVE
MEMORY ARRAY

Figure 7. Associative paranel processor realization of pattern recognition system.

(negative). That is, the element c+ jk is + 1 if there
is a positive connection between sensor j and logic
unit k, and is 0 otherwise. Similarly c- jk is 1 if there
is a negative connection between sensor j and logic
unit k. Thus, all connections from sensors to the
kth logic unit are represented by the row vector
Ck = C+k + C-k. Matrix rows C+ k and C- k are
stored in adjacent fields of as associative memory
word.

Phase (1). The set of sensor-logic unit connections
with weights 1 and - 1 may be represented by a
matrix [C] which is stored in the connectivity sector
of an associative memory in the format of Fig. 8.
The matrix [C] may be written

where [C+<-)] is a matrix with binary values whose
entries represent those connections which are positive

'I.

c~

'.

C:' - - -

I
I
I
I

-I
t,

II
I

I
ct.

--- ctJ ---

c~

ct. - - - C:.
I

I
I
I

I
I

c:)

-

I ciN -- I

I

I, ~
I

J

I I
I
C~I
I

Cjj - -- ciT

Co - - - Czl - - I

I

I

I

II

I

I

I

I

I

l

!

e;.

eKj

Sj

c;'

SI

;

Ii

I
I

i

I

I

I

I

CKj

Sa

I

j

-WORD-

Figure 8. Connectivity sector of associative parallel processor.

114

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

The input vector A i is used as a. key to interrogate matrix [C] in the associative memory in order
to determine the set of logic units activated by the
input vector Ai. Bit positions having aij = 1 are
interrogated for c+ jk or c- jk = 1. A binary count
of the number of bits in C- k which satisfy this condition is made in the accumulation fields Sc respectively of each word in Fig. 8. The procedure is again
repeated for C + k. Thresholds tk are prestored in
fields as indicated. After counting, the contents of
the T fields are subtracted from those of fields Sc.
Elements of Sc remaining positive under these operations correspond to activated logic units.
FoUowing these Phase ( 1 ) operations, a single
search for positive counts Sc sets the detector plane
to the match state at each word corresponding to
an activated logic unit. Contents of this segment of
the detector plane are transferred to the data register for use as search criteria in Phase (2).
Phase (2). This phase generates the output vector
ri, . . . , riNr corresponding to the ith (input) pattern. The components

any responding word denotes the name of the pattern, as in the following table, showing the target
vector portion of associative memory.
Target

Vector

Name

Word Address

1
r-1

1
rN

dl

f(d l )

d2

f(d2)

dM

f(dM)

2

r-1
M

r1

M

rN

A program was written for the described patternrecognition model using the instruction set presen~­
ed in the second section of this paper.
The pattern recognition program has an adaptive
or learning mode, requiring 120 instructions, in
which weights are adjusted to properly classify a set
of input patterns. The program for each mode is
invarient to pattern parameters used for classification. Since 82 instructions are common to the two
modes, only 131 instructions need be stored in program memory.

~

f;"/

I~

lI-

N, NUMBER OF SENSOR UNITS
10.000

~

~

Il-

... , riN r ).
Phase (3). The target vectors stored in the asso-

ciative memory (Fig. 7) are vectors with binary
valued components (ril, . . . , riN r) = 'Tm , where
m represents the known classification of the ith
'T
pattern. It is assumed that the K X N r matrix of
weight [W] stored in the associative memory have
been predetermined such that each of the M patterns
of interest is correctly classified, i.e., the output of
Phase (2) matches the appropriate target vector,
component for component.
Components (r\ . . . riN r) of target vectors 'Tm
are stored in a portion of the associative array at
locations derived from. "names" dm(i::S; m ::s; M)
of patterns associated with the target vectors (Fig.
7). A response vector generated during Phase (2)
is used as a search key to interrogate the target vector portion of the associative array. The location of

2

rN
r

Processing Times

100,000

are to be generated within the associative processor,
using b i k as an input from Phase (1) and the weights
Wkn stored in the weight section of the associative
memory, Fig. 7. Arithmetic operations, similar to
those discussed in the second section of this paper,
are then used to yield the response vector (ril,

1965

I-

100

~

.I~~
~ /1[1
l;jl I Ii

.u)
v;n
~!t~

10M'

~

I

~~
II

~ V

II-

~

If

~

I

II

I

r

I~

II

4

!5 S 78.IOOMS

I

. III

'11

I
2

N=64K

N'16K

N'4K
11j';K,

4

5878'·IS

2!

4

1878'IOS

T- TOTAL SOLUTION TIME FOR A SINGLE PATTERN IN SECONDS OR MILLI-SECONDS AS INDICATED

Figure 9. Time for associative classification of a single pattern as a function of the number of patterns and sensors
for the W Ie data organization.
*This cycle time is based on a magnetic film realization
of the associative array described in reference 12.

AN ASSOCIATIVE PARALLEL PROCESSOR

Based on the aforementioned recognition program, a word-per-cell data organization, and an associative command cycle of 0.8 microseconds, the
graph of timing efficiency shown in Fig. 9 was constructed. Note that "N" represents the number of
sensor units at the input and "M" the number of patterns distinguishable by the processor. The "MARK
I Perceptron" used 400 sensors in a 20 X 20 array
and 512 logic units.
It can be seen that the APP could solve this
problem in approximately 3 milliseconds using some
2000 words of associative storage. The APP realization offers significantly greater ease of alteration
and somewhat lower cost at a moderate increase" in
processing speed relative to the Mark 1.
CONCLUSION
The associative parallel processor, described in
this paper, achieves considerable generality with
simple word and bit logic through the use of the
sequential-state-transformation mode of associative
processing. Its range of applicability is increased by
novel arithmetic algorithms allowing simultaneous
processing of many operands in bit parallel fashion.
These algorithms allow efficient use of the processor for problems in which only a fraction of the
stored operands are processed by a given command.
Earlier processors4 ,5,6 were efficient only when nearly
nearly all operands were processed by each command.
An important feature of the parallel processor,
when used as a pattern recognition device, is the
ability to modify its functional structure, through
alteration of memory contents, without change in
its periodic physical structure. This adaptive feature
has importance in applications where patterns change
with time, or where the processor is used as a prototype of subsequent machines having fixed recognition capabilities. Further research is required to
fully exploit this adaptive capability.
Linear threshold pattern classifiers of the type
here presented are beginning to find many applications. To date, these types of pattern dassifiers
have been studied and/or implemented for character recognition, photointerpretation, weather forecasting by cloud pattern recognition, speech recognition, adaptive control systems and more recently,
for medical diagnosis from cardiographic data.
Other possible applications include terminal guid-

115

ance for missiues and space vehicles and bomb
damage assessment.
Currently the processor is being studied for
application to the tasks of job shop scheduling,
optimum commodity routing and processing electromagnetic intelligence (ELINT) data. In each
instance signfiicant speed gains have been shown
possible over conventional sequential digital computers. It is interesting to note that the processor
described in the second section of this paper may be
applied to this variety of tasks without significant
changes in organization or command structure.
ACKNOWLEDGMENTS
The authors take pleasure in acknowledging contributions to this effort by Mr. J. Medick and Dr. J.
C. Tu. We are most appreciative of support given
this work by Messrs M. Knapp and A. Barnum of
the Rowe Air Development Center.
REFERENCES
1. P. M. Davies, "A Superconductive Associative Memory," Proc. of the Spring Joint Computer
Conference, May 1962.
2. J. E. McAteer, J. A. Capobianco and R. L.
Koppel, "Associative Memory System Implementation and Characteristics," ibid., Nov. 1964.
3. G. Estrin and R. H. Fuller, "Algorithms for
Content-Addressable Memory Organizations," Proc.
Pacific Computer Conference, Mar. 1963, pp. 118130.
4. .
and
, "Some Applications for
Content Addressable Memories," Proc. Fall Joint
Computer Conference, Nov. 1?63, pp. 495-508.
5. P. M. Davies, "Design of an Associative
Computer," Proc. Pacific Computer Conference,
Mar. 1963, pp. 109-117.
6. R. G. Ewing and P. M. Davies, "An Associative Processor," Proc. Fall Joint Computer Conference, 1964, pp. 147-158.
7. B. A. Hane and J. A. Githens, "Bulk Processing in Disturbed Logic Memory," IEEE Trans. on
Elect. Comp., vol. EC-14, no. 2, pp. 186-195 (Apr.
1965).
8. R. Widrow et aI, "Practical Applications for
Adaptive Data Processing Systems," 1963 WESCON (Aug. 1963).
9. J. C. Hay, F. C. Martin and C. W. Wight-

116

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

man, "The MARK I Perceptron-Design and Performance," IRE International Convention Record,
1960 (Part 2).
10. C. H. May, "Adaptive Threshold Logic,"
Rept. SEL 63-027 (TR 1557-1) Stanford Electronics Lab, Stanford, Calif. (Apr. 1963).

1965

11. G. Nagy, "System and Circuit Designs for
the Tobermory Perceptron," OTS, AD 604 459,
Sept. 1963.
12. R. H. Fuller, J. C. Tu and R. M. Bird, "A
Plated Wire Associative Memory," NAECON Conference, Dayton, Ohio, May 10-12, 1965.

COMPUTER ORGANIZATIO'N FOR ARRAY PROCESSING*
D. N. Senzig and R. V. Smith

IBM Watson Research Center
Yorktown Heights, New York

the logical characteristics of the problem. When
mUltiple AU's are all doing the same task, a single
control unit suffices. For example, one load instruction can cause all AU's to load their separate accumulators each from a different part of the array.
Facility must be provided to inhibit some of the
AU's when exceptional conditions are being handled by the others, or when the number of pieces of
data to be processed is smaller than the total number of AU's available. A suitable paralleling of separate memory units must also be provided to yield
data at the rate required by the AU's.
The cost and speed of an array processing computer depends on the speed of the memories and the
circuitry used, and also on the number of AU's provided. Speed can be characterized by the maximum
rate at which bits can be brought from the memories and processed. Studies to date have indicated
that higher bit rates at proportionately lower costs
are possible with given types of hardware by using
the array processing approach rather than the conventional types of organization.

INTRODUCTION
In spite of recent advances in computer speeds,
there are still problems which make even greater
demands on computer capabilities. One such problem is that of global weather prediction. Here a
three-dimensional grid covering the entire world
must be stepped along through relatively short periods of simulated time to produce a forecast in a
reasonable amount of real time. This type of problem with its demand for increased speed in processing large arrays of data illustrates the applicability of a computer designed specifically for array
processing.
When arrays of data are being handled, it is usual to have to do the same calculations on each piece
of data. This kind of problem is suited to a machine with multiple arithmetic units (AU's) since
each can be carrying on the same task on different
parts of the array. We are fast approaching the
physical limit in speed for computer AU's. On the
other hand, a number of AU's can operate simultaneously to increase the amount of work done per
unit time. The speed and number of these units can
be selected to suit the economics of the case and

VAMP ORGANIZATIONAL CONCEPTS
The VAMP (Vector Arithmetic Multi-Processor) computer will be described independent of

*This work was supported by the Advanced Research
Projects Agency of the Office of the Secretary of Defense
(SD-146).

117

118

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

technology in order to stress organizational concepts apart from arithmetic execution times. However, the ideas described below were tested in a
simulator where details such as instruction format,
word length and number of AU's are fixed.
The VAMP computer consists of three major
units: the Mill, the Memory and the Control.

I

VECTOR ACC.

I!

2

z

W
W

a:
0

(/)

TOI FROM
MEMORY

0
0

, ~) of members
of X to zero set their logical result into u where
individual elements can be set or tested. An interchange of the contents of sand u allows such results
to become the screen.

COMPUTER ORGANIZATION FOR ARRAY PROCESSING*

The effective use of structured operands (vectors
and matrices), depends upon the ability to extract
and reinsert certain elements or groups of elements.
This restructuring depends on selection of elements,
which is a binary operation (i.e., to select or not
select), and is conveniently specified by the bit vector
u. Two operations for restructuring data arrays are
included-compress and expand. The following discussion of the operands is based on I versons's description. I
The compress operation defined on an arbitrary
vector a and a compatible (of equal dimension) bit
vector u is denoted by c ~ ul a and is defined as
follows: the vector c is obtained from a by suppressing from a each component ai for which Ui = 0.
Clearly, the dimension of c is equal to the sum of
the ones in u. For example, if u = (1, 0, 0, 0, 1, 1,)
and a = (1,2,3,4,5,6), then ula = (1,5,6). For
the VAMP instruction, the elements of a are the
numbers stored in the array X. Hence the dimensions of the operand vectors is assumed to be n. The
result vector, c, is stored in X. Denoting the sum of
components (ones) in u by i, then the first i, registers
in X contain the vector c, the remaining n - i are set
to zero.
The expand operation is expressed as c ~ ul a.
The vectors c and u are of a common dimension.
The expand operation is equivalent to choosing successive components of Cij from ai or according as
the successive components Ui are 1 or 0. For example,
if u = (1, 0, 0, 1, 1,) and X contains the numbers
(1, 2, 3, 4, 5, 6), then the result is X containing the
numbers (1, 0, 0, 0, 2, 3). Denoting the sum of components of u by i, the first i elements originally in X
will be preserved, and n-i· elements of the result are
necessarily zero.
The use of compress and expand can be illustrated in a weather problem. The radiation calculation
depends principally on the type of cloud and
amount of cloud cover. For efficient handling, separate arrays for each of the various cloud characteristics should be created by compression. Then all
arithmetic units can be put to work on one such array after the other, all doing the same operation at
anyone time. The separate arrays can then be reassembled into one by the expand and load under
screen control operations for use in the next procedure. Essentially these instructions partially recover
the advantage of making use of the average that a
conventional computer enjoys.
The vector accumulator w is a 2k-bit register. All

°

119

members of X (subject to s) can be added or multiplied together and the sum or product placed in w
(w ~ w + I j Xi; W ~ W X 1Ti Xi). Search instructions to find the maximum (or minimum) value in
wand the registers of X place this maximum (minimum) value into w.
Memory

The design of VAMP requires simultaneous access to n words in memory-one word for each AU
(Fig. 3. Several memory organizations are possible and these are based on the physical arrangements chosen. The result will be a functional arrangement, that is, an arrangement as seen by the
program.
One type of organization results when one physical word is used to feed more than one AU. One
reason for doing this is that the physical word
brought out at each memory access is large enough
to hold several functional words and therefore it is
more efficient to use all of them. If one physical
word does not hold enough functional words to supply all AU's, then several boxes can be accessed
simultaneously. The simplest approach is to group
boxes together and bring out the same physical
word from each in the group to feed all AU's. The
SOLOMON2 case is functionally similar to the one
above but, being serial, one bit of each physical
word in the group is sent to each AU and a succession of groups supply the succession of bits which
make up the functional word. In this case, the data
received by the AU's have a fixed spatial relationship to each other. Functionally it is as if each SOLOMON AU had its own memory and accessed the
same word from it at anyone time as all the others
did from theirs. To ease this restriction, provision
may be made for units to access words in their
neighbor's memories, proceeding in step as before.
This results in the concept of a matrix of processing
elements (arithmetic units, each with a memory) as
in SOLOMON.
For an n arithmetic unit VAMP, 2j separate memory boxes are required (2i ~ n). Assuming a total of
2m words of memory, the addressing is set up so that
the least significant j bits of the m bit address select
the memory box. The most significant m - j bits of
the address then specify the particular word in the
box.
V AMP addresses memory in two modes. In the
vector direct mode, the instruction specifies an initial

120

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

address ao and an increment d. The n addresses ao,
ao + d, ao + 2d, ... ,ao + (n - 1) d are generated.
Since the number of memory boxes is a power of
2 and at least as great as n, an odd value of d will
result in all addresses being in different boxes. The
most usual cases arise from proceeding along a vector or a column of matrix so that d = 1, or along a
row of matrix so that d equals the length of a column.
If the columns are of even length, an additional dummy members can be added to achieve an odd number. Should the program require the use of an even
value of d, it will still be accepted, but with consequent loss of time. A test is made to determine if
d = O. If so, the same word is transferred to all AU's
without attempting to access the memory more than
once.
Addressing in the vector indirect mode uses a set
of n addresses in memory. These addresses are
fetched into Z, but they are then fed to the memory
address registers to bring out n words. Any set of
addresses may be used so that any desired set of
words, possibly including repeats, will be fetched
or stored. The vector indirect mode will generally
lead to multiple requests from the same memory
box. This will result in less than maximum speed;
however, it will be faster statistically than executing
n separate instructions, one for each word to be
fetched or stored.
The SOLOMON scheme has certain physical advantages. It does not require as many memory boxes to avoid memory access conflicts (but to obtain
a suitable memory size, it may need just as many).
The number of bits to access the AU memory is
less than it would be if the entire physical memory
were adressable.
The V AMP scheme requires hardware and time
to produce the address vector. Functionally, the bus
between memory and AU's is an electronic cross
bar switch to gate the n addresses to the memory
units, and an electronic cross bar switch to gate the
n data words between the memories and the n
AU's.
Simulation showed that the memory bus hardware for VAMP can be significantly reduced by
time-sharing a small number of transfer lines (typically 2 or 4) in combination with a simple anticipatory control. This would allow decoding and
address generation to be overlapped with the execution of the previous instruction. Thus, when considering the entire hardware inventory of a machine of
this type, the increase due to the incorporation of

1965

the flexible memory of VAMP should be small.
Also, this is a one-time cost which will be offset by
savings in programming which is continuing activity.
The VAMP memory organization results in a
common functional memory with no relation between a given AU and a section of memory. The
SOLOMON organization yields individual functional memories and fixed addressing. The former
has greater functional advantage than the latter
since AU's have access to all of memory, not just to
the part of it which is their own and their neighbors'.
The flexibility of its common functional memory
means that VAMP will adapt easily to automatic
programming. Computation can proceed in essentially the same way as has been conventionally
done, but n items will be handled at a time. With
SOLOMON-type addressing there will be severe
problems brought about by segmentation of the
memory into individual AU memories of limited
size and the consequent segmentation of the problem data. Boundary problems between the segments
and storage allocation, particularly dynamic storage
allocation, will be prominent difficulties.
Table look-up (where each AU may require a
different value from the table) is rather easily done
with VAMP through use of the vector indirect
mode. No scheme for doing this seems to be available with SOLOMON-type addressing and indeed,
indirect addressing appears to be incompatible with
this addressing scheme. At Livermore a problem
known as Coronet IV uses approximately 50 percent of the total running time of their STRETCH
computer, and 36 percent of the Coronet IV time is
used for table look-up and interpolation of table
values.
Control Unit
The control unit in VAMP includes the instruction fetch controls, instruction decoding index unit
and address unit. As in conventional computers, instructions are stored in the same memory as (and
are indistinguishable from) data. Instruction decoding and execution differs from the 7090, for example, only in that for the vector instructions, micro
operations are issued to n AU's rather than to 1,
and on a vector memory access an index register is
specified as containing an increment from which
the address unit has to generate n addresses.

121

COMPUTER ORGANIZATION FOR ARRAY PROCESSING*

FURTHER DISCUSSION OF THE V AMP AU's

floating point arithmetic in modern large-scale machines designed for scientific problems. The classical arguments for floating point in a conventional
machine would seem to hold equally in array processors.
If the Mill were designed as it functionally appears, that is, as a collection of "classical" AU's of
the type shown in Fig. 2, we would have a require-

One of the reasons for building faster computers
is to solve bigger problems. Bigger problems usually
mean longer chains of computation and, for a given
word length, more round-off error and scaling difficulties. The uncertainty of magnitudes in long calculations has led to the almost universal use of

Xi OUTPUT TO

ii-! AND~'+I

- - - . . - - - - -... TO/FROM MEMORY

FLOATING POINT SHIFT

t

L-____

~~~~~~~~

____

~~

____

LEAST
SIGNIFICANT
FRACTION
________________________________

~

~

EXECUTE
LINE FROM!I

Xi INPUT FROM
X'-IANDXi+1

Figure 2. Vamp arithmetic unit functional data flow.

ment that does not exist in conventional computers.
Namely, all arithmetic operations should run in step
and the time required should be data independent.
It is permissible, for example, for the execution of a
floating point add on the IBM type 7044 to vary
between 4 and 23 cycles with an average execution
time of 5.5 cycles. In VAMP this is not suitable.
Statistically, with many AU's the execution time for
all the reach completion will be close to the maximum and a data dependent execution time would
require extensive local control on each AU that we
prefer to do away with. Floating addition (and
floating subtraction), multiplication, and division
are the operations that normally have data dependent execution times.
In the case of multiplication and division, algorithms that give a data independent execution time

are well known. Multiplication by two bits per iteration and division by the nonrestoring algorithm
reduce the local control for multiply and divide to
merely picking the correct multiple (-1, 0,1,2) of
the multiplicand or divisor. The other control hardware, shift counter, etc., is common to all units.
In the case of floating point addition, a fast algorithm with execution time independent of data
can be developed by providing multiple shifts in the
alignment and normalization phases. In particular,
digit shifts of powers of two (1, 2, 4, 8 digits, etc.,
are provided. For alignment, assume the exponent
difference has· been obtained and is represented in
binary positional notation, the bits having weight
1, 2, 4, 8, etc. Then by having central control issue the micro operation "shift," the local control
need merely be sufficiently sophisticated to gate the

122

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

fraction through the shifter or to bypass it, depending on whether the corresponding bit of the exponent
difference is one or zero.
For normalization,. each AU must be provided
with control logic to determine if a one would be
shifted out of the most significant end of the accumulator by the shift micro operation about to be
given. Again the local control need only be suffi-

1965

ciently sophisticated to execute or ignore the common shift micro operation, based on the value of
the most significant bit.
Unfortunately, the schemes for floating point add
get to be very expensive when applied to each of n
AU's. Some compromise between multiple shift
gates and completion controls would undoubtedly
be made. For instance, the central control could re-

00=

d=

QO,d ARE SPECIFIED

BASE
ADDRESS
IN THE INSTRUCTIONS{ ADDRESS INCREMENT

LOGIC TO
COMPUTE n
ADDRESSES

t

INPUT FROM ZO
Z REGISTERS (VECTOR INDIRECT n.l:
MODE)
~

MEMORY
BOX

o

n LINES - I TO {
EACH Z REGISTER

MEMORY
BOX
I

••
ROUTING
TO MARiS

D···

:
Figure 3. Vamp memory organization.

MEMORY
BOX
2k_1

COMPUTER ORGANIZATION FOR ARRAY PROCESSING*

peatedly issue micro operations for a single shift,
stopping when all AU's signal completion. Another
reasonable alternative is to use a larger radix. Quaternary, octal or hexidecimal systems are obvious
candidates.
Assuming the engineering problems are solved
one is still left with the situation where a scalar
(one pair of operands) operation requires as much
time as a vector operation ( n pairs of operands).

123

Thus when a problem is heavily dominated by scalar operations there is little gaJn in speed.
Rather than attempt to work with multiple AU's,
a register array and a much smaller number of very
high-speed Execution Units may be used. The basic
procedure is to load the register array and stream
operands and results to and from high-speed Execution Units. Figure 4 shows the resultant organization of the Mill.

__ !:.I___ .
~(n,k)

REGISTER
ARRAY

---

TO/FROM MEMORY

~(n,2k)

REGISTER
ARRAY
~(

VERY HIGH SPEED
EXECUTION UNITS
(~nIl6)

1,2k)

!!(n,n

!

(n,l)

MILL

Figure 4. Vamp mill (n

=

number of functional AU's;k

The algorithms we use to obtain high-speed arithmetic operation are almost completely combinatoral
circuits. Floating add (and its variants) use the
alignment and normalization combinatorial shifter
described above.
The multiplier is based on the well-kno~n carry
save multiplier as recently extended by Wallace3 to
process all partial products simultaneously. Wallace's proposal is to interpret the contents of the
multiplier register as radix 4 digits and recode these
digits into the digits - 2, - 1, 0, 1, 2. The now easy
to generate partial products are grouped by threes
and gated into a tree of carry save adders. The outputs of each level of carry save adders are again
grouped by threes and gated into the next level.
Each level of carry save adders reduces the number
of summands by about a factor of 1.5. The two outputs of the tree are added to produce the double
length product.
The divide algorithm is an iterative method
based on that used in the Harvard Marck IV and
discussed by Richards. 4 The technique essentially
involves generating the divisor inverse by a series
of truncated multiplications.

=

number of bits per word).

During a vector. floating point multiply we could
have four sets of operands in motion at once. One
set is being accessed from the register array. One
set is being multiplied. A product is being normalized. A normalized product is being stored in the
register array.
In an effort to keep all operations times in the
stream to about the same duration the multiply tree
can be split such that some fraction of the multiplier
bits are processed simultaneously in each section.
While this may slightly increase the time to complete a single multiply, the cost will be· slightly decreased and overall speed will be significantly
increased.
As with multiply, a snapshot of Vector Floating
Add would reveal many sets of operands in motion
at once. Here we have the following possibilities:
Fetch operands from registers, determine the exponent difference, alignment shift, addition or subtraction, normalization shift, and store result in register.
To a good first approximation, for floating point
fraction lengths of about 32 bits these techniques
give approximately 16 times the speed and cost 16

124

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

Exponent
Fraction

times as much as the classical "parallel" algorithms
that use a parallel adder but do serial shifting and
process multiplier and quotient digits serially.
Hence, for given speed and cost to implement the
vector operations we obtain improved speed for operations involving less than n operands at a time.
The discussion of n arithmetic units will continue
but it should be kept in mind that we propose to
use n registers and a much smaller number of Execution Units. The exact number and form of the
Execution Units would be determined by word
length and the particular circuit characteristics.

S
G
N

1
8
9
1
1

16
Floating Point Word
Double Length Index
Single Length
Index/Address
Logical Acc./Screen

VAMP COMPUTER
This section describes V AMP with word length,
number of arithmetic units, number of memory
units, and instruction set fixed. A simulator to investigate the organizational concepts described
above was written to run on the 7094 for the particular organization described in this section. Since
our study was to investigate concepts, not circuit
and memory speeds, we will not supply such things
as multiply times and, hence, performance improvement factors over convenient targets.
The simulator was not complete in the sense that
interrupts were not programmed and I/O must be
done outside the simulator program. The simulator
will accept a program written in V AMP symbolic
assembly language, assemble, and execute the program.
The simulated VAMP assumes 16 functional arithmetic units and - 16 memory boxes. of 16,384
words each. The word length is 36 bits.' The floating poit number representation is the same as the
IBM 7094: the floating point fraction is binary,
sign and magnitude, the exponent is excess 128.
(-1.0, 0, 1.0 are represented in octal by
601 400 000 000, 000 000 000 000,
and
201 400 000 000 respectively). The data and instruction formats are given below.
Data Format:

Instruction Formats:

0-7
8-11
14-17
18
31
32-35

0P
0P
0P
0P

13
0-3 4-7

X2
12
X2
12
12
12

XO'
10

Xl
11
F 11

ADDRESS

F 11
F 11

ADDRESS
ADDRESS

11

Scalar RegisterRegister
Scalar RegisterMemory
Vector
TRANSFER
Control Words:

o

15, 16 -17,
-35

18
Interrupt
Conditions
Condition Mask
C

0, 1
8, 9

C

35
S
G
N
S
G
N

1965

Instr. Cntr.
Interrupt
Branch Adr.
Program Status Word
Program Status Word Mask
(C C - condition code)

COMPUTER ORGANIZATION FOR ARRAY PROCESSING*

VAMP has 15 index registers. The 10, 11, 12 and
13 fields of instruction formats refer to one of these
registers or, if the field is 0000, to an implicit register that contains an unmodifiable zero.
To keep all address calculations out of the Mill
the index units contains a complete set of arithmetic (add, subtract, multiply, and divide) and
Boolean (AND, OR, equivalence) operations. The
number representation in the index unit is 2's complement. The word length is normally 18 bits with
multiply producing a double length product and divide producing an 18 bit quotient and 18 bit remainder.
Memory Addresses are calculated from information specified in the F, 11, and Address fields. The
bit combination in the field 11 selects the index
register to be used in modifying the Address field.
The instruction is then executed as if its address
field contained the stated address plus the contents
of the index register.
Address modification is extended to include base
address indirect addressing. Base address indirect is
specified by a one in bit 13 of the instruction
(right right-most bit of the flag, F, field). An address is computed by adding the contents of the index register specified by lIto the address part of
the instruction to form a memory address. Bits
13-35 at this base indirect address replace bits
13-35 of the instruction register. The process then
repeats-a new memory address is computed for 11
and the address field. Bit 13 is examined for another level of base indirect addressing. The address
that comes out at the end of the chain of indirect
addresses is called the effective base address.
Vector instructions, i.e., those that do 16 operations simultaneously, use the effective base address
as the address of the first operand. The address of
the second operand is determined by adding the contents of the index registers specified. by field 12 to
the effective base address. Letting ao represent the
effective base address and i2 the contents of the index
register addressed by 12, the address vector, a, is of
dimension 16 and the components are (ao, ao + i2,
. . . ,ao + 15 i2). All values a ::;; i3 < 2 18 are valid.
There is another form of indirect addressing
known as vector indirect addressing. In this mode
the address vector is used, not to address the operands directly, but to address an address vector. This
mode is indicated by a 1 in bit 12 of the vector instruction format. Vector indirect addressing does

125

not proceed beyond 1 level; i.e., the address vector
fetched from memory is used as the operand address
vector without further modification. (When modification of the address vector is required it can be
fetched into the accumulator X and treated as
data.)
In scalar floating point or scalar boolean operations the 4-bit fields XO, Xl, and X2 refer to one
of the 16 double length accumulators. The contents
of the registers XO and Xl serves as operands and
X2 specified the regi,ster to receive the result. For
scalar register-memory instructions the contents of
the memory location specified by the effective base
address and the contents of the X register specified
by the X2 field serve as operands. The result is
placed in the X2 register.
To facilitate programming of loops, where one is
processing 16 elements at a time, three loop closing
instructions, VTILE (vector transfer on index low
or equal), VTIH (vector transfer on index high),
and VCTR (vector transfer on counter) are provided. These instructions combine stapping an index,
testing the index, and conditional branching. They
are made more powerful by having them set to the
"do not execute" state the screen bit of arithmetic
units which will not participate on the last iteration
when there are less than 16 items to process.
Looking at the instruction VTILE in detail, the
first step is to add 16 times the contents of index
12 to index 13 and put the sum in index 13. (The
mUltiply and add is done by simply shifting index 12
four bits left and adding Mod 2 18 .) Then, the new
value of index 13 is compared against the contents
of index (13 + 1) Mod 16.
If the contents of index (13 + 1) Mod 16 are
greater than the contents of 13 a branch is not taken
-the instruction counter is to be advanced by 1.
If the content of index 13 + 1 is less than or equal
ot the content of index 13 the branch is taken, that
is, the effective address is placed in the instruction
counter. The results of the test (> or ::;;) are also
noted for use in the following part of the VTILE
instruction .

The contents of index 12 are now added to 13 and
the sum Mod 2 18 is compared against the contents
of index (13 + 1) Mod 16. If the result of the comparison is the same as that on which the branch decision was made (i.e., both greater than or both less
than or equal) the screen bit 2 is not modified. If

126

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

the results of. the two comparisons are different, the
screen bit 2 is set to zero (do not execute state).
The contents of index 12 are now added to the
above sum.)If this sum Mod 2 18 bears the same relation to index (13 + 1) Mod 16 as did the addition
on which the branch decision was made, screen bit
3 is not modified. If the relation changes the screen
bit is set to zero. This process repeats until 15 additions have been done.
Note that screen bit 1 is never modified, screen
bit 2 may be modified at the end of the first addition, screen bit 15 may be modified at the end of
the 15th addition.
The VTIH instruction differs from VTILE only
in that the branch decision is reversed. If, after the
first add shift operation, the contents of index (13 +
1) Mod 16 are greater than index 13 we branch,
i.e., put the effective address in the instruction

.

MILL

1965

counter; if the contents of index (13 + 1) Mod 16
are less than or equal to index 13 the instruction
counter is advanced by 1. All other operations are
the same in VTILE and VTIH. The instruction
VTCR uses an implicit -1 as the increment and the
contents of the register 12 as the initial value. The
comparison is against an implicit zero. Other than
this the instruction is identical to VTIH.
The 15 additions required by VTILE, VTIH and
VTCR are performed by the same unit and in the
same way as addresses for a vector instruction are
generated.
The instruction set for VAMP has been designed
for the processing of vectors in memory, including
rows and columns of matrices. These will normally
have considerably more components than the number of AU's. Many operations such as compress,
search for largest, and sum and product reduction
(sum or product of all compnents) must operate

CONTROL

.Y,tlS,1l
!,tlS,!)
~

18 81TPATH

--9--3S BIT PATH
~

72 BIT PATH

Figure 5. The simulated vamp CPU.

over the entire vector even though only 16 are handled at anyone time. The instruction set is designed around this concept.
The simulated CPU is shown in Fig. 5. The w, s,
u, X and Z arrays perform the functions described
in the second section of this paper. The address
unit A contains three 18-bit registers and two 18bit adders. Like Z, A is not seen by the programmer. It is used by the control for index and address
arithmetic.

The right-most 18 bits of the program status
word, PSW, contain the instruction counter. Bits 16
and 17 of the PSW word contain the condition
code. The results of all index operations as well as
scaler operations in the Mill are used to set the condition code to indicate whether the result of the last
operation was zero, less than zero, greater than
zero, or overflowed. An instruction to test the condition code and branch accordingly is provided.
Bits 0-15 of the PSW and PSWM were not de-

COMPUTER ORGANIZATION FOR ARRAY PROCESSING*

fined in the simulation. They are reserved for interrupt indicators, interrupt masks, and the interrupt
branch address (the location where a new PSW and
PSWM are to be picked up from and where the current ones are to be placed).
The registers I-BUF and IRB in Fig. 5 are used
by a relatively simple anticipatory control. Instructions are executed in three levels. At level 1 the instructor is fetched from memory and placed in register I-BUF (instruction buffer). In level 2 the instruction op code is scanned to determine if it is a
vector arithmetic insturction or one of the vector
transfer instructions: VTILE, VTIH or VTCR. If it
is one of the vector instructions the necessary addresses are generated. If it is not a vector instruction, no operation is performed. In step 3 the instruction is executed. For most instructions steps 1
and 2 can easily be overlapped with the execution
of the previous instruction. Note however that in no
case are the contents of registers visible to the programmer modified until the previous instruction
has been completed. Thus if an interrupt occurs at
the end of the current instruction some unnecessary
work has been done but no procedure for recovery
of previous register contents need be included.
PROGRAMMING EXAMPLE
The following small FORTRAN problem is coded
in the VAMP symbolic assembly language:
DO 1 I = 2,59
L = A2(1)
1 Al(1) = C*A2(1)
+ B(L)

+ A2(1-1) + A2(1 +

1)

Al and A2 are one-dimensional arrays of 60 elements. B is a one dimensional array of 40 elements
which enter by indirect addressing. C is a constant.
The following instructions are used ( definitions
given above).
LDA

A, 11, F, 12
Load Address
Places the effective address into the index
register addressed by the field 12.
GPS
A, 11, F, 12
Generate Prefix in s.
Set the first a bits of the screen to one where
a is the effective address.
VLDX
A, 11, F, 12
Vector Load X
Load the contents of the memory locations
specified by the address vector into the most
significant half of X (subject to s)

127

VAND

A, 11, F, 12
Vector AND
AND each bit of X with the corresponding
bit in the memory locations specified by the
address vector (subject to s).
VLXI
Vector Load X Indirect
Replace the most significant half of X by
the contents of the memory location specified
by bits 18-35 of X. Note that in this version of
indirect addressing the address vector is assummed to be in X as the result of a previous
operation.
VSTX
A, 11, F, 12
Vector Store X
Store the contents of the 16 accumulators
(subject to s) in the memory locations specified by the address vector.
VFAD
A, 11, F, 12
Vector Floating Add
Algebraically add the floating point numbers
specified by the address vector to the floating
point numbers contained in X (subject to s).
The sums are normalized.
VUFA
A, 11, F, 12
Vector Unnormalized
Floating Add
Same as VFAD except the sums are not normalized.
VFMP
A, 11, F, 12
Vector Floating Multiply
Multiply the floating point numbers at the
memory locations specified by the address vector by the floating point numbers stored in the
most significant half of X register (subject to s).
The double length product appears in X.
VTILE
A, 11, F, 12, 13
Vector on Index
or Low or Equal
See description in section VAMP Computer.
BSS
A Block Started by Symbol
BSS is a psuedo-operation that reserves a
block of A consecutive storage locations.
OCT
Octal Data
OCT is a psuedo-operation that introduces
binary data expressed in octal form into the
program.
The VAMP assembly language program is shown
in Fig. 6.
CONCLUSION
The concept of an array processing computer is
due to SOLOMON. By taking advantage of the features inherent in interleaved memories, very highspeed arithmetic units, mUltiple register CPU's and
by adding a number of special instructions one ob-

128

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

tains a machine that has the functional capabilities
of SOLOMON but which fits within the framework
of a more conventional computer organization. Further, the ideas presented here should result in a machine which is applicable to a much wider range of
problems than SOLOMON.
There certainly exists a large class of problems
for which neither VAMP nor SOLOMON would
show any appreciable advantage over a more conventional organization. Compiling is probably the
best example of these.

LOCATION

OP

LDA
LDA
LDA
GPS
VLDX
VUFA
VAND
A2 CONVERTE D TO T
BEGIN

*

*
*

VUFA
VLXI
VFAD
VFAD
VSTX
VLDX
VFMP
VFAD
VSTX
V TILE
END TEST PR GRAM
DATA STORAG
C
Al
A2
B
TEMP
LOCB
FXZR
MASK

BSS
BSS
BSS
BSS
BSS
VFMP
OCT
OCT

1965

REFERENCES
1. K. E. Iverson, A Programming Language,
Wiley, 1962.
2. J. Gregory and R. McReynolds, "The Solomon Computer," PGEC, vol. EC-12, no. 5, pp.
774-781 (Dec. 1963).
3. C. S. Wallace, "A Suggestion for a Fast Multiplier," PGEC, vol. EC-13, no. 1, pp. 14-17 (Feb.
1964).
4. R. K. Richards Arithmetic Operations in
Digital Computers, Van Nostrand, 1955, pp. 279282.

ADDRESS, 11, F, 12, 13

1" , 1
1, " 2
58, , , 3

=

SET IR 1
SET IR 2 =
1
58
SET IR 3

=

SET SCREEN TO
16
LOAD A2(I), A2(I+.
A2, 2,,1
PLACE BINARY P
FXZR
REMOVE EXPONEI\
MASK
UNCATEDINTEGER
LOCB
A2+li 2,,1
A2-1 2,,1
TEMP",1
A2, 2,,1
C
TEMP",1
AI, 2,,1
BEGIN, , ,1,2

ADD LOC OF B(l) TO
LOAD B(A2(I), B(A2{Ii
ADD A2(I+l), A2(I+2), •••
ADD A2 (1-1). A2(I), ••• ,.
STORE TEMP. RESULT
LOAD A2(I), A2(I+l), ••• ,A
MPY BY C
ADD TEMP. VECTOR
STORE Al{I), ••• ,Al(I+15)
STEP INDEX CNTR 16

1
60
60
40
16
B
233000000000
400777777777

END

Figure 6. A .VAMP assembly language program.

MANAGEMENT PROBLEMS OF AN AEROSPACE COMPUTER CENTER
G. A. Garrett
Lockheed Missiles and Space Company
Sunnyvale, California

At this session it seems to me that you might be
interested in several of the more-or-Iess technical facets of the direction of a large aerospace computer installation. Consequently I will avoid competing with our environment by discussing the ubiquitous problems of recruiting, of personnel motivation, of obtaining cooperation among the members of the various computing groups, or even the
basic problems inherent in convincing our computer
folks that the whole computer center does not exist
for them at all, but rather as a service for the other
parts of our company.
Instead, I want to tell you today about a few of
the figures we have on the actual costs of
"Change"; then go into a few aspects of the
"Turn-Around-Problem" from the management
point of view; and finish with a few remarks on
what a computer center such as ours may reasonably expect in the future.
While there are many fields in which constant
change is the order of the day, the operation of virtually any modern computer center is faced with
adjustment to changing computers, changing computer languages, and changing software systems
with a frequency which is quite notable. In a recent
attempt to analyze the economic effects of such
changes, several interesting relationships have been
noted.

In the past, the speed with which a newly installed computer has been "loaded" has often been
of interest, but few figures have appeared which
treat as a dynamic quantity the relationship between the program checkout load and the production load. Such relationships must be known, however, before one can evaluate the effects of change,
since the purely static "before and after" pictures
tend to conceal many of the significant points.
In analyzing the dynamics of the situation, some
simple relationships have been postulated, and their
predictions compared with those historical data
which were obtainable at the LMSC computation
center.
First, it was assumed that the loading on a computer could be divided between check-out and
production, and that the ratio of these two would
vary with time from installation. Since the proportion of computer programs which run for production without previous check-out is vanishingly
small, it would seem reasonable that the load on a
newly installed computer initially must consist solely of program development work. From such a
starting point it follows that the ratio of production
to development will show a continuous increase until it either levels off with time, or the pattern becomes confused by changes in language, operating
system, or type of work processed by the center.

129

130

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,.

Both the ratio of production to development at
steady state and the rate at which this ratio approaches steady state must be determined in order
to understand and to evaluate the economics involved.
Historical data obtained subsequent to the installation of two types of computers, the IBM 709's
which replaced Univac 1103's and the IBM 1410's
which were installed to handle administrative systems, shows the patterns given in Figs. 1 and 2 respectively.
It can be seen that the data in both cases have a
basic similarity, and that the experience in general
seems to follow the same type of curve. The
smoothed curves themselves were obtained by assuming that the development load would be reduced

1965

half-way to the steady state load during each four
month period.
Data on the introduction of new computer languages have been somewhat more difficult to obtain, and tend to be less definitive. Hardware
changes are necessarily abrupt. Software changes
need not be. However, records have been found
which show the ratio of production to development
following a fairly general shift from Fortran I to
Fortran II on the IBM 7090's which started in June
of 1963. Since the scatter of these data is considerably greater than it was for the introduction of a
computer itself, and since figures are not available
for rework as a separate item, smooth curves were
not derived from the data. Instead, the curves from
Fig. 1, the introduction of the 709's, were plotted

100p-------------------~------------~~--------------------------~----~

80
~
Z
~

0

~

60

~

e;,
~

(j

 4-2-64-

Q)

~ 2.0

1il
>

«

@3-29-65
1108 - Exp. Ae

l.0

1108 - Exp. C e

0~===z====~==::=--L---L~1~10~8L-~Exp~.~B.~-~

o
Notes:
•

@

*

100

200
Daily Job Input to System

300

400

;

LOMUSS I Model Data - Manual Handling Times Excluded - Adequate Drum
Buffer Capacity Assumed.
= Actual Data - Manual Handling Times Included.
= With 400 Jobs Input, 59 Were Remaining in System at End of 24 hr

Figure 3. Analysis of UNIVAC 11 07 / q 08 t~rnaround. time
as function of workload (manual handlIng times extenor to
hardware system excluded for LOMUSS I simulation).

SYSTEMS ANALYSIS
The simulations were conducted primarily for
determining an 1108 system configuration for October 1965, but information obtained from the
1107 simulations in April was useful to the then
operating system.
With the workload characteristics remaining approximately constant, the model showed that a 3shift operation would be required when the workload rate reached approximately 250 jobs per day.
This can be seen in Fig. 2 when a linear interpolation is made between the I/O queue plots of 200
and 300 jobs per day. That is, a queue of jobs will
still be on the drum after midnight, which is the
end of the second shift, if the workload rate exceeds
250 jobs per day.

165

There were some manual procedures that were
immediately implemented to minimize the drum
saturation problem, namely, when the operator detected a saturation condition he could stop the input flow by stopping one or more card readers
and/ or he could dump some of the drum output
queue onto tape for later processing during a low
workload period (which would increase the turnaround time). The model made a contribution by
pointing up the importance of the console operator
to system efficiency and by so doing, helped accelerate work on improved manual procedures and automatic system status indicators (for example, modification of the executive routine to give an online console printer message when the I/O drum
buffer became saturated) .
Another pertinent piece of information was the
350-job-per-day 1107 system capacity predicted by
the model as illustrated in Fig. 2. This provided a
useful guideline to establishing system programmer
support levels and program conversion (from other
systems to the UNIVAC system) schedules prior to
installation of the faster 1108 CPU system.
The next step in designing and conducting the
simulation experiments was to incorporate some tentative system hardware plans into the model. These
plans are summarized as follows:
• Installation of a high-speed data link between
the central system and a high-use remote
station.
• Installation of an additional on-site UNIVAC
1004 print, card read and punch system.
• Replacing the 1107 CPU with an 1108 CPU.
Three experiments were conducted which recognized the above system changes combined with a
forecasted change in the characteristics and level of
the 1108 workload. The output from these experiments was the primary information used for determining the 1108 system configuration for October
1965.
Some output from experiment A is illustrated in
Fig. 4, where the original 1107 model configuration
was run with (1) a 350-job-per-day input which
was the maximum forecasted level of work through
1965 and (2) the faster 1108 CPU in place of the
1107. Three system performance measures were
significantly affected in experiment A:
• The average job turnaround time for 350 jobs
dropped from over 4 hours to about 1 hour.

166

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

• The peak I/O drum buffer requirement
dropped from almost 2 million to about
900,000 words.

100
90
80
~
~

70

(§

60

~

50

...,'"

30

~

Input Queue

The output from experiment C is illustrated in
Fig. 6 where experiment B was repeated except that
the mean run time of the jobs was raised to 6 min-

c:::J Output,Queue

.S 40

.0
0

1965

20
10
0
7

8

9 10 11 12

1

10 11 12

- I-

I--AM - - - - I I - t - - - - - P M

I..

-

1

2

3' 4

5

6

7

AM----l
~

Notes:

Input Queue

c:::J Output Queue

1. Average Turnaround Time ; 1. 02 Hours (Manual Handling Times Exterior to

Hardware System Excluded.)
.
2. 1108 CPU Utilization; 49% (Two Shift Operation).
3. Maximum Requirement for I/O Drum Buffer Storage Occurs at 5:10 PM and
Equals 1,860,000 Words.

Figure 4. Experiment A-present 1107 system with 1108
CPU and a 350-job-per-day workload.

.-I~AM ~

!--AM---"""'I------PM - - -__

• System throughput increased substantially as
the 350\jobs were processed in only 2 shifts
instead of 3.
• The mix of the I/O queue changed from primarily input to primarily output and the peak
I/O drum buffer requirement rose to almost
2 million words.

Notes:
1. Average Turnaround Time; 0.45 Hours (Manual Handling Times Exterior to
Hardware System Excluded. )
2. Maximum Requirement for I/O Drum Buffer Storage Occurs at 10:30 AM and
Equals 354,000 Words .

Figure 6. Experiment C - same as Experiment B but with
an average CPU time of 6 minutes instead of 2.54 minutes
(as measured 
<

0 represents inhalation.
0 represents exhalation.

F (t) represents the CO2 concentration in the

gas at the mouth.
o

for V (t) > 0 F(t) ~ FI (t) i.e., inhaled concentration.
o

V (t) < 0 F(t) ~ FE (t) i.e., exhaled concentration.
FA (t) represents the alveolar concentration of
CO2 •

We use a two compartment model of the lung.
253

254

PROCEEDINGS -

1965

FALL .TOINT COMPUTER CONFERENCE,

I°
t

Compartment 1, The Dead Space.
This is purely a region of gas transport.
There is no exchange. Its volume = V D.
Compartment 2, The Alveolar Compartment.
This is a region only of gas exchange.
There is no transport.
This compartment is assumed to have no concentration gradients. When gas is exhaled, there is
some mixing of gas from the two regions, but the
first portion of the exhalate represents dead space
gas, the last portion represents alveolar gas. Thus
we have the following curve of concentration versus
time for carbon dioxide in the exhaled gas:
Alveolar C02
Concentration

MV=

0

IV(t) I dt
T

The tidal volume V T is the volume of gas moved out
of the lung on a given breath.
The alveolar volume V A is the volume of gas moved
out of the alveolar compartment on a given breath.
Obviously,

Similarly, we can define the alveolar ventilation rate,
T

I
AV=O

VA

T
~

c
o

Since the C02 concentration in the dead space is

n

F I and its volume is V D, the volume of C02 exhaled
from the dead space = V D X Fl.

c
e

And, volume of C02 exhaled from the alveolar compartment = V A X FA.

n
t

r

V EC02 = V A • FA

a
t

VD

•

Fl.

If FI = 0, a common case, then

o
n

V A=

Dead Space CO2 ~
Concentration

time

End of exhalation

V~~02.

If FI # 0, then
VEC0 2 = VA • FA

Thus sup [FE(t)]=FA(t)
and in! [FE(t)]=FI(t), since the dead space gas
is simply the gas inhaled on the last breath, and left
unchanged. (The inhaled gas is usually considered
to be of constant composition during any given inhalation.)
VE C02(n) =volume of C02 exhaled on nth
breath.
VI C02(n) =volume of CO2 inhaled on nth
breath.
Obviously, V E C02 (n) =
nth breath
VI CO 2 (n)

+

=

I Vet)
IV

FE(t) dt

(t) F I (t) dt

But V T

•

FI

+

(VT - VA) • Fl.

= V IC02.
VA= V EC0 2 - V r C0 2
FA - Fr

These two formulae for V A are known as the Boh
formulae. We will now discuss the processing of the
above data.
This paper discusses an improved version of two
systems previously reported. An attempt has been
made here to perform the· various operations in the
appropriate (analog or digital) section of the equipment instead of doing them all in the "analog" section.
EQUIPMENT

nth breath

The minute volume, the average rate of gas movement out of the lung, can be mathematically defined
as

The system used consists of two transducers, special purpose analog computing equipment with
digital read out and digital computing facilities.
The transducers are (a) a pneumotachograph

255

ANALOG-DIGITAL DATA PROCESSING OF RESPIRATORY PARAMETERS

(Fleisch), strain gage (Statham PM 15) and amplifier (Statham CA 9-10), and (b) an infra-red carbon dioxide analyser (Godart).
The computing equipment consists of 25 .operational amplifiers, some with chopper stabilization
(G.A. Philbrick Researches, K2PA and K2W) and

a multiplier (GAP jR, K5M). Plug-in units for the
amplifiers were fabricated by the author from modules (K3). Control circuitry was synthesized from
digital modules by Tech-Serv (B.R.S.). Read-out
equipment is by Hewlett Packard, and· the digital
computer is a Control Data Corp. 160 A.
READ-OUT
Arterial carbon dioxide tension

Alveolar carbon dioxide concentration
Inhaledcarbondioxiqeconcenlration
Volume of carbon dioxide exhaled

Tidal volume

Per breath '
Alveolarventilationfanatomicl

Alveolar ventilation (physiologic)
Anatomic dead space
Physiologic dead space

Alveolar dead space Idifferenceol D5(AJ.nd D5(Physl
Minute volume

Rate of carbon dioxide excretion
Per minute
Anatomic alveolar ventilation rate
Physiologic alveolar ventilation rate

Alveolar-arterial difference of C02 concentration

Computation (Fig. 1)

From the pneumotachograph, strain gage and
amplifier system a signal arises representing the instantaneous flow rate of the patient's exhalation or
inhalation. A small sample (approximately two liters per minute) is taken from this stream and
passed through the sampling head of the carbon
dioxide analyzer from which is obtained a signal
proportional to the carbon dioxide concentration in
the gas stream (which is lagged approximately 300
ms). To synchronize the two signals, the "flow"
voltage is delayed by an equal amount. This is performed using a (Fig. 2) modification of the Pade
approximation devised by Dr.P. D. Hansen. The

ide tension is obtained using a peak follower technique and the inhaled carbon dioxide from the inverted curve in the same way. These peak followers
are reset after being read out on each breath. A
constant voltage is integrated for the period of the
breath to give a measure of the time taken for that
breath. All five quantities are placed on memory
circuits· at the end of each breath. The integrators
are reset and computation recommences.

FIG.3:

Contact Closure

(FromAnalog

Unit)

CONTROL CIRUITRY

-

+X

Delay· T : capacitor';;P
ISO MS time delay (suggested by P.O. Hansen)

Control Circuits (Fig. 3)

flow signal is rectified and integrated thereby giving the volume exhaled for that breath. The flow
signal and the carbon dioxide signal are multiplied
and integrated and this integrand for each breath
represents the volume of carbon dioxide exhaled per
breath. The peak exhaled or end-tidal carbon diox-

These consist of a series of digital modules by
Tech Serv (B.R.S.). The input pulse to this system
is obtained from a voltage crossing detector and relay on the analog unit. This then initiates a pulse
train in the digital system which proceeds through a

256

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

series of one-shots of variable delay time, each one
of which is triggered by the trailing edge of the
pulse from the preceding one shot. The time detays
are adjusted to the appropriate values. The first one
shot operates the relay which connects the integrators to the memory circuits. (A) The second one
shot is a delay to allow for closure of this relay, a
small dead time, and then operation of the second
(shorting) (B) relay which is operated from a
third one shot. Another one shot is used to provide
a suitable delay between readout of the first channel (FA CO2 ) and reset of this unit. (Relay C).

1965

volume of 500 cc passed through the pneumotachograph. Artificial dead spaces of 40 and 95 cc have
been constructed. Average of the mean of 10 determinations for the 40 cc dead space was 41.6 cc in
one instance and in another 45 . Average of the
mean of 10 determinations for the 95 cc dead space
was 97 in one instance and 92 cc in another. These
results lead us to have some confidence in the ability of the equipment. On the other hand, this confidence can only be maintained if calibration is conscientiously and frequently performed.
Readout

Calibration

Calibration of this equipment is rather complex
due to the large number of functions performed and
every attempt is made to cross-check during calibration. The carbon dioxide analyzer is calibrated
with gases of known chemical composition. Its response to these is linear to within plus or minus
Ilmm pC02 at 760 mm barometric pressure. The
pneumotachograph, strain gage and amplifier system is calibrated by passing oxygen through a flowmeter which delivers a known amount of gas for
any particular position of the rotameter. Stability
and linearity of this system are excellent, the only
aspect requiring frequent adjustments being the zero
level which is sensitive to positional changes of the
transducer. The ability of the system to record accurately the volume passing through the pneumotachograph is tested by comparing the computer output with a volumeter and spirometer. Agreement
here is excellent. ± 3 percent. Stability and accuracy
of the integrators is tested with a sine wave of
known dimensions and again here reproducibility
and accuracy are better than 2 percent.
Finally the system is tested by the simulation of
a dead. space. Calculation of dead space is the most
revealing calibration statistic of the machine because the dead space represents the differences between two fairly large values, namely the tidal volume, and alveolar ventilation, which only differ by
about 20 percent. Consequently errors in these
quantities are reflected in an extreme fashion in the
dead space calculations. Therefore a homogeneous
carbon dioxide mixture is flushed through the pneumotachograph to simulate a zero dead space. Results of this typically indicate an average mean dead
space determination of the order of 5 cc for a total

A multiplexing device connects the five memory
circuits to a digital voltmeter sequentially. The digitized values are then printed or punched out. The
first system, the printing system, is a slow speed
unit consisting of a multiplexing device (Dymec C
2900 A) a digital voltmeter (Hewlett-Packard 405
CR) and printer (Hewlett-Packard 561 B). This
system can read out five parameter in approximately 2.5 seconds. This speed is adequate as long as we
do not have to have an observation on every breath.
(If the readout sequence is not completed the integrators are merely reset and computation recommences. The integrators are not connected to the
memory units in this situation).
The other system is faster and consists of a similar stepping switch type of multiplexing device
(Dymec C 2901 A) which connects the memory
circuits through a 5-space digital voltmeter with a
10 ms sampling time, (Dymec 2401). The output
of this is put on a punched paper tape by a teletype
unit (BRPE-ll). This latter system is of course
much faster and will read out 5 parameters within
approximately 7 /10 of a second. This latter format
is also much more convenient as it can be read directly into the digital computer (CDC 160 A).
With the printing system data must be transferred
onto cards, which is rather tedious.
Programming

Several programs are then available to us. The
first program simply removes the scale factors used
in the analog equipment and punches in the conventional units. Several types of manipulation are performed upon the scaled data of which a few examples are as follows.

ANALOG-DIGITAL DATA PROCESSING OF RESPIRATORY PARAMETERS

We might desire a plot of alveolar ventilation
rate against end-tidal carbon dioxide tension. This
type of plot is useful in studies of the sensitivity of
the respiratory center and the effect of drugs upon
it. It is usually necessary to smooth this plot. The
technique employed is to average the ventilatory
rates over five breaths. Similarly the end-tidal carbon dioxide tension is averaged over five breaths
(each tension is weighted by the time of the breath
to obtain a meaningful average). This type of plot
has been used by us extensively in assessment of the
depressant effects of narcotics.
Another typical problem is determination of the
relationship between tidal volume and alveolar ventilation. The latter is determined by the use of the
Bohr formula a~ove. This is a fairly elementary
program and a plotting routine is incorporated here
also to avoid the tediousness of plotting the large
amount of data.
Using the formula for the case when the inhaled
concentration of C02 is not zero, we must compute
the net output of C02 for each breath, as the denominator for the previously derived formula:
VA= VEC0 2 - V I C0 2
F AC0 2 - F I C0 2

For this case the analog equipment is adjusted to
compute the product of the concentration signal and
all the flow signal, rather than the rectified signal.
By an obvious adaptation of the above program
we can plot the net rate of CO2 production against
time for any time interval of interest. Such a plot is
of interest because this parameter indicates the overall rate at which blood is returning from tissues in a
normal metabolic state. A sharp drop in CO2 output
would indicate that the rate of return blood to the

257

heart was reduced or that there had been a severe
metabolic disturbance. Such information could be
useful for an anesthesiologist during a difficult procedure.
Comparisons between the partial pressure of CO 2
in the arterial blood and in the lung gases are of
interest inasmuch as any great differences reflect
inefficiencies in the lung as an exchange device. True
comparison is not usually made directly, but rather
the 'physiological alveolar ventilation" is determined.
This somewhat empiric parameter is the result of
replacing the FA in the Bohr formula by Fa, i.e., the
fractional concentration corresponding to the partial
pressure of C02 in arterial blood. Comparing the
volume so obtained with the "alveolar ventilation volume" V A, defined in the introduction, allows us to
express the inefficiency in terms of a volume of the
lung (referred to as the alveolar dead space = V A
(phys.) - V.4.) which receives an adequate blood supply but an inadequate gas supply.
It would be easy to extend the above techniques
to obtain many other parameters of respiration, of
interest to the respiratory psychologist and the clinician, such as the timed vital capacity, one second
expiration, etc.
CONCLUSION
Techniques are outlined for rapid data processing
of respiratory parameters. It is suggested that these
techniques are much more efficient than the classical techniques of chemical analysis, etc. Much more
data is obtained and the maximum number of parameters can be calculated from an indivdual experiment. It is suggested that we can have a fruitful union of medicine and data-processing technology.

COMPUTER SIMULATION - A SOLUTION TECHNIQUE FOR MANAGEMENT PROBLEMS
Alan J. Rowe
Graduate School of Business
University of Southern California
Los Angeles, California

counting. Examples of decision rules applied to
physical processes can be found in the Journal of
Operations Research, Management Science, and
Journal of Industrial Engineering. The interesting
fact, however, is that in all of these instances of automated data processing, supervisors are still .required to deal with the workmen who actually operate the processes. Specific data processing activities
can and have been automated, yet management still
performs the basic decision functions.

Although computers are currently being used primarily for rapid processing of data, there is little
doubt that computer-processed information will
be a requirement in providing management with
timely and accurate data for evaluation, analysis,
and as an aid in decision making. At the top management level, decisions are concerned with directing the organization and providing means of assuring its survival. To achieve maximum effectiveness
at the operating level, plans and policies must be applied to the available resources, subject to specified
constraints and risks. However, there is generally
insufficient information for these decisions, and
they often cannot be structured as a set of procedures. But, most important, policy decisions are
based on a blend of intuition, experience and emotion.
Looking more specifically at the management
control process, measurement, reporting, evaluation,
decision rules, and feedback are susceptible to computer processing. However, the decision criteria,
plans and objectives are still subject to human judgment. At the operating level, where the physical
processes in a system are applied, there is the highest opportunity for computer application. Numerous
examples exist of automated data processing, essentially in production and inventory control and ac-

THE USE OF COMPUTER SIMULATION
In view of the intricately complex nature of large
business systems, it is difficult to evaluate new
management concept or system designs. Direct experimentation poses almost insurmountable problems due to disruptions, uncontrolled results, length
of time required, and possibility of costly mistakes.
Computer simulation, on the other hand, has been
shown to provide a suitable methodology to study
business system behavior under a variety of conditions, and provide a means for analysis ofsimultaneous interaction of the many system· variables to
yield valuable insights. In view of its capability of
rapid interrogation of system performance, simula259

260

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

tion is becoming an integral part of "real time systems."1
Computer simulation can be considered as an attempt to model the behavior of a system in order to
study its reaction to specific changes. The simulation model is seldom an exact analogue of an actual
system. Rather, it is an approximation of continuous time dependent activity. If the properties and
elements of the system are properly defined, then
the tracing through by the computer of the simultaneous interaction of a large number of variables
provides the basis for studying system behavior. A
model of the system indicates relationships which
are often otherwise not obvious and has the capability of predicting system behavior which results
from changes in system design or use of alternate
decision rules.
For many years engineers have used scaled models to simulate system response. The armed forces
have used exact duplicates of operating systems for
training. There have been laboratory studies which
can be considered similitude or an attempt to duplicate reality in a laboratory environment. This has
been extended to the use of management games
where people interact with· the output of a computer
and make decisions on information received. Computer simulation has been directed toward the use
of models of the behavior of a system so that the
results correspond to the problem being studied.
Abstract mathematical models, on the other hand,
are used for problems which correspond with reality
to a sufficient degree to produce useful solutions.
Not only has simulation increased in use as a
means for studying and understanding new problem
areas, but it has a number of distinct advantages.
Once a simulation model is completed, the time for
experimentation is considerably reduced. The cost
of simulation models is now being reduced to the
point where for larger problems it is an extremely
economical tool. The fact that all the work is done
in a computer rather than a laboratory or actual operating environment provides better experimental
design and control. The ability to explain the simulation model in terms of a real problem is a far
more useful tool than some of the analytic techniques which cannot be described to management
or the potential user.
PROBLEMS IN SIMULATION
Although simulation has many advantages, one

1965

should not overlook the difficulty involved in developing a model, programming it on a computer, and
utilizing the results. Although computer simulation
has been used for a number of years, there are still
many pitfalls that must be avoided. One of the
greatest difficulties is that of developing a suitable
model. Another is the use of computers in the simulation process which poses a number of problems,
including computer programming, search techniques, data storage and retrieval, function generators, etc. The computer programming problem has
in many instances proven to be a major stumbling
block.
In recent years there have been a number of approaches taken to minimize the programming problem. One is the development of models to study a
specific area, such as Job Shop Simulation.2 Using
this type model, the user is required to provide appropriate data and a description of the facility to be
studied, and the computer program needs little modification. A similar approach has been taken in the
Gorden General Purpose Simulator. 3 A somewhat
more general approach to this problem has been
tackled by the use of the DYNAMO Compiler,4 in
which a set of equations is submitted to the computer, which in turn compiles these and generates a
computer program. Therefore, once the model is
completed, no further programming is required. As an
alternative to writing directly in machine language,
a simulation language has been developed called
Simscript. 5 Once the model is written, no further programming is required. The Simscript language has all
the flexibility of computing language but much of
the simplicity of a special purpose approach. Quickscript6 and programming by questionnaire7 are extensions of this approach to developing useful simulation languages. Thus, depending on the type of problem being undertaken, it is possible to use a variety
of approaches to obtain a computer program. Several of the computer manufacturers have developed
standard programs which are readily available and
require no further computer programming effort. 8
A second problem is in the area of experimental
design. Considerable effort is often expended in an
attempt to obtain information and is often done in
an inefficient manner based upon poor input data.
It is therefore necessary to consider computer simulation as an equivalent to a laboratory experiment.
Before any simulation is undertaken, areas of payoff or urgency should be established and the feasibility of completion of the project with estimates and

COMPUTER SIMULATION -

A SOLUTION TECHNIQUE FOR MANAGEMENT PROBLEMS

budgets should be provided. When defining the
problem, there should be careful observations and
correct statements concerning what is being studied
and discussions held with experienced personnel.
Preliminary approaches or brainstorming should be
undertaken in order to attempt to define solutions
to the problems being studied. Organization of the
data, the use of sample vs. exhaustive representation, and the use of statistically designed experiments should all be incorporated. This becomes
particularly important when trying to state on a rigorous basis the comparison of one system design to
another. Simply because a problem is run on a computer does not mean it is either valid or statistically
significant.
A number of fairly significant techniques have
been developed for analysis and evaluation of data. 9
Some of these are referred to as Monte Carlo sampling or importance sampling. In these techniques
the data are handled in such a way as to minimize
the amount of data required and to maximize the
information that can be derived from the manipulation of the data. In many applications the use of
analysis of variance or regression analysis is very
important. It is necessary in evaluating the results
of a simulation to have the appropriate criteria and
measures of system performance. These, of course,
do not depend on the simulation but rather on the
user.
The problem of modeling is important since the
results of simulation are no better than the model
used. A model provides a formal statement of system behavior, in symbolic or mathematical form.
The model should be constructed so that the parameters, variables, and forcing functions correspond to
the actual system. The parameters should include
properties which are sufficient to define the behavior of the system; whereas the variables are the
quantities which describe the behavior for a given
set of parameters. The forcing function provides the
stimulus, external to the system, which causes the
system to react. For example, job orders which en..;.
ter a production system cause men to work, machines to run, queues to form, etc. In this way, job
orders become the forcing function for the system.
Whatever particular form is used, a model provides
the frame of reference within which the problem is
considered.
A model need not duplicate actual conditions to
be useful. The model should be designed to predict
actual behavior resulting from changes in system

261

design or application of new decision rules. Prediction implies an understanding of the manner in
which the system reacts; that is, being able to specify the outputs for a given set of inputs.
Models are merely the basis for testing new ideas
and should not become ends in themselves. The
simpler the model, the more effective for simulation
purposes. Tests should be made prior to model
building to determine the sensitivity of the characteristics which are incorporated. Typically, certain
key characteristics contribute the majority of the
information to be derived from simulation. Other
characteristics, although more numerous, do not
contribute much to the final system design. In this
sense, simulation can ,be considered as. sampling the
reaction of a system to a new design. It is imperative, therefore, that a representative sample be taken, rather than an exhaustive sample. Thus, the
number and type of characteristics to be included
should be carefully selected. 10
The major task of simulation is reached at this
point. A logical model, which is merely descriptive,
is not suitable for computer simulation. The model
must be modified to suit the particular computer on
which it will be programmed. Factors such as kind
of memory, speed of computation, and errors due to
rounding must all be taken into account. Simplification is often necessary due to speed of computation
or limitation of the computer memory. The method
of filing information and representing time are also
significant problems. Which data to accumulate, and
at what point in time, often are difficult to decide
beforehand. Thus, the program must be flexible and
easy to change.
As computer programming proceeds, there is
generally feedback which provides the basis for further modification of the model. At the outset,the
decision must be made whether to make the program general or special purpose. The type of programming changes radically, depending upon the
end use of simulation. Modular programming which
treats each section independently provides flexibility at a small cost in computation time and storage.
In view of the many logical relations which exist in
systems, computer programming represents an important aspect of the problem.
SUCCESSFUL APPLICATIONS OF
SIMULATION IN MANAGEMENT PROBLEMS
A considerable body of literature exists covering

262

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

the use of simulation in various applications. l l,12,13 As
shown in Fig. 1, simulation should be thought of as
a continuum, starting with exact models or replication of reality at one extreme, with completely abstract mathematical models at the other. When viewed
in this manner, the breadth of simulation can be
appreciated.

EXACTNESS

CONTINUUM OF SIMULATION

ABSTRACTION

Figure 1.

Physical
Systems
Non-phys ico I
Systems

1965

The wide variety of simulation applications is
somewhat astounding. Not only has simulation been
extremely successful for purposes of studying physical systems but it has been used for such diverse
applications as the study of personality,14 election
results, gross economic behavior, etc. In order to
evaluate where simulation is most effective, it is
probably best to categorize problems as involving
physical and non-physical systems with high and
low risk decision alternatives.
As shown in Fig. 2, the area for greatest success is
physical problems having very low risks. The poorest applications are nonphysical problems having
high risk or little data. This situation may change
as the simulation technique is applied to a broader
class of problems.
A review of the literature indicates many successful
applications of simulation in business. 15,16,17,18,19 A

High Risk
Poor Data

Low Risk
Good Data

Fa i r Resul ts

Excellent Results

Bad Results

Poor Results

PROBALE SUCCESS OF SIMULATION APPLICATION
Figure 2. Probable success of simulation application.

publication20 "Simulation-Management's Laboratory," based on a fairly extensive survey of simulation applications, shows the applicability to a wide
variety of management problems. Some of the applications include:
Company

1. Large Paper
Company

Management Decision
Area Simulated

Complete order analysis

2. U. S. Army Signal
Supply
Inventory decisions
3. Sugar Company

4. British Iron and
Steel

•

Production, inventory,
distribution
Steelworks melting operation

5. General Electric

Job shop scheduling

6. Standard Oil of
California

Complete refinery operation

7. Thompson
Products

Inventory decisions

8. Eli Lilly & Co.

Production and inventory
decisions

9. E. I. DuPont

Distribution and warehouse

10. Bank of America Delinquent loans
In another survey by Malcolm,21 the following applications are described:
Company

Problem Simulated

COMPUTER SIMULATION -

A SOLUTION TECHNIQUE FOR MANAGEMENT PROBLEMS

1. Eastman Kodak

Equipment redesign,
operating crews

2. General Electric

Production scheduling,
inventory control

3. Imperial Oil

Distribution, inventory

4. United Airlines

Customer service,
maintenance

5. Port of New York Bus terminal design
6. Humble Oil

Tanker scheduling

7. U. S. Steel

Steel flow problems

8. I.B.M.

Marketing, inventory,
scheduling

9. S.D.C.

SAGE Air Defense

10. Matson

r~Hgo

transportation

These lists are not meant to be all-inclusive, but
rather indicate the variety and type of problems that
have been solved by simulation.
THE USE OF SIMULATION FOR
SCHEDULING JOB SHOPS
Scheduling of job shops has long been considered
a critical problem. Extensive work using analytic
techniques to find a suitable solution were tried.
However, in view of the large-scale combinatorial
nature of this problem, no solution was found except for extremely small cases. Extensive models
have been developed over a period of years and
have evolved into what today is known as the Job
Shop ~imulator. Although the computer program
cost a large sum of money and took almost two
years to develop, the Job Shop Simulator has been
used successfully in a large number of companies.
Notably, it has become an integral part of the
manufacturing function at General Electric and has
been used extensively in many other companies, including the Hughes Aircraft Company. 22
The kind of decisions that can be aided by the
use of this type of simulation are the following:
1. Establishing required capacity in terms of
equipment, facilities, and manpower in order to meet unpredictable customer demand.
2. Examination of alternative types of demands and the capability of the system to
respond.

263

3. Examination of the inventory problem relating equipment utilization to cash requirements and customer demand. (It is
possible to meet customer demand by
maintaining large inventories.)
4. Development of appropriate scheduling decision rules to maintain a minimum inventory and meet specified delivery requirements.
5. Study the operation of a physical facility
through the appropriate use of forecasting
techniques, load level techniques, scheduling decision rules, and priority decision
rules.
In addition to specific decision areas, there is the
information generated from the simulation which
provides the basis for feedback on performance so
that management can make decisions on the number
of shifts to run, need for additional equipment or
capacity, or amount of cash to maintain for adequate inventory. The use of this particular program
has been extended to an operational system at the
Hughes Aircraft Company for real time manufacturing control. The Job Shop Simulator was first
used to examine alternative scheduling decision
rules. These rules, in turn, provided the basis for
developing a supplemental computer program which
is used to generate the factory job order status on a
daily basis. This computer program, by application
of priority decision rules, is used to generate new
priority lists each day, taking into account all occurrences for the given day. Thus, the system operates on essentially a daily cycle with all information
current and correct as of that point in time. This
type of real time application appears to offer considerable opportunity for the use of simulation in
industry.23,24
STUDYING BUSINESS SYSTEM BEHAVIOR
Considerable effort has been extended to develop
models of. the total business system. Several efforts
along these lines have been undertaken at SDC,25
Stanford Research Institute,26 IBM Corporation,27
and M.I.T.28 A notable example of work being undertaken in this area is by the Industrial Dynamics
Group at M.I.T. which is concerned with studying
total system behavior. The basic premise of this latter simulation is that the dynamic interaction of
system variables and information feedback leads to

264

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

amplification, oscillation and delays in system performance. The behavior of a system, then, is the
result of desired objectives and the decision rules
employed to carry out these objectives. Thus, where
there is an attempt to make corrections and adjustments in flow rates, there is the possibility of delays or amplification or there may be conflicts between short and long-term objectives. Forrester in
his book on Industrial Dynamics describes a number of studies that have been undertaken and describes future studies of total management systems.
In providing the means for experimenting with a
total business system, a quantitative formulation of
the various behavioral characteristics, component
interdependencies, system flows and stochastic
functions is required. The formulation is used to develop a simulation program which can trace the activities of the system as they change in time. In this
way, a large number of variables can be examined
simultaneously, without explicit knowledge of their
interdependencies.
A model of a business system is concerned with a
"decision network" rather than an explicit characterization of the decision maker per se. The difference stems from studying the information flow and
decision rules in the system, as contrasted with
studying the behavior of the individual. To the extent that a model faithfully characterizes the behavior of a given business and that suitable decision
criteria can be established, a computer model can
generate information useful in the study of business
problems. Further, the computer is capable of providing ·summaries of the information generated during the simulation to permit evaluation of experimental designs or to permit useful insights on system behavior.
The characteristic behavior of decision makers in
response to information provides the basis for
studies concerned with organizational aspects of information flow. The density of communication linkages among decision makers provides data which
could be used to establish critical decision points in
a system. Further, a communication network linking the managers with the operations provides the
means for establishing feedback control loops. In a
sense, management is linked with the resources of
the business via information flowing through a
communications network. Characteristics of the information flow among managers and between the
managers and the operators provides one of the bas-

1965

ic measures of system behavior. In an actual business, much of the information generated is not pertinent to the direct operation of the business, and
often ipformal communication channels provide
useful information. In a sense, the decision maker
has surveillance over a given number of· decision
points, which, when linked to other decision points,
defines the underlying operational structure of the
business.
MODELING THE ACTIVITIES AND
FUNCTIONS OF A BUSINESS SYSTEM
A schematic representation of the information
flows among various functions and activities in a
typical manufacturing (resource transforming) business system is shown in Fig. 3.
Central to the system is the decision-communication network, which is normally thought of as the
mariagement function. The decision network is
linked to the resource transformation or operations
subsystem through the various organizational levels.
In a computer program, the simulated information
generated would be used to execute the decisions in
a synthetic manner. Inputs to the decision network
include the system contraints or policies, system
functions and environmental factors. These too can
be represented by flows of· information via the communication network.
Inputs to the operations subsystems include environmental factors, customer orders, capital resources, material, etc. In addition, transients or perturbations in the operations subsystem could be
used to introduce variability in performance. Outputs of the system enter distribution systems, warehouses or finished goods storage. Although there is
considerable detail associated with the operations
subsystem, a computer model need merely treat the
information aspects as they interact with the decision network. 29
The study of the behavior of a total system requires an explicit description of the time dependencies among the components. The primary concern
in the model discussed here is the conversion of resources into goods and services. By determining appropriate strategies in relation to risks, it is possible to control rates of change of production, work
force stabilization, growth rate, cost-pricing, response to demand, and the relation of income to
investment.

COMPUTER SIMULATION- A SOLUTION TECHNIQUE FOR MANAGEMENT PROBLEMS

---I

REQUIREMENTS: Policies,L DECISION NETWORK:
Authority
Relations
i++
Decision Points
Control Points
SYSTEM FUNCTIONS: Marketing,l...._ _ _'...
Engineering, Planning, Finance
~-----~--

i l....._O_b_ie_c_t_iv_e_s'.....,..C_on_s_tr_a_in_ts_ _......i

H

MANAGEMENT CONTROLS:
Feedback, On-line Control

1-

_ _ _- - - , _ - - - - - '

-

t

I

ENVIRONMENTAL
FACTORS:
Competition,
Vendors,
Government,
Customers

r

COMMUN ICA TlO N
NETWORK: Linkages . . .

DECISION RULES:
Forma I Response,
Actions,
Outcomes,
Optimization

I

f+-

t

265

MEASUREMENT
OF SYSTEM
PERFORMANCE:
Quality,
Cost,
Time,
Queuing,
Flexibility

INFORMATION
DISPLAYS

L--_---'

SYSTEM INPUTS:
Orders, Bids,
Forecasts,
Information,
Resources,
Manpower,
Plant,
Equipment,
Money

RESOURCE
TRANSFORMATION:
Behavioral
Characteristics,
- - . Internal System
Flows,
Men, Material,
Information,
Money

TRANSIENTS OR
PERTURBA nONS:
New Products,
Demands,
Fluctuations,
Absenteeism,
Breakdowns,
Shortages,
Growth, Trends

SYSTEM OUTPUTS:
Storage,
Finished Goods,
Distribution,
Transportati on

Figure 3. Activities and functions of a business system.

Since computer simulation is used to trace the
change in the variables across a time domain, decision rules can be made functions of the state of the
variable rather than using expected values. In this
respect, simulation differs from dynamic programming or gaming strategies which depend on statistical estimates as the basis for optimization. Forcing
functions, which trigger the decision rules, must
also be specified and are related to information
flow in the system.
Since system optimization involves many variables, it is ·necessary to consider the many combinatorial effects. Simulation is a means for examining
a large number of variables simultaneously. However, the solution is not unique, but provides an estimate of the distribution of expected system performance. Thus, although all the combinations
could not possibly be enumerated, sampling results
tend to form relatively stable· and determinable distributions.

DEFINING SYSTEM FLOWS
Flows within the system can be separated into
information flow (paperwork, reports, etc), material flow, resource· flow, and manpower flow. Each
has its own characteristics and is therefore modeled
differently.
Starting with information flow, the channels or
network determines the destination of the information, and the transmission media determine the
speed and message type. Information content is a
function of the data, format, and timeliness. Transformation, distortion, and errors should be included, as well as the queueing effects at the decision
points in the system.
Material flow has received the most attention in
simulation and operations research studies. Thus, a
considerable body of literature exists which could
provide the basis for modeling. Reorder rules, safety stocks, value analysis, collation studies, scheduling rules, and stocking policies have been well doc-

266

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

umented. There are a number of additional considerations which might also be of interest, such as
surge effects, queueing effects, interdependence of
component parts, work-in-process flow rates, and
resource utilization.
Resource and manpower flow are more difficult
to solve since factors external to a simulation model
may have the major influence. Nonetheless, there
are aspects of these factors -which can be profitably
studied. For example, what are the cash flow requirements in a marginally capitalized business?
What is the relation between demand variation and
capacity? How does capacity and capital requirements change with different products, number of
shifts, skill and mobility of manpower? These and
similar questions are readily susceptible to study
via computer simulation.
The internal system, in' addition to the basic
flows, has a number of other characteristics. In particular, it is necessary to structure certain behavioral patterns such as:
• demand and shipping patterns
• value distribution among products
• variability in man-machine performance
• learning-curve effects
• various lead-time distributions
Rather than attempt an exhaustive description of
the physical characteristics of the internal system,
the considerations discussed are intended to provide
some measure of the complexity and difficulty in
modeling the business system.
There are a number of environmental considerations, as well as system inputs and outputs, which
should also be taken into account in the modeling.
The number and type of competitors, customer demands, vendor characteristics and legal- or civic fac·tors all should be specified in developing a computermodel of a business. Furthermore, forecasting of
demand, gaming strategies, competitive pricing, and
advertising policies are, in effect, the control of system response to variable demand. Thus, for example, maintaining standby capacity in anticipation of
orders, having a complete product line, or carrying
large safety stock in inventory, are all means of response which are really control of the system.
From a total system viewpoint, the availability of
cash affects the above considerations; that is, carry-

1965

ing large inventories may determine the plant capacity required or the advertising budget. In this
sense, cash flow permeates all aspects of system behavior and thus affects control. Similar considerations enter into the make or buy question, material
and tooling purchases, employment stabilization,
etc. It is an explicit treatment of the many interdependencies which provides the basis for total system control.
The modeling of a total business system which
incorporates the many considerations discussed
would undoubtedly involve numerous details. Thus,
where possible, transfer functions or aggregations
should be used rather than the precise flows or system characteristics. Not only does aggregation provide considerable savings in modeling, but, often
more significantly, it helps reduce the size and
complexity of a computer program. The modeling
is, after all, designed to answer given questions or
explore new areas and, therefore, should be governed by these considerations.
CONCLUSION
It is apparent from the many successful applications that simulation will continue to grow in ~ importance and become a truly operational tool for
management decisions. There is still a vast number
of problems that can be tackled, ranging from the
study of specific economic problems to total company system problems. 30 Because of its many advantages and because of the need for improved techniques in management, simulation appears as one of
the most useful tools that has come on the horizon.
There is still much required in the way of improved
modeling, reduced cost of programming, improved
outputs, etc. However, none of these problems is
unsurmountable and the evidence is quite clear that
there are continued improvements on all fronts.
Thus, we can expect to see the use of simulation as
a normal part of business operations in the not too
distant future.

REFERENCES
1. A. J. Rowe, "Real Time Control in Manufacturing," American Management Association Bulletin, No. 24 (1963).
2. A. J. Rowe, "Toward a Theory of Scheduling," Journal of Industrial Engineering, vol. XI,
no. 2 (March-April 1960).

COMPUTER SIMULATION -

A SOLUTION TECHNIQUE FOR MANAGEMENT PROBLEMS

3. G. Gordon, "A General Purpose Systems
Simulator," IBM Systems Journal, vol. I (September 1962).
4. J. W. Forrester, Industrial Dynamics, M.I.T.
Press, Cambridge, Mass. 1961.
5. H. Markowitz, B. Hausner and H. Karr,
Simscript: A Simulation Programming Language,
Prentice Hall, Inc., New York, 1963.
6. F. M. Tonge, P. Keller, A. Newell, "Quickscript-A Simscript-Like Language," Communications of the ACM, vol. 8, no. 6 (June 1965).
7. A. S. Ginsberg, H. M. Markowitz, R. M.
Oldfather, "Programming by Questionnaire,"
RM -446o"-PR, The RAND Corporation (April
1965).
8. H. Markowitz, B. Hausner and H. Karr, "Inventory Management Simulation," I.B.M. Data Processing Information (April 1961).
9. S. Ehrenfeld and S. Ben Tuvia, "The Efficiency of Statistical Simulation Procedures," Technometrics (May 1962).
10. A. J. Rowe, "Modeling Considerations in
Computer Simulation of Management Control Systems," SP-156, Systems Development Corporation
(March 1960).
11. D. G. Malcolm, Editor, "Report of System
Simulation Symposium," American Institut~ of Industrial Engineers (May 1957).
12. W. E. Alberts and D. G. Malcolm, "Report
of the Second System Simulation Symposium,"
American Institute of Industrial Engineers (Feb.
1959).
13. W. E. Alberts and D. G. Malcolm, Report
No. 55, "Simulation and Gaming: A Symposium,"
American Management Association (1961).
14. S. S. Tomkins and S. Messick, "Computer
Simulation of Personality," John Wiley & Sons,
Inc., New York, June 1962.
15. J. Moshman, "Random Sampling Simulation
as an Equipment Design Tool," CEIR (May
1960).
16. A. Rich and R. T. Henry, "A Method of
Cost Analysis and Control Through Simulation,"
Linde Company.
17. H. N. Shycon and R. B. Maffei, "Simulation

267

-Tool for Better Distribution," Harvard Business
Review (Dec. 1960).
18. D. G. Malcolm, "System Simulation - A
Fundamental Tool for Industrial Engineering/' Journal of Industrial Engineering (June 1958).
19. K. J. Cohen, "Simulation in Inventory Control," Chapter XV, Production Planning & Control,
R. H. Brock and W. K. Holsterin, Merrill Books,
Columbus, Ohio, 1963.
20. D. G. Malcolm, "Simulation-Management's
Laboratory," Simulation Associates, Groton, Conn.
(April 1959).
21. D. G. Malcolm, "The Use of Simulation in
Management Analysis-A Survey and Bibliography,"
SP-126, System Development Corporation (Nov.
1959).
22. E. LaGrande, "The Development of A Factory Simulation System Using Actual Operating
Data," Management Technology, vol. 3, no. 1, (May
1963 ).
23. A. J. Rowe, "Management 'Decision Making
and the Computer," Management International, vol.
2, no. 2 (1962).
24. M. Bulkin, J. L. Colley, H. W. Steinhoff, Jr.,
"Load Forecasting, Priority Sequencing and Simulation in A Job Shop Control System," unpublished
paper, Hughes Aircraft Co. (May 1965).
25. M. R. Lackner, "SIMPAC: Toward A General Simulation Capability," SP-367, System Development Corporation (Aug. 1961).
26. C. P. Bonini, "Simulation of Information
and Decisions in the Firm," Stanford University
(April 1960) .
27. D. F. Boyd and H. S. Krasnow, "Economic
Evaluation and Management Information Systems,"
I.B.M. System Journal, vol. 2 (March 1963).
28. E. B. Roberts, The Dynamics of Research
and Development, Harper & Rowe, New York, Jan.
1964.
29. A. J. Rowe, "Research Problems in Management Controls," Management Technology, no. 3,
December, 19
30. R. Bellman and P. Brock, "On the Concepts
of A Problem and Problems Solving," American
Mathematical Monthly, vol. 67, no. 2 (Feb. 1960).

THE ROLE OF THE COMPUTER IN HUMANISTIC SCHOLARSHIP

Edmund A. Bowles
Department of Educational Affairs
IBM Corporation
Armonk, New York

Within the past dozen years or so, the computer
has made itself felt in every aspect of our society.
One hundred years ago, it was the Industrial Revolution which wrought profound changes in the economic and social fabric of the western world. Today there is an upheaval of comparable force and
significance in the so-called Computer Revolution.
Indeed, Isaac Auerbach has characterized the invention of the computer as being comparable to that of
the steam engine in its effects upon mankind. He
predicted that the computer and its application to
information processing "will have a far greater constructive impact on mankind during the remainder
of the 20th Century than any other technological
development of the past two decades."1
To cite but one example, the so-called information' explosion has affected all areas of knowledge, '
scientific and humanistic alike, making analyses
both increasingly complex and time-consuming.
During much of the century, knowledge is estimated
to have doubled every ten years, and journals are
proliferating at the astounding rate of over three
per day. An overriding problem, or challenge, if
you will, is the integration of this new knowledge
into the existing world of scholarship as well as the
dissemination of these new ideas and concepts

269

within the intellectual community. at large. Here
again, one turns inevitably to the computer. In fact,
we have now reached the point where even an anthropologist speaks about the heritage of a culture
being stored in physical objects such as books and
computer tapes! More important, however, is the
existence of data processing and information retrieval as a new and useful tool of tremendous potential; a fact that must be recognized and accepted by
the nonscientific community of scholars.
Let us consider for a moment the principal advantages of the computer to humanistic scholarship
in general. Its incredible speed allows the scholar to
accomplish in a short time what would otherwise
take him a whole lifetime of drudgery to accomplish. Its storage or memory constitutes an infinitely more reliable repository than the mind of' the
proverbial absentminded professor. Its great accuracy is completely dependable even when untold
mountains of statistical data require handling. And
final'ly, its automatic operation is not subject to the
vagaries of human fatigue, periods of interruption,
or even of mood. To the humanist, I would suggest
the most important .of these advantages is the immense saving of time gained by the use of computers. It is useful to remind ourselves that the Oxford

270

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

English Dictionary took some 80 years to complete
with several generations of editors. Jakob and Wilhelm Grimm's monumental Deutsches W orterbuch
began to appear in 1854 and wasn't completed until
1960. Similarly, the manual indexing of the complete works of Thomas Aquinas (approximately 13
million words) would take 50 scholars 40 years to
accomplish, but thanks to the computer, the total
time required by a few scholars working mainly in
Italy was less than one year. 2 A concordance to the
Revised Standard Version of the Bible was produced on a high-speed computer within a period of
several months as compared to the King James
Concordance of the last century which took 54
scholars 10 years to accomplish. 3 The deciphering
of the Mayan hieroglyphic script by Russian mathematicians, we are told, took only 40 hours of computer time for which a human being would have
needed thousands of years to accomplish. 4 All this
leads to the inevitable conclusion that there are a
number of scholarly tasks-call them the more tedious clerical chores, if you will-that in this age demand the use of the computer. Certainly, one can
no longer think of concordances, dictionaries, or
projects involving masses of statistical data and
numerous cross-correlations without bringing into
play the tools of data processing. Thus, the computer's power can be harnessed to relieve scholars in
the humanities of some of their most burdensome
activity while at the same· time providing their research with the benefits of greater speed and accuracy. More important by far, however, are the more
creative uses of data processing as an aid in such
areas as stylistic analysis. More of this in a moment.
Unfortunately there is a great deal of suspicion,
fear, and ignorance on the part of the humanist
concerning the computer and its legitimate role in
scholarship. Some see the machine as eventually
making decisions that man himself should make.
Others find sinister implications in every technological advance, maintaining the attitude that the humanities and technology don't mix. Finally there
are those who, ignorant of mathematics, fear they
are totally and forever incapable of comprehending
the computer and therefore dismiss it. Although no
one would suggest burning .at the stake the maker of
a computerized concordance, as was almost the fate
of the first person to make a complete concordance
of the English Bible in 1544, the computer-oriented
humanist does face some formidable oppositions.

1965

Ironically, while the impact of the computer,
as stated at the beginning of this paper, may be
compared to the influence of the Industrial Revolution one hundred years ago, there is also an analo'gous reaction among many highly placed scholars to
so-called computer-oriented humanistic research.
Not that any misguided intellectual will physically
attack "the dark Satanic mills," as did their Luddite
ancestors, but we do have their counterparts today
who, kowing little of the computer's advantages and
limitations, damn the machine as not only useless
but dangerous to the world of scholarship. To some
of the older, more conservative scholars, putting
lines of verse into a computer seems profane, like
putting neckties into a Waring Blender, as one professor remarked. More seriously, there are academicians who place no value on the scholar's time, like
the professor who, when told that data processing
would vastly speed up the production of an EnglishOld Iranian dictionary, went so far as to say that
what is not needed is a computer but rather enough
money for someone to be completely free for several years so he could sit down and do the necessary
work. A Scottish minister and mathematician sent
an article on the u~e of the computer in biblical
scholarship to a publisher. It was returned promptly
with a notation, "I do not understand this, but I am
quite sure that if I did understand it it would be of
no value." One scholar said a few years ago that,
"If you have to use a computer to answer a question, it is not a question which I would care to
put." Fortunately for the humanities, things are
changing rapidly.
Let us reveal the negative position for what it is
as we now examine some representative prgjects
within various humanistic disciplines which have
made extensive use of the computer as both \an important and productive tool of scholarship.
In the field of archeology, for example, the computer is of use in studies of shards or· fragments of
artifacts found in the diggings of ruins. In this connection, Jesse D. Jennings of the University of Utah
suggests constructing a matrix of coefficie~ts of
similarity of one artifact to another, and thus. to all
others within a given corpus of objects. The two
basic problems are classifying shards as to their cultural provenance and reconstructing whole artifacts
from broken fragments. Jennings has a body of
some 2,600 shards, each of which has 50 attributes.
Obviously, this represents an astronomical number

THE ROLE OF THE COMPUTER IN HUMANISTIC SCHOLARSHIP

of comparisons to make by hand, and yet for a
computer it is a relatively .simple task. 5
Mr. Dee F. Green, a research associate at the
University of Arkansas Museum, is using codes and
statistical techniques in correlation studies of burial
lots from Eastern and Southwestern Arkansas, and
in detailed analyses of ceramic, decorative, and
technical complexes and traditions exhibited in certain areas of the state. Following the maxim that
pottery is "the essential alphabet of archeology," a
code was. developed for reducing the individual attributes of some 4000-odd pottery vessels to a numerical system for computer handling. Once the materiat is classified, the various attributes. will be
sorted into discrete categories and then statistical
techniques applied to lump the attributes into statistically meaningful groups, or ceramic types.
Dr. Paul S. Martin and his associates at the Chicago Natural History .Museum have been using the
IBM 7094 computer at. the University of Chicago
to process archeological data from the southwestern
United States. 6 By this means they have discovered
spatial clusters of both pottery types and pottery
design elements within a pueblo site. It was found
that the clusters themselves tended to be localized
in certain well-defined areas of the site. In addition
it was found that certain room-types contained specific clUsters of artifact types. In each case, the
computer was given frequencies or percentages of
different artifact or shard types by provenance. The
variables were then correlated and submitted to factor analysis. This allowed comparison of roomfloors with one another to find out which rooms
were similar and which different. This information
was then interpreted in terms of. room function, social groups, chronology, and so forth.
As can readily be seen, such projects as these involving many thousands of artifacts, each with
numerous attributes, as well as the dozens of correlations between them, really demand the use of
computers to handle the sheer mass of information
and to derive really meaningful results therefrom.
Historians have faced a new impetus for the application of social science research techniques to
the analysis of historical political data. The InterUniversity Consortium for Political Research at
Ann Arbor is amassing a vast amount of raw data
transferred to tape storage on American political
history. In addition to the formation of a data repository committee, with close ties to the American
Historical Association, is the development of an

271

automated data retrieval system to make available
to historians and politicat scientists alike large bodies of information. The American Historical Association has set up an Ad Hoc Committee on the
Collection of Basic Quantitative Data of American
Political History under the chairmanship of Professor Lee Benson. Election statistics on presidential
campaigns from all counties in the United States
from 1824 to the present, roll-call votes during each
congressional session since 1789, data on federal
court cases, and census and ecological information
are all being computerized. Further materiat awaiting such attention exists in the fields of agriculture,
business statistics, industry, religion, economic, social, and cultural data, foreign trade, employment,
tax data, and housing. The amount of such unpublished information available is staggering. For but
one year in American history, the U.S. Census Bureau Catalog includes over 5000 computer tape
reels of data in the above-mentioned fields.
The Inter-University Consortium held a training
program during the past three summers consisting
variously of elementary courses such as "Introduction to Survey Methods," and "Cases in Survey Research," an eight-week Graduate Pro-Seminar in
Behavioral Research Methods and Quantitative Political Analysis, and advanced seminars conducted
by both the Department of Political Science and the
Survey Research Center of the University of Michigan. To the best of my knowledge, this is the first
and only attempt within a given field of humanistic
endeavor to provide computer training for its constituents.
One of the earliest historical studies involving
the use of data processing was the study of Massachusetts shipping during the early Colonial period
made by Professor Bernard Bailyn of Harvard
University.7 Faced with the problem of sketching a
realistic picture of the subject, he came upon a perfectly preserved shipping record for an I8-year period containing information not only about the vessels registered but about the owners as well; in
other words, material of early American social and
economic history. Bailyn not only summarized and
tabulated this data in comprehensive fashion but
used the opportunity to assess realistically thepossibilities of applying machine techniques to historical material and to explore the problems of procedure.
The shipping register in question consisted of
1696 entries, each giving information about a ves-

272

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

sel and the people who held shares in it. A total' of
4725 punched cards were produced which contained
all the information available in the register on the
ships and their owners. Codes were developed not
only for the purely quantitative data but for such
qualitative information as names of people and
places, vessel types, occupations, building sites, etc.
Although numerous problems were encountered
along the way, it is significant that Bailyn's book
closes with the statement that only with these tools
and techniques was the analysis of the register possible at all.
Two other computer-oriented historical research
projects involve content analysis. Professor Richard
Merritt of Yale University is studying the developing symbols of the American sense of community or
identity as reflected in five colonial newspapers.
Professors Robert North and Ole Holsti of Stanford
University are analyzing the origins of World War I
by means of computer techniques for scanning and
reporting the appearance of themes and relationships in a large body of historical' material pertaining to decision-making during the 1914 crisis. 8
"Communication is at the heart of civilization," but
since students of international relations are considerably more restricted in access to data than most
social scientists-direct access to foreign policy
leaders is severely restricted-one method is to assess their attitudes, values, and assessments by
means of a computer content analysis of political
documents at times of crisis. North and Holsti constructed a dictionary of words, such· as abolish, accept, or armaments. They are sought out in historical documents and changes in style are noted as the
historical crisis grows in severity in terms of verbal
effectiveness, strength or weakness, and activity or
passivity. By this means one can explore for examantagonism and the degree of cohesion between the
pl'e the relationship between the level of East-West
Soviet Union and China.
Professor William Aydelotte of the University of
Iowa has used the techniques of data processing to
aid in the study of the voting patterns in the British
House of Commons in the 1840's.9 During Sir Robert Peel's ministry, Commons debated and voted on
a number of substantial political issues. There were
divisions as well on various aspects of religious
questions, the army and fiscal reform. There exists
an unexploited source in the so-called .division lists
giving information on all the men in Parliament so
far as they voted on the issues in question. The

1965

complexity of this material, the richness thereof,
the fact that most members of Parliament did not
vote consistently "liberal" or "conservative" on all
issues made this entire decade of Parliamentary history ripe for computer analysis; a project which resulted in a total of 6441 four-fold tables each of
which was punched on a separate IBM card.
Certainly the most well-known use of computers
in the field of literature is the construction of verbal indices. Briefly, there are two forms: first, a
simple alphabetical' list of text showing the frequency or location of the words or both; and second, a
textual concordance showing all the words of a given literary work not only alphabetically but in context as well. In this form, each word appears as
many times as there are words within the parameter
arbitrarily chosen for it along with the relevant passages of which it is apart. Such a concordance is
not only of immense value to a literary scholar from
the point of view of time saved, but is useful' also to
those in other disciplines employing literature as
source material. For example, concordances to the
poetry of American authors have been issued since
1959 by the Cornell University Press. In the case of
the works of Matthew Arnold, the lines of verse
were punched on IBM cards, one line per card, to
which was added the line number and page number
from the standard edition and variance from other
collations. A separate title card was punched and·
inserted before each poem. The entire deck of some
17,000 cards was printed out and transferred to
magnetic tape. A computer-generated concordance
program was then made and ultimately a tape prepared with all the significant words of Arnold's
texts arranged in alphabetical' order along with their
locations. A final print-out formed the basis for the
published index. 10
In similar fashion, Professors Alan Markman and
Barnet Kottler of Pittsburgh and Purdue respectively have prepared a computer concordance to five
Middle English poems, ·perhaps the best known of
which is Sir Gawain and the Green Knight. l l Dr.
John Wells of Tufts University is making a computerized word-index to the Old High German glosses
cribbed between some 140,000 lines of medieval
Latin text.
Professor Alice Pollin, working with the Computer Center at New York University, produced a
guide, or cr~tical index, to the 43 volumes of the
Revista de Fi/ologia Espanola from 1914 to 1960,
cross-indexed by authors, subject matter, and book

THE ROLE OF THE COMPUTER IN HUMANISTIC SCHOLARSHIP

reviews. A total of nearly 900 pages was the result,
the product of approximately 60,000 punched cards.
The printout sheets were reproduced photographically and issued as a bound volume. 12 In this way a
methodology for the machine-indexing of periodicals was established.
However, it is in the area of textual analysis that
computer-oriented research in literature shows exceptional and exciting promise for the future. The
massive comparison of text where there are several
or even dozens of sources presents an almost insurmountable problem for the scholar. To compare in
complete detail as few as 40 manuscripts might take
the better part of a lifetime. It is this type of activity that cries for the use of data processing techniques.
Perhaps the first such effort was the study
by Professors Mosteller and Wallace at Harvard
University, and actually continuing over a period of
years, to solve the authorship question of 12 disputed Federalist Papers. 13 Briefly, literary styles of
Madison and Hamilton were identified, then
matched with the style of each of the disputed papers. Having found such factors as sentence length,
vocabulary and spelling to be of no help (the two
authors were remarkably alike), it turned out that
differences in the use of so-called key function
words-particularly those of high frequency such as
from, to, by, upon, also, and because - served to
pin down authorship of the papers in question.
From a number of computations, Mosteller and
Wallace found that most of the disputed documents
were written by James Madison. But consider for a
moment the problem of Dr. John W. Ellison,.a biblical scholar from Massachusetts who, for his doctoral dissertation, studied 309 manuscripts of the
Greek New Testament, then went on to prepare a
complete concordance of the revised Standard Version of the Bible. Fortunately, he used a computer
to assist him in these gigantic tasks. However, there
are over 4600 known manuscripts of the whole or
part of the New Testament, with cross-fertilization
in the copying process that has been going on for a
thousand years or more. Here the use of the computer to determine the interrelationships of the
manuscripts of the text is mandatory.
Scholars at other universities, while not faced
with such vast problems of correlation, are .actively
engaged in similar work. For example, a definitive
edition of the works of John Dryden is being prepared under Professor Vinton Dearing at U.C.L.A.

273

with textual coUation aided by the use of the
computer.14 This grew out of an existing corpus of
240,000 manually indexed cards. Variant texts of
the final section of Henry James's novel Daisy Miller are· being collated by computer in a pilot project
at New York University under Dr. William Gibson.
This, too, is d~signed to aid the· editor faced with a
number of varying manuscripts or printed editions
in making up an Urtext or variorum edition by
supplying him with a printout indicating the identifies between the versions, sentence by sentence.
Dr. James T. McDonough of St.Joseph's College
has demonstrated with the help of a computer that
Homer's Iliad indeed exhibits the consistency of
one poet.15 His study was in part a response to the
persistent question of whether one poet wrote the
epic or if it consists of separate, short ballad-type
songs by separate authors from various times and
places aU strung together. McDonough prepared in
systematic fashion a metrical index of the Iliad, not
by spellings but by the rhythmic function of all 112,000 words in their 157 metrical varieties. Once the
rhythm of each of the 15,693 lines was coded and
punched, an IBM 650 machine was able to isolate
the individual words, sort, count, and print out the
resulting wordlists in a matter of hours.
Mrs. Sally Sedelow of Saint Louis University has
described the use of the computer for a rigorous
description and analysis of pattern attributes of
text. 16 She mak~s the observation that while .colteagues in linguistics have been making major contributions to such fields as machine translation and
information retrieval-and in return, gaining important insights into the structure of languagethose in literature have offered very little and
gained very little. The aim of such studies is to discover the differences between writers' styles and to
shed light on the changes of an individual author's
style over a period of time. Known as "computational stylistics," these techniques deal with the
parameters of literary style in terms of its constituent elements: rhythm, texture, and form.
Turning now to the field of musicology, Professor Harry B. Lincoln of Harpur College is using the
techniques of information retrieval to compile a catalog of musical incipits (that is, brief melodic
quotations of the first six to eight notes of a composition), of the entire body of 16th century Italian
frottole, a known body of some 600 polyphonic
compositions. Since the possible permutations and
combinations of the beginning notes of such pieces

274

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

are almost infinite, both as to pitch and rhythm,
such brief quotations represent unique identifications of the compositions from which they are taken. First the incipit is translated into alphanumerical form by means of a code which can activate a
photon printer. This is a device with a high-speed
rotating disk containing about 1400 characters (in
this case, musical), a light source, lens, and photographic film. This code consists of even numbers
for the spaces, odd numbers for the lines of the musical stave, an H for a half note, a W for a quarter
note, and so forth. One punched aperture card with
a 35mm photograph of the particular score set in
the right-hand side holds information such as the
composer, title, voice part; accession or serial number. The second card contains the proper sequence
of note representing the incipit coded for the photon device. When computerized, this code causes
the printer to raise or lower its focus to the proper
line or space and, when the correct note or other
symbol is in place, shoot a beam of light through
the proper aperture in the disk exposing the film at
that time with the desired musical symbol. At the
same time, a computer program extracts from this
coded information the intervalic order or melodic
profile of the particular incipit. This, then, can be
compared to other musical sources for instances of
borrowings by one composer from another, or from
other works of the composer himself.
A second major area is the use of data processing
as an aid in the analysis of the structure of music.
For example, Professor Bertram H. Bronson at Berkeley has used computer techniques in the study of
folk-songsY By means of punched cards, he coded
the important elements of folk tunes including
range, modal characteristics, prevailing time signature, number of phrases, the nature or pattern of
refrains, final cadences, and so forth. In this way,
an entire corpus of folk song material can be recorded both fully and accurately. The v~rious elements can then be analyzed for statistical patterns,
comparisons, or indeed subjected to any other query
consistent with the data.
A computer can also serve to test hypotheses
through simulation and model's. Dr. Allen Forte of
Yale University is applying machine analysis to
help provide insights regarding the structure of the
atonal music of Arnold Schonberg. The structure of
so-called pre-twelve-tone (or nontonal) music is
still somewhat of a mystery. Mr. Forte has found
the traditional nonmachine forms of analyses lack-

1965

ing and has stated that a structural description of
this music would be virtually impossibl'e without
the aid of a computer. If I understand the outline of
his program, he is formulating a basic working
theoretical hypothesis based upon linguistic and
mathematical models for musical structure, developing an analytical method to explore his ideas by
means of the computer; he then will test the result.
In quite another application of computer techniques in the analysis of musical styl'e, a program
can be written to search for meaningful patterns
and relationships which; because of the number and
quality of variables, might remain obscured and undiscovered if left to the human brain. From these
very patterns, the researcher can then develop new
and significant hypotheses. An interesting example
of this is the proposal of Professor Jan La Rue of
New York University to evolve machine language
to describe stylistic phenomena in 18th century
symphonies, thereby permitting complex correlations and comparisons far beyond the reach of the
hand tabulation. Just as the literary scholar has
quantified style in terms of form, rhythm, and te~­
ture, the musicologist has devel'oped a set of guidelines for the purpose of stylistic analysis, breaking
down the various musical elements into sound,
form, harmony, rhythm, and melody. This technique is admirably suited to computer procedures
when one would wish, for example, to determine
whether or not a symphony attributed to one composer was actually written by him. By this technique, the stylistic attributes of a questionable or
anonymous symphony could be compared for correspondences with the stylistic quantification of a
given composer's known symphonies stored within
the computer memory.
Finally, I must mention the Musical Information
Retrieval project at Princeton University being carried out under the direction of Professor Lewis
Lockwood. This involves a programming language
for an IBM 7094 computer by means of which musical data· is stored in the computer for interrogation and manipulation. 18 Information representative
of each note in its complete context and relationship within the score is coded manually and then
stored in anticipation of the questions to be asked.
The pilot project at Princeton involves a stylistic
investigation of the 22 masses and mass movements
of the Renaissance composer J osquin des Pres. In
its broader aspects this type of program enables the
scholar to search for and locate reliably all elements

THE ROLE OF THE COMPUTER IN HUMANISTIC SCHOLARSHIP

within a given category, such as accidentals, or all
examples of a particular intervalic progression. In
addition the computer program can serve as a check
on discrepancies between the original manuscript
and later editions or transcriptions.
The projects I have just described to you represent but a few highlight from the growing roster of
scholars using the computer in humanistic research.
A list of such activities published last spring by the
American Council of Learned Societies reveals well
over a hundred individuals involved with the tools
of data processing. 19 When compared to the state of
the sciences versus the computer some 10 years ago,
the prognosis for the future is good indeed.
In a lecture at M.LT., entitled, "The Computer
in the University," the prediction was made that in
a few years the computer may have settled immutably into our thought as an absolutely essential part
of any university program in the physical, psychological, and economic sciences. On the basis of what
I have said, I think the time has come to amend
that statement to include the humanities. Furthermore, within a short time, I believe a knowledge of
data processing will become part of the "common
baggage" of research tools and techniques required
of every graduate student in the liberal arts. I am
even tempted to go a step further and state that
with the increasing number of courses in programming being offered at our universities the time may_
come when some students in the humanities may be
as fluent in programming as in writing English
composition. Certainly, the computer is fast becoming an important and indispensable research tool
for faculty and students alike.
The value of such an acquaintanceship can be
seen in the case of a professor of art history and
archeology at an eastern college. Describing himself
as probably the man on campus "least likely to benefit from a computer," he took a short summer
course at the college computer center. Later, in reporting on the instruction, he said, "The course profoundly affected the thinking of all of us. This is
the important thing-much more important than
the machine itself. Of course we know that it is the
brains behind the machine that make these miracles
possible. Nonetheless, it is a weapon of such power
that all intelligent men and women everywhere
should know the kind of things it can do. Once we
know that, we can devise ways to make use of it."
In this connection it is useful to bear in mind
Alfred North Whitehead's remarks 40 years ago

275

that "the reason why we are on a higher imaginative level than the 19th century is not because we
have finer imagination, but because we have better
instruments-which have put thought on to a new
level."
Let us, therefore, see the computer as a means of
liberation, freeing the humanist scholar from the
time-consuming operations of the past; a tool providing him in rapid fashion with a proliferating series of sources in the form of statistics, collations,
printouts, cross-references, frequency counts and
hypothetical models upon which he may build a research of new dimensions and complexity. Viewed
in this light, it is a device the potentialities and applications of which we cannot afford to ignore.
REFERENCES
1. Isaac Auerbach, ."Information: A Prime Resource," in The Information Revolution, New York
Times, May 23, 1965, p. 4.
2. Paul Tasman, "Literary Data Processing,"
IBM Journal of Research and Development, vol. I,
pp. 249-56 (1960).
3. See the preface to Nelson's Complete Concordance to the Revised Standard Version Bible,
New York, 1957.
4. Felix Shirokov, "Computer Deciphers Maya
Hieroglyphs," UNESCO Courier, vol. XV, pp.
26-32, (1962).
5. Jesse D. Jennings, "Computers and Culture
History: A Glen Canyon Study," Paper delivered at
a meeting of the American Anthropological Association, San Francisco (Nov. 21, 1963).
6. See for example J. A. Brown and L. G. Freeman, Jr., "A UNIVAC Analysis of Shard Frequencies from the Carter Ranch, Pueblo, Eastern Arizona," American Antiquity, vol. XXX, pp. 162-167,
(1964); and Paul S. Martin, "Archeological Investigations in East Central Arizona," Science, vol.
CXXXVIII, pp. 825-27 (1962).
7. Bernard Bailyn, Massachusetts Shipping
1697-1714: A Statistical Study, Harvard University
Press, Cambridge, Mass., 1959, esp. pp. 137-141
("A Note on Procedure").
8. Ole R. Holsti, "Computer Content Analysis
as a Tool in International Relations Research," in
Proceedings of the Conference on Computers for
the Humanities, Yale University, New Haven,
Conn., 1965.

276

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

9. William O. Aydelotte, "Voting Patterns in
the British House of Commons in the 1840's,"
Comparative Studies in Society and History, vol. V,
pp. 134-163 (1963).
10. Stephen M. Parrish, A Concordance to the
Poems of Matthew Arnold, CorneU University
Press, Ithaca, N. Y., 1959; see also his "Problems
in the Making of Computer Concordances," Studies
in Biography, vol. XV, pp. 1-14 (1962).
11. See Alan Markman, "Litterae ex Machina:
Man and Machine in Literary Criticism," Journal
of Higher Education, vol. XXXVI, esp. pp. 70-72
(1965).
12. Alice M. Pollin and Raquel Kersten, Guia
para la Consulta de la Revista de Filologia Espanola, New York University Press, New York, 1964.
13. Frederick Mosteller and David L. Wallace,
"Inference in an Authorship Problem," Journal of
the American Statistical Association, vol. LVIII,
pp.275-309 (1963).

1965

14. On methodology, see Vinton A. Dearing,
Methods of Textual Editing, University of California Pres, Los Angeles, Calif., 1962.
15. James T. McDonough, Jr., "Homer, the Humanities, and IBM," in Proceedings of the Literary
Data Processing Conference, IBM Corporation
Yorktown Heights, N. Y., 1964, pp. 25-36.
16. Sally Y. Sedelow, "Some Parameters for
Computational Stylistics: Computer Aids to the
Use of Traditional Categories in Stylistic Analysis," ibid., pp. 211-229.
17. Bertrand H. Bronson, "Mechanical Help in
the Study of Folk Song," Journal of American
Folklore, vol. LXII, pp. 81-86 (1949).
18. See Michael Kassler, "A Simple Programming Language for Musical Information Retrieval,"
(Project 295D, Technical Report No.3), Princeton
University, Princeton, N. J. (1964).
19. "Computerized Research in the Humanities:
A Survey," ACLS Newsletter, vol. XVI, no. 5, pp.
7-31 (May 1965).

THE STRUCTURE AND CHARACTER OF USEFUL
INFORMATION-PROCESSING SIMULATIONS
Louis Fein
Synnoetic Systems
Palo Alto, California

I am neither a biologist nor a psychologist. I am
merely an interested observer who has paid diligent,
respectful, yet disciplined attention to this matter.
For a while, I blamed my own ignorance and lack
of understanding of psychological and physiological
processes and of the terminology used to describe
them, for my inability to find what professed brain
modelers were learning about the brain itself. But I
began to doubt that it was I who was at fault, as I
became startlingly aware of the various defensive
postures taken by professed modelers of psychological and physiological processes whom I pressed in
correspondence and in conversation to tell me what
they now knew, that they didn't know before, about
a particular psychological or physiological process,
now that they had a working model; or even what
kind of knowledge they expected to gain with the
use of a model that was not yet developed. The responses were largely evasive, irrelevent, defensive,
offensive, insulting to my person and my ancestry; I
was accused of wanting to deprive honest researchers of their livelihoods; I was ignored, or referred
to the vast literature on the subject; I was admonished to be tolerant and to give this young discipline a chance to develop. Some didn't want to discuss it at all; others sent me reprints. My Freudian
analysis of such responses was orthodox; when a

INTRODUCTION
I am curious about how the brain and nervous
system work. So I became interested in the properties of useful models-especially of useful information-processing models of psychological and physiological processes.
In my professional pursuits as a sometimes consultant, writer, lecturer, teacher, and designer in the
computer field, I have attentively and respectfully
listened, observed, read, and conversed about models that were inspired by the desire of the modelers
themselves to know how the brain works. I doggedly sought for a particular bit of knowledge of how
the brain works that was gained by a researcher primarily because he used a putative model of the
brain-as opposed to knowledge about the brain
gained by direct observation and measurement not
predicted or suggested by a model. For years, I
have been singularly unsuccessful in finding any
neural net models or digital computer program
models (i.e., the information-processing models I
am familiar with) whose use led to a particular experimentally verifiable piece of knowledge of how
the brain works. I have found l'Ots of information
about the models themselves; but not about the
brain.
277

278

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

simple question to a patient elicits a noisy and
boisterous defense, then there is something wrong
with the patient, not the questioner. My conclusion
was that a great deal of psychological and physiological modeling was both aimless and fruitless. I
started to wonder why neural net models and digital
computer models were not as fruitful for gaining
verifiable knowledge about psychological and physiological phenomena, especially of the brain and
nervous system, as mathematical, computational,
and physical models have been for learning about
physical phenomena such as wave motion, aircraft
behavior, and circuit operation. Indeed, it is rare to
find an article or talk on psychological or physiological modeling without the author's observing that
since models have helped the engineer and physicist
to gain knowledge in his subjeCt then models should
be expected to help the author to gain knowledge in
his.
So I wondered in what ways the fruitful models
are different from the fruitless ones. I assumed that
the reason modeM'rs in psychology and physiology
were having little luck was that their models didn't
have whatever characteristics models should have to
suit the modelers' purposes. I tentatively formulated
the question: what are the characteristics of an information-processing model that would suit it to the
purposes of a psychologist or physiologist interested
in some aspect of the brain and nervous system. I
reasoned that once I knew the character of useful
models, I would find that unsuccessful modelers
were using models that did not have certain of these
required characteristics. I want, therefore, to present what I think the structure and character of the
total modeling process must be in order for it to be
potentially useful in psychology and physiology.
Let me give a summary of my viewpoint before
systematically presenting it for your consideration.
Recall that we are focusing attention both on
what physiological or psychological knowledge, if
any, a model can lead to, and of what value such
knowledge is to a particular practitioner-a surgeon, psychiatrist, public health specialist, internist.
The utility of a model depends on how helpful it is
in gaining new knowledge; the value of new knowledge obtained with the help of a model depends on
how much more effective, efficient, and economical
it makes a practitioner in doing his job. In this
context, "A is a model of B" would be an incomplete statement. One must at least say that A is a

1965

potentially useful model of B, if the use of A can
help the simulator predict or suggest new knowledge
in B (expressed in a suitable form and language)
that could be of some value to some practitioner.
But even these three elements (1) the model A,
(2) the modeled system of interest, B, and (3) the
new knowledge hypothesized by the simulator about
B, are not enough. Another element is necessary in
the modeling process if one is to measure its utility,
i.e., how helpful it is in gaining new knowledge. In
order to test these hypotheses-which are predictions or suggestions of answers to particular questions of the simulator, or solutions of his problems,
or resolutions of issues-the simulator must design
and carry out valid and feasible experiments on the
system of interest, B, with the use of appropriate
instruments and apparatus together with procedures
for interpreting the results of the experiment. Without such experiments the hypothesized new knowledge remains conjecture; the simulator cannot give
the practitioner confirmed answers to his questions,
problems, or issues; hence he can't say anything
about the utility of the modeling process.
The crucial issue of whether or not an experiment can be both designed and carried .out to test
the hypotheses suggested by the model A about the
system of interest, B, usually depends on whether
the controllabl'e parameters and variables in the
model A have correspondences in what is modeled,
B; whether the corresponding parameters and variables in B are accessible to the investigator so he
can control and vary their values; and whether the
investigator has instruments suitable for observation and measurement of B.
Without being able to show correspondences between controllable parameters and variables in the
model and in what is modeled, the model is not
even potentially useful as an aid to gaining new
knowledge; without instrumentation, even if one
showed the correspondences, an experiment could
perhaps be designed but not carried out to realize
the potential utility of a model.
The experiments may be gedanken experiments,
i.e., experiments that the simulator would design
and carry out if he knew the correspondences and if
he had the instruments. Thus, a potentially useful
and valuable modeling process has four necessary
elements: ( 1) the model, (2) the modeled system
of interest B, ( 3 ) hypothesized new knowledge
about B, (4) the experiment.

STRUCTURE AND CHARACTER OF USEFUL INFORMATION-PROCESSING SIMULATIONS

THE STRUCTURE AND CHARACTER OF
A SIMULATION
I have used the word "model" to introduce these
notions because it is a familiar term. In other
fields, practitioners use terms such as: mapping,
analog, similitude, isomorph, homomorphism, and
emulation, often as synonyms of model. But as with
the term, model, it is often unclear what these terms
mean. Because the word model is so ambiguous, its
use will be limited in what follows. To avoid ambiguity and misunderstanding, I start with a statement
of what I am not here talking about; then a statement
of what I am interested in; then some definitions.
I am not here interested in the process whereby
an investigator is motivated to design, construct,
and use a system that behaves or is otherwise similar to another system-an investigator who, after
acknowledging his debt to it for its inspiration, has
no further interest in the other system. This species
of "model" is not what concerns us. I emphasize
this distinction because I find that it is often not
made and, if made, misunderstood. If I ask a man
who has announced that he is simulating, say, the
cognitive process, what he has learned thereby
about the cognitive process, and he responds with
what to me is a non sequitur, by telling me what a
wonderful new computer language he has invented
or what clever things his program can do, then this
is an instance of the kind of misunderstanding I am
trying to avoid by making clear and careful definitions of important and distinguishable notions and
objectives.
Nor am I here interested in models that serve as
pedagogic vehicles for educating an investigator and
presenting to him knowledge already in hand.
I am here interested in the process whereby an
investigator designs, constructs, and uses a certain
kind of instrument (heretofore variously called
model, or mapping, or analog ... ) with the aid of
which he forms hypotheses about knowledge of particular objects, phenomena, properties, functions,
events, or thoughts of interest in his field, and who
has designed feasible and valid experiments to test
these hypotheses (verify or find them false).
The process must have all four interdependent
constituents: (1) the investigator, who (or which)
I will call the simulator; (2) the instrument which
(or whom) I will call the simulate; (3) the object
or phenomenon, or properties, or events or thoughts

279

of interest to the simulator, which I will call the
simuland, and (4) the design of the feasible experiments, or the gedanken experiment, which I will
call the experiment. The process itself, I will call
the simulation or the simulation process.
Note that as knowledge is accumulated in developing fields, such as physiology or psychology, or
even information processing, the simuland is rarely
a complex system such as the ear, or the brain, or a
computer, or the eye. It is more often a part of the
ear, or of the brain, or of the computer, or of the
eye. One usually constructs a simulate in order to
use it as an aid in gaining new information, insight,
knowledge, or understanding, about a single property, or a single function, or a single part of a subsystem. Only occasionally, as is the case with "laws"
of physics, will a single simulate serve to answer
questions about many properties, many functions, a
complex of many parts. Thus, we speak of a simu-,
late, useful for finding or calculating or predicting
such things as signal' transmission modes in nerve
fibers; or the logic design of the addressing system
of the core memory in a computer. The simuland is
here meant to be only that part of the simulator's
system of interest about which he seeks knowledge
with the aid of a particular simulate. I emphasize
this point because I believe that speaking of "brain
modeling," to pick only one instance, often confuses both the investigator and those interested in
his work. If an investigator specifies an ambiguous
objective for himself by saying that he is simulating
the brain when he means he is simulating a property of a part of the brain, then his colleagues may
misconstrue him, and they may expect results from
him that the investigator never intended to obtain.
To make these ideas explicit, I ask the reader to
imagine that we have the problem of writing a
manual on a simulation process as herein defined,
for the preparation of a college laboratory report; or
a proposal to a government agency; or the final report to a government agency; or a paper for a
professional journal; or a graduate dissertation. The
organization and format of such a document will
reflect what I consider to be the necessary structure
and character of potentially useful and valuable
simulation processes. It will at the same time systematically disclose to the reader the value, utility,
and progress of the simulation process reported on,
and the goals and intentions of the simulator. The
following is an abstract of such a manual.

280

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

THE PREPARATION OF A PAPER
ON THE SIMULATION PROCESS
This manual is intended to assist authors in the
preparation of reports, proposals, papers, articles,
and dissertations on simulation.
It should be understood that the specific organization and format suggested herein are arbitrary.
However, the literature on simulation is read by
many people with different orientations and varying
degrees of familiarity with the subject matter. For
these people to get the most out of documents on
simulation, they should expect the material in them
to be presented in a consistent organization, style,
and format. Not only does the reader benefit by the
application of these rules, the author benefits too;
they serve as a goad to logical, critical, explicit, and
disciplined thinking and writing.
A paper on a simulation process should always
mention the hypothesized knowledge that was or is
to be tested; to what purpose the knowledge obtained is being put or might be put; a description of
the simulate, a description of the simuland, and a
report of the design of the experiments. The emphasis each topic receives will, of course, depend on
the pattern of emphasis in the work itself. The
question arises: in what order should these topics
be covered in a paper, and what specific items
should be covered under each topic. The following
organization and format is suggested:

Outline of a Report on the Simulation Process
I.

SIMULAND

A. Statement (in the language of the simulator's
field) of what knowledge is already verified
or to be assumed about the structure, functions, properties, and theorems of the system
of interest to the simulator - the simuland.
B. Statement (in the accepted language of the
simulator's field) of a specific question the
simulator wants an answer to; or problem
he wants solved; or an issue he wants resolved, with the aid of the simulate and
the experiment. This is the hypotheses to
be tested.
C. Acceptable form and language of the answer,
solution, or resolution.

II.

1965

SIMULATOR

A. Statement of the purpose and use to which
the new knowledge gained in the simulation
process is or might be put - the effect,
significance, and value of having such knowledge.

III.

SIMULA TE

A. Description in the language of the field of
the simulate, of the structure, functions,
properties, and theorems of the simulate.
B. Identification of corresponding controllable
and measurable or observable variables and
parameters in the simulate and the simuland.
C. The form of addressing the simulate with the
simulator's questions, problems, or issues,
in the language of the simulate.
D. The procedure for deriving from the simulate the answers, solutions, or resolutions.
E. The correspondence rules by which question/
answer or problem/solution, or issue/resolution in appropriate form and language of
the· simulate are transformed into what the
simulator wants, i.e., the corresponding
question/answer or problem/solution, or
issue/resolution in acceptable form and
language of the simuland.
IV.

EXPERIMENT

A. The design of valid and feasible experiments
(which may be gedanken experiments)
whose sole object it is to test the hypotheses
of the simulate, i.e., to verify the hypothesized answers, solutions, or resolutions given
by the simulate, or to prove them false.
The form of the write-up of these experiments is typical of the form of the write-up
of laboratory experiments· performed in
school.
(1) Object of experiment: to test the hypothetical answers given in the simulate
(2) Procedures
( 3) Apparatus and instruments
(4) Results
( 5) Conclusions
( a) Verified hypotheses
(b) Unverified hypotheses
(6) Unexpected results - fall-out

STRUCTURE AND CHARACTER OF USEFUL INFORMATION-PROCESSING SIMULATIONS

(7) Suggestions for other
(a) Experiments
(b) Questions, problems, issues
( c ) Instruments
(d) Theory
THE UTILITY OF A SIMULATION
The utility of a simulation will clearly depend on
the extent to which the simulator learned what he
wanted to learn through the use of his simulate.
It may be noted that in any simulation, in order
for the simulator to learn what he wants to learn,
the simulate must bear a certain relation to its
simuland. Suppose a simulation system consists of,
say, a differential equation simulate from which the
simulator can learn about properties of sta~ding
acoustic wave patterns in an enclosed cylinder
(simuland) and that he can perform experiments in
which he can observe or measure correspondences
between properties of standing waves in his simulate and simuland. The utility of this simulation can
be high. But if the investigator, actually interested
in, say, properties of standing acoustic wave patterns in an enclosed cylinder (simuland), first hypothesizes a simulate of this simuland, and then
builds a simulate of the hypothesi~ed-simulate-of­
this-simuland, then he might thereby gain knowledge about the hypothesized but untested simulate,
but he cannot thereby learn anything about the
simuland. For instance, to use a digit-al computer to
solve a differential equation presumed to simulate
wave motion gives information about the differential equation but not about wave motion. Or to
write a digital computer program to simulate a hypothesized neural net model of a part of the eye will
tell you something about the hypothesized neural
network, not about the eye. (On the other hand, if
the differential equation has already been well established as a simulate of wave motion, the digital
computer can be said to give information about
wave motion.)
We will call a simulate of a simuland (or of a
well-established simulate-of-the-simuland) a first
order simulate; and the simulation process that
includes it, a first order simulation process. We will
call a simulate of a hypothesized-simulate-of-a-simuland, a second order simulate; and the simulation
process that includes it, a second order simulation
process, and we will say that only a first order
simulation process can have a nonzero utility.

281

We can now enumerate the major characteristics
that a simulation process must have in order for it
to have utility:
1. The simulate of the process must be a first
order simulate of the simuland. To use the
vernacular: you might learn something
about the ear from a model of the ear; but
you can't learn anything about the ear from
a study of a model of a hypothesized-model-of-the-ear.
2. There must be one-to-one correspondences
between the accessible, controllable, and
measurable or. observable variables and
parameters of the simulate and simuland.
3. There must be a well-designed experiment
for testing the hypotheses.
I mentioned earlier that I sought the characteristics of an information processing model that would
suit it to the purposes of a physiologist and psychologist and that once I knew the character of the
useful models, I would find that unsuccessful modelers were using models that did not have certain
of these characteristics. I have run some gedanken
experiments of recasting into the above framework,
papers that purport to simulate-by digital computer programs or by neural networks-physiological
and psychological processes such as memory, perception, neurosis, and cognition. In papers using
both of these types of information-processing simulations, simulators do not show one-to-one correspondences between accessible controllable and
measurable or observable parameters and variables
in the digital computer program or network and the
organism's brain, nervous system, or other organs of
interest. Nor do they have the instrumentation either to gain access to or to aid in controlling, varying, measuring and observing these variables and
parameters in the organisms themselves. Thus,
without the correspondences and without experiments, such simulations are fruitless.
In other instances, digital computer solutions are
reported for sets of equations representing a network that was inspired by an organic process, and
presumed to be a simulant of it. Obviously such
third order simulations have no potential utility for
learning anything directly about that organic process.
Finally, I read some papers, presumed to be

282

PRqCEEDINGS -

FALL JOINT COMPUTER CONFERENCE.

about simutation, in which I could not locate a
statement of what hypothesis was to be tested, nor a
statement about what specific questions or problems
the simulator hoped to answer, if his simulation
was successful. These were aimless simulations.
I would suggest to laboratory instructors, dissertation advisers, sponsors of research who prepare

1965

requests for proposals and who evaluate contractor's
or grantee's work, journal editors, teachers, and investigators interested in simulation as herein defined, that they would find it valuable in their
professional roles to insist that authors prepare
their written material in an organization and format
similar to the one presented in this paper.

THE CATALOG: A FLEXIBLE DATA STRUCTURE FOR MAGNETIC TAPE
Martin Kay and Theodore Ziehe
The RAND Corporation
Santa Monica, California

contains alternatives to which probabilities are assigned, then these will presumably be in the form of
floating-point numbers. This is what it is like for a
file to contain different kinds of information.
The notion of a catalog* was developed principally with the needs of linguistic computing in
mind. It is oriented more to the storage of information on a long-term medium, such as magnetic tape,
than to its representation in the high-speed store of
a computer. The elementary items of information in
a catalog are called data. The structure imposed on
the data making up a catalog is that of a tree-a
hierarchy of sets of information. Let us consider as
an example how a bibliography or the acquisitions
list of a library-catalogs in the conventional sense
-might be organized within this system. Each document or book has an entry in the file containing
various items of information about it. One of these
can be chosen as the key under which the others are
filed. For example, the acquisition number of an
item can serve as the key fer all information related
to the item. Under it there will be sections for author, title, journal if relevant, publisher, and date.
In an actual application, there would doubtless be

The files of data used in linguistic research differ
from those found in other research applications in
at least three important ways: (1) they are larger,
(2) they have more structure, and (3) they have
more different kinds of information. These are, of
course, all simplifications but not gross ones. It is
true that the files that must be maintained by a
large insurance company or by the patent office are
so large as to pose very special problems, but the
uses to which the files are to be put are fairly well
understood and their format and organization is not
usually subject to drastic and unexpected change. It
is also true that the data from a bubble chamber is
interesting only if collected in vast quantities, but
this is not the only respect in which a bubble chamber is a special kind of tool. A typical linguistic job
will bring together a number of files, each very
large by the standards of everyday computing: a
body of text, a dictionary and a grammar for example. The grammar, if it is anything but a very simple one, will contain a large number of elementary
items of information of different kinds, each related
to others in a number of different ways. This is
what it means to say that the file has a lot of structure. The dictionary may also contain grammatical
codes which may consist of characters from one of
the languages represented in the dictionary or may
be something altogether different. If the dictionary

*The catalog system has been developed through the
joint efforts of the Centre d'Etudes pour la Traduction
Automatique of the Centre National de la Recherche Scientifique at the University of Grenoble, France, and the
Linguistics Research Project of The RAND Corporation.

283

284

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

other sections but these will serve for the example.
The author section must be capable of handling
cases of multiple authorship without confusion and
we may assume that there is provision for giving
the institution to which each author belongs. The
journal section will also have subsections for volume and issue number.
A pair of entries might appear as in the diagram
at Fig. 1. The acquisition numbers of these two documents are 1746 and 1747 respectively. The first
has one author belonging to a single institution; the

1965

second has two, each belonging to a pair of institutions. Furthermore, the two authors of the second
paper belong to one institution in common, but
since a catalog must, by definition, have the form
of a tree and not of an arbitrary graph, the institution must be mentioned separately for each author.
The first document is a journal article and there are
therefore two nodes below the one representing the
name of the journal; the first gives the volume and
the second the number. The second entry is for a
book and therefore these two nodes do not appear.
Level

------

----

2

1963

S impl ification of
Computer Programs

R.C.A.

3

Processing:
Similarity &
Familiarity in
Verbal Learning

8
Corp

Laboratories

Carnegie
Institute of
Technology

4

Corp

Figure 1. A portion of an acquisitions list.

In this example, the kind of information at each
node can be unambiguously determined from the
structure of the tree. The nodes on level 2 all represent acquisition numbers. The last three nodes under
a given acquisition number represent title, publication information, and date respectively. Any nodes
preceding these represent authors. Any nodes below
those for authors are for institutions. A journal article is distinguishable by the volume and number
nodes which are absent in the case of a book. However, it is not difficult to imagine cases where rules
of this kind would' not work. Suppose, for example,
that the date of each edition of a book were put in,
or that when the date was unknown, we wished
simply to omit it. To cope with these situations, it

would be necessary either to redesign the catalog
structure or to label each datum explicitly to show
the kind of information it contains. The structural
redesign might be as follows. The names of authors
are dropped to level 4 and their institutions to level
5. A new kind of datum is introduced on level 3
dominating the author names. This node has no information of its own; it serves only to show where
•the authors are to be found. A similar node could
be inserted above the date, except that in this case
the node would have information of its own to provide for the case where the date is missing.
The catalog system in fact requires that each datum be tagged with the name of the data class of
the information it contains. This is useful for other

285

THE CATALOG: A FLExmLE DATA STRUCTURE

reasons than the one we have suggested. Each data
class is, for example, associated with a particular
set of encoding conventions. Some contain textual
material, some floating point numbers, some integers and so on. So, by looking at the class of a datum, we can tell not only what its status is in the
catalog as a whole but also how to decode it.
It is convenient to be able to describe the overall
structure of a catalog, to the computer as well as to
other people, in terms of data classes and the relations among them. This we do by means of a map,
which, like the catalog itself, is a tree, but in which
the data are replaced by the names of the data
classes. The map of our hypothetical acquisitions
list is shown in Fig. 2. The name of each data class
appears exactly once in the map, a fact which is

bound up with an important restriction on the way
catalog structures may be designed. The members of
a given data class always appear on the same level
of the catalog-the level on which the name of the
class appears in the map-and they always come
immediately below members of the same other class
-the one whose name appears above theirs in the
map. If two classes are shown directly beneath the
same other class in the map, then their members
must appear in that order in the catalog itself.
Thus, in the example, a title may never come to the
left of the corresponding author. Cases can arise
where these restrictions may seem unduly severe,
but, as we shall shortly see, powerful means are
available for dealing with them.
Level
Acquisitions List

2

Date

3

4

Figure 2. Map of an acquisitions list.

A variant has been proposed for the catalog design we are using as an example in which new
nodes would be introduced to represent sets of authors and sets of dates. Since we have data-class
names, we do not need to adopt this variant. However, classes of this kind, whose members never
contain substantive information, are frequently useful. In other cases, no substantive information is
available for a particular datum, but only for the
nodes it dominates. In these cases, we speak of null
data. The catalog system has been implemented in
such a way that null data occupy no space whatever
on the tape. They can therefore be used freely to
lend perspicuity to the structure of a catalog and
without regard to economy. In order to see how this
is achieved, we must consider the format used for
writing catalogs on tape.

A catalog is reduced to linear order in the most
obvious way. The datum at each node is written on
tape before the data at the nodes beneath, and all
these before nodes to its right. Thus the node at the
root of the tree goes first, followed by those on its
leftmost branch. The first node on a branch is the
first to be written, followed by the nodes on its leftmost branch. When a branch is finished, the one
immediately to the right is taken next. This is the
order arrived at by regarding the nodes as operators
whose arguments are the nodes immediately beneath them, and writing the expression out in Polish parenthesis-free notation.
A set of programs is being written for moving
catalog data between high-speed core and tape. A
blocking scheme is used for the data on tape; the
block size is set by the user. Each datum is treated

286

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

as a single logical record whose size is not restricted to that of the physical block. Each logical
record is preceded and followed by a link word
which gives the lengths of the records on either side
of it. The length of the preceding as well as the following record is given in order to make it as easy
as possible to backspace. Link words also contain
certain other information of importance to the
housekeeping of the reading and writing programs,
but nothing of the essential structure of the catalog.
This being the case, it is possible for a program using the catalog input/ output system to make use
only of its blocking facilities for certain purposes,
calling on the whole system only when required.
This plan of building the system as a sequence of
layers, each using the facilities provided by the one
beneath, has been followed wherever possible in the
design. The first two words of each block are an
lOBS control word and a FORTRAN control word.
These are used nowhere in the current system but
are included for reasons of compatibility.
The first word of a logical record which contains
a catalog datum is a datum control word. This gives
the data class of the datum and its preceding implicit level number (PIL). It is the PIL that enables
the system to identify the place of null data which,
as we have said, are not explicitly represented by a
logical record. The PIL is defined as follows:
1. For all data on levell, it is O.
2. The PIL of the first datum dominated by a
null datum is the PIL of that dominating
null datum.
3. The PIL of every other datum is the level
number of the datum that dominates it, i.e.
one less than its own level number.
Informally, we can say that tp.e PIL gives the
highest point in the tree encountered on the path
from the previous non-null datum to the current
one. Consider two adjacent data on level i of some
catalog and suppose that the PIL of the second is j,
where j ~ i = 1. i - j - 1 null data are to be assumed between these two levels j + 1, . . . , i - 1.
Given the class of the current non-null datum, the
classes of these null· data are uniquely determinable
from the map.
It is desirable to be able to write general programs for performing standard operations on catalogs without requiring that the user supply complete
information on the structure of the catalog to be
treated. For this reason, the map of a catalog is

1965

written on tape in the logical record immediately
preceding the first datum. The map is represented
as a simple list of data-class names paired with level numbers and taken in the order we have described for the catalog itself. Thus, a class whose
level is given as i is dominated by the class with
level i -1 most recently preceding it in the list. With
the name of each data class is also given a code
showing what encoding conventions are used for the
data of that class.
We have noted that the restrictions imposed on
the design of catalogs could become onerous in
some situations if means were not introduced for
overcoming them. We have been considering how a
library acquisitions list might be represented as a
catalog. But, of all the lists produced by a library,
surely this is the least interesting. Suppose instead
that we were to undertake to accommodate the subject catalog. Most subject classifications have the
structure of a tree to begin with, so that the job
should be easy. One possible strategy would be to
examine this tree to determine the length of its
longest branch, that is, how many categories dominate the most deeply nested one. We may then construct a map with this number of levels plus 5,
which is the number used for the acquisitions list.
This will make it possible to put a complete entry
of the kind considered in the simpler example beneath the node for the most deeply nested category
in the classification scheme. In general, the node
for a subject heading will have two kinds of nodes
directly beneath it, one kind for more particular
categories under that heading and one for documents which cover the whole field named by the
current heading. The structure already set up for the
acquisitions list is repeated once for each document
node in the map, but with different data-class names.
This scheme will indeed work, but it is clearly
unsatisfactory in a number of ways. For one thing,
subject headings will be in different data classes according to their level in the classification as a
whole. For another, the map is unduly large and
monotonous and liable to change when some minor
part of the classification changes. An alternative
strategy rests heavily on the claim made for catalogs
that any kind of data whatsoever can be accommodated in a datum. If this is so, then an entire catalog can be included as a single datum within another
one. From here, it is a short step to the notion of
catalogs with recursive structures. Consider the ex-

287

THE CATALOG: A FLEXIBLE DATA STRUCTURE

ample in Fig. 3. The main catalog has two data
classes of which the lower one has data that are
other catalogs. To emphasize this, we have shown
this node with a square rather than a circle. This
simple two-class map is written at the beginning of
the tape. When a subheading datum is encountered,
the first thing it is found to contain is the map of a
subsidiary catalog. In order that the data of this cat-

alog should be correctly processed, the tape format
must make special provision for them. In fact, subsidiary catalogs are represented not as single logical
records, but as sequences of logical records bounded
by special markers. However, the user of the system
need not concern himself with these details. As far
as he is concerned, the included and the including
catalogs can be treated in exactly the same manner.

Subject Catalog

1

Subheadings

(a) Mai n Catalog

Date

(b) Subsidiary Catalogs
Figure 3. Structure of a library subject catalog.

The subsidiary catalog in Fig. 3 is similar to the
main catalog for the acquisitions list except for the
addition of a single new class to accommodate a
further level of subheadings. This again is a class of
catalogs and their structure is exactly the same as
that of the subsidiary catalog of which they are
members. Fig. 4 shows an excerpt from a catalog
built on this plan.
Any scheme devised to fill the role for which catalogs were devised must be measured against three
main requirements.
1. It must be easy to update.
2. It must provide for retrieval of information
in response to a wide variety of requests.
3. It must allow files to be organized on new
principles as research proceeds.
Now, the catalog system is not intended as a fullfledged information-retrieval system, but it does
contain something of what any such system would
have to provide. In particular, it provides powerful

and flexible facilities for addressing data and sets of
data. Furthermore, this addressing capability is precisely what is required for an updating algorithm
where the principal work consists in identifying the
items of information to be treated.
There is no obvious limit to the refinements that
could be introduced into a catalog addressing
scheme, and our ideas on the subject can be guaranteed to far outpace our ability to implement them.
Here, we must content ourselves with a survey of
some of the simpler notions.
It will be convenient to distinguish between the
location of a datum and its address. Each datum in
a catalog has a unique location which may be
thought of as its serial number on the tape, or as
anything else which preserves its uniqueness. But a
datum may have an indefinite number of addresses,
only some of which refer to it uniquely. The location of a datum will not normally be known to the
user of a large catalog, but this is of no consequence provided that there is a clear method of

288

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

TranslatJon
of Languages

M.I.T.

Birkbeck
College

Figure 4. A portion of a library subject catalog.

specifying unique addresses. The notion of location
is useful only for understanding how the addressing
scheme works.
Some parameters which are useful in identifying
a datum are its data class, its class ordinal, its level,
its level ordinal and its value. Data class and level
have already been explained. The ith datum of a
given class dominated by a single datum on the next
higher level has class ordinal i. The ith datum of
any class dominated by a single datum on the next
higher level has level ordinal i. We can now describe the form of an elementary address. This is a
triple consisting either of a level, a level ordinal,
and a value or a data class, a class ordinal, and a
value. In either case, any member of the triple may
be left unspecified. The following are some examples:
( 1, ,a) (, ,a) -

(A )

-

The data on level 1 with value a.
All data· with value a.
All data of data class A.

Informally, we are using the convention that, if the
first member of a triple is an integre, it is a level
number; if it contains alphabetic characters, it is a
data-class name.
An elementary address, like any other address,
can be regarded as a function whose value, if defined, is a location or list of locations. Two other
useful functions, descendant and ancestor, have location lists both as arguments and values. These
are:
Des [L] data at
Anc [L] data at

All data dominated by the datum or
L.·
All data dominating the datum or
L.

A concatenation of addresses is itself an address
whose value is the intersection of the location lists
referred to by each of them. This machinery is already sufficient to call for data in a number of interesting ways. The following examples refer to the

289

THE CATALOG: A FLEXIBLE DATA STRUCTURE

functions, member, recursion, and catalog, are required:
Mem[L,M]-where L is an address or location
--US-t and M is an address. The value is defined
only if some of the data referred to by L
contain catalogs. To these internal catalogs,
the address M is applied to yield the final
value of the function.
Rec [L,M]-where L is an address or location
list and M is an address. This permits data to
be located in general recursive catalogs. Its
value is a list of locations arrived at by (1)
applying M to the top level catalog and (2)
applying the whole function to the catalogs
identified by L.
Cat [L]-where L is an address. The address
L is applied within all catalogs contained in
data of the current catalog. The location in
the current catalog of any catalog in which
a datum is found meeting that address becomes a member of the list which is the
value of the function.

catalog, part of which is shown in Fig. 1 and whose
map is given in Fig. 2.
Des [( 2" 1747)] (3,2)
The datum or data on level 3 which are second sons of data on level 2 with value 1747
-the value in this case is H. A. Simon.
Des [(2,1747)] (Author)
Here, "1747" is a level ordinal rather than
a value, but we may assume that there is
just one entry for each acquisition number.
This therefore refers to the authors of the
1747th document in the file-E. A. Feigenbaum and H. A. Simon.
Des [(2,1747)] (Author,2)
-This is the same as the previous example
except that it selects the second authorH. A. Simon.
Anc [(lnstitution"R.C.A. Laboratories)]
-(Author.
All authors from R.C.A. Laboratories. As
far as we know from Fig. 1, this means only
J. Nievergelt.
Des[Anc[(Journal"JACM)] (2)] (Author)
Everyone who has published in JACM.
Anc[Date" 1964 )] (Acquisition number)
Acquisition numbers of everything published
in 1964.

It will be easiest to see how these work by reference
to a specially constructed example. Fig. 5 shows
three maps which are used in the structure· of some
recursive catalog. Map 1 gives the structure of the
main catalog. In this, data of classes Band C contain catalogs with maps 1 and 2 respectively. The
catalogs with map 2 have one class containing catalogs, namely Q; class U, of catalogs with map 3,
also contains catalogs.

It is clear that other functions could be added to
these two without difficulty.
Addressing catalogs, some of whose data contain
catalogs poses special problems requiring some new
machinary for their solution. At least three new

A

/p"

S/r"D
I

E

/s'"
R

Q

T

I
F

U

I

V

(b) Map 2

(a) Map 1

Classes of data contcining catalogs

s -

Map 1

C - Map 2
Q -

Map 3

U - Map 2

Figure 5. A recursive catalog structure.

(c) Map 3

290

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

Mem [(B),(D"x)]
Data of class D and value x in catalogs in
data of class B in the main catalog.
Rec [(B), (D"x)]
Data of class D and value x anywhere in the
recursive system.
Cat [( Q"x)] Des [(P"y)]
Data in the main catalog, necessarily of class
C, containing a catalog in which there is at
least one datum of class P with value y dominating at least one datum of class Q with
value x.
Mem [(C),Rec [Mem [(Q),(U)],(R)]]
-nata of class R anywhere in the recursive
system.
Des [Cat [(D"y)]] (E"x)
~embers of class E with value x dominated
by a datum (which, in this case, can only
be of class B) which contains a catalog which
has a datum of class D and value y.
Rec [(B),Des [Cat [(D"y)]](E"y)]
Same as above, but in the whole recursive
system.
Let us return briefly to the example of library
catalogs. Suppose that, given an acquisitions list of
the kind we have described, we wish to obtain an
author index. With a conventional file on, say,
punched cards, this would be a simple matter of
sorting. With a catalog, two operations are involved. First, a new map must be designed for the
index in which "author" occupies the level-one position, and the file must be rewritten with the new
structure. Second, it must be sorted, duplicate author entries removed and their dependent nodes
thrown together under a single author node. This is
one of many processes known collectively as transformations. In general, a transformation· is any process which produces a catalog with a certain structure from one or more other catalogs with different
structures. The variety of transformations which
could be applied to a sufficiently complicated catalog is almost endless and the search for algorithms
capable of carrying out anyone, provided only that
it is specified in a terse but perspicuous notation,
leads to theoretical and practical problems which
would, and probably will, fill several more papers.
There is good reason to suppose that any transformation can be broken down into a series of
elementary transformations of which there will be
only three or four types. One of these will have the

1965

function of decomposing a catalog into simple catalogs. A simple catalog is one which has exactly
one data class on each level. If two simple catalogs
have the same classes on the first k levels, then they
can be merged to form a new catalog with one data
class on each of the first k levels, and two on the
levels below. In the same way, it is clearly possible
to merge a pair of catalogs of whatever structures
provided only that they have a comnion class on
level one. If they have common classes on levels 2,
3, etc., then the blend will be the more complete.
Of course, before the merge can take place, it may
be necessary to perform a sort. Now, any catalog in
which there are n data classes which have no subordinate classes can be regarded as a compound of n
simple catalogs. Many transformations can be effected by decomposing the given catalog either partially or completely, changing the relative levels of
the data in some of the simple catalogs, and merging them together again in the same or a differ~nt
order.
Sorting and merging are common components of
transformations as well as other catalog procedures
and the overall system must clearly give them an
important place. Since it is part of the essence of
catalogs that they contain a rich variety of data
types encoded according to diverse conventions,
more flexibility is required than most sorting procedures provide. In particular, the encoding of the information in a given data class will, in general, not
be such that an algebraic sort on the resulting binary number will give the required results. Furthermore, there may be some classes in any catalog in
which the order of the. data cannot be algorithmically determined; their order may be essentially arbitrary, each under its own dominating element on
the level above, or the requirement for the sort may
be that the order of the data in the class be preserved from the original input. To provide for contingencies of these kinds, the catalog merge and sort
routines allow the user to supply a comparison routine for each data class in any catalog to be treated.
This routine takes a pair of data of the specified
class and declares which of them should precede the
other in the output. The routine also knows what
the input order was and may use this in arriving at
a result.
Since the objects to be merged and sorted are
trees rather than files of independent records, the
algorithms must clearly be unconventional in other
ways as well. However, the differences are less than

THE CATALOG: A FLEXIBLE DATA STRUCTURE

might at first appear. If each node in a catalog were
duplicated once for each lowest-level datum it dominated, the catalog would take on the aspect of a
great number of chains with a lowest-level datum at
the foot of each. Each of these chains could then be
treated as a single record to be sorted in a conventional way. Whilst it is never necessary to actually
expand a catalog into this cumbersome form, the
computer can arrange to retain a datum in memory
until all its decendants are passed so that its instantaneous view of the catalog at any moment is as of
a chain.

291

The catalog system could develop in many different ways and it is our intention that it should. For
something so pedestrian as a filing system, it is remarkable how it has captivated the stargazer and
the theoretician as well as the bookkeeper and the
librarian in everyone who has worked on it. And
these have been many. However, it is important for
the welfare of computational linguistics that catalog
systems or something designed to fill the same need
should be made available soon. We have therefore
resolved to be done with theorizing, for the present
at least. What catalogs need is action.

INFORMATION SEARCH OPTIMIZATIO'N AND INTERACTIVE RETRIEVAL TECHNIQUES*
J. J. Rocchio and G. Salton
Computation Laboratory
Harvard University
Cambridge, Massachusetts

INTRODUCTION

In either case, the user can be made to control the
retrieval process by asking him to furnish to the
system information which subsequently determines,
at least in part, the mode of operation for a later
search.
Several methods may be employed to aide the
user in formulating effective search requests. 'One of
the simplest methods consists in providing some
kind of automated dictionary which may be used to
display certain pertinent parts of the stored information. Thus, the frequency of use in the coUection
of certain terms in the vocabulary can be displayed
to allow the user to make a choice between the use
of frequently occurring terms, if "broad" retrieval is
desired,. and that of rarer terms if "narrow" retrieval is wanted. Alternatively, terms related in various ways to those originally included in a search
request may be exhibited, and the user may be
asked to choose from among these related terms in
reformulating his request. The automated dictionary
is then used as an aid in a manual reformutation of
the request.
The iterative search process can also be mechanized more completely by leaving the search request
largely unchanged, but altering instead the information analysis process. In that case, the user furnishes to the system information concerning the

Automatic information retrieval systems must be
designed to serve a multiplicity of users, each of
whom may have different needs and may consequently require different kinds of service. Under
these circumstances, it appears reasonable that the
system should reflect this diversity of requirements
by providing a role for the user in determining the
search strategy. This is particularly important in
automatic systems, where presently used one-shot
(keyword) search procedures normally produce
poor results.
In an automatic retrieval environment in which
the user may be given access to the system-for example, by means of speciat input/output consolesthis can be achieved by two principal methods:
1. By providing automatic aids to the user in
his attempt to formulate effective search
requests.
2. By using the results of previous searches to
determine strategies likely to prove effective during a subsequent pass.
*This study was supported in part by the National Science
Foundation under research grant GN-360.

293

294

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

adquacy of a preceding search operation, which is
then used automatically to adjust the retrieval process for the next iteration.
In the present study, several alternative search
optimization procedures are examined. In each
case, the automatic SMART document retrieval
process, presently operating on the IBM 7094 computer in a batch-processing mode, is used to simulate the real-time iterative search process.1,2,3 The
automatic evaluation procedures incorporated into
SMART are utilized to measure the effectiveness of
each process, and data are obtained which reflect
the relative improvement of the iterative, user-controlled, process over and above the usual single-pass
search procedure.
THE AUTOMATIC DICTIONARY PROCESS
In a conventional, batch-processing retrieval environment, the user normally relies on his intuition
and experience-possibly aided by published references-in formulating an initial search request.
Once the general context has been established, the
request must be normalized to a form suitable for
use by the retrieval system. In a conventional coordinate indexing system, for example, this normalization would consist in a manual transformation of
the original search request into an appropriate set
of keywords. In certain automatic keyword search
systems, a machine indexing process would generate
the keywords, and stored synonym dictionaries
might be used for normalization. After the analysis
process, the normalized identifiers which specify
the search request are matched with the identifiers
attached to the documents, and correlation coefficients are obtained to measure the similarity between documents and search requests.
In the present section, a system is considered in
which a communications link enables the user to
influence the normalization process by making it
possible for him to choose certain terms to be added and/or deleted from an original search formulation. Four main procedures appear to be of interest
for this purpose:
1. A stored synonym dictionary, or thesaurus,
may be used, given a set of thesaurus entries, to display all related entries appearing under the same concept category.

2. A hierarchical arrangement of terms or
concept classes may be available which,

1965

given a set of initial terms, can provide
more general concepts by going "up" in the
hierarchy, or more specific ones by going
"down. "1,2,3

3. A statistical term-term association matrix
may be computed which can be used, given
a set of terms, to find aU those related
terms which exhibit a tendency to co-occur
in many documents of the collection with
the terms originally specified. 4
4. Assuming the availability of a set of documents retrieved by an initial search operation, one may add to the terms originally
specified in a search request, all those
terms which occur in several of the retrieved documents but do not occur in the
initial request. 5
While it is potentially very useful to provide the
user with a set of terms which may have been overlooked in formulating the original search request, it
is probably even more important to furnish an indication of the usefulness in the retrieval process of
each of the query terms. The most obvious indicator of potential usefulness is the density (or absolute number) of doc:uments identified by each of
the given index terms. The assumption to be made
in this connection is that the usefulness of a term
varies inversely with the frequency with which it is
assigned to the documents of a collection.
Thus, in a coordinate indexing system, in which
the retrieval process is controlled by the number of
matches between terms assigned to documents and
terms assigned to the search requests, the indexing
density provides a straightforward estimate of the
number of documents likely to be retrieved in each
particular operation. If a correlation function is
used to compare keyword sets attached to documents and queries, the relation between number of
retrieved documents and the indexing density of
query keywords is less obvious. However, the general assumption that a query term with high indexing density will produce "broad" retrieval, whereas
one with low indexing density produces "narrow"
retrieval is still valid.
It seems reasonable under the circumstances, to
require that each dictionary display provided to the
user consist not only of the corresponding terms or
concepts, but also of the frequency with which the

INFORMA TION SEARCH OPTIMIZATION

various terms are assigned to the documents of the
coltection. The user can then utilize this information to refine the search request by promoting
terms deemed important and demoting others
which may be ambiguous or otherwise useless in
the retrieval process.
As an example of the use of the indexing density
of query terms, consider the retrieval process illus-

295

trated in Fig. 1. The original text of a request titled
"Morse Code" is shown in Fig. 1a. When this text
is looked-up in a typical synonym dictionary, * eight
distinct concept codes are obtained. The codes, together with the frequency of occurrence in the collection of the corresponding concept classes are
shown in Fig. 1b; the full thesaurus entries are similarly included in Fig. 1c.

"Can hand-sent Morse code be transcribed
automatically into English? What programs exist to read 110rse c·ode? II

Term Used
in Request
hand-sent
Morse
code
transcribed
automatically
English
programs
exist
read

Concept Number

113
35
281
570
119
35
608
234
569

Frequency of
Concept
(405 documents)

12
9 (Lm'l)
37
25
70 (HIGH)
9
104 (HIGH)
,5
25

Figure 1. Processing of request "Morse Code."
a) Original query for "Morse Code."
b) Terms included in original request.

The user who examines the output of Fig. 1b
may notice that concepts 119 (obtained from "automatically") and 608 (from "programs") appear
with excessively high frequency in the document
collection under study; furthermore, these concepts
do not appear to be essential to express the intent
of the query of Fig. 1a. These concepts might then
usefully be removed from the query statement.· The
user may note further, from the display of Fig. 1c,
that "transcribe" can be replaced by "translate"
(concept 570), and "read" by "recognize" (concept
569) in order to render more appropriately the purpose of the request. Finally, the crucial concept 35
(Morse) may be reinforced by increasing its
weight. The two reformulations of Fig. 1d reflect

the corresponding additions, deletions, and substitutions.
The success of the request alterations may be
evaluated by examining the ranks of the two relevant documents (numbers 305 and 394) as shown
in Fig. 1e. It may be seen that retrieval results are
improved for both modifications 1 and 2 over the
original, but that the better result is obtained for
the first modification where the relevant documents
are ranked fourth and eighth, respectively. The correlation coefficients between the two relevant documents and the search requests are also seen to be
*The dictionary used in the example is the "Harris III"
thesaurus available with the SMART retrieval system.1,2,3

296

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE, 1965

Corresponding Thesaurus Entries

Concept Number

113

hand-drawn, hand-keyed, hand-sent,
hand, handsent, manual, non-automatic

35
281

English, French, Horse, Roman, Russian

570

code, pseudo-code
record, reproduce, translate, transcribe,
transcript

119

artificial, automate, machine-made,
mechan, semi-automatic

608

234

program
behavior, case, chance, event, exist,
fall, instance, occur

569

read, recognize, sense

Modification 1:

Modification 2:

"Can hand-sent Morse code
be translated into English?
Recognition of manual Morse
code. 1I

U~e

original query and add

!!Horse, Morse, Morse ll •

Type of Q.!ery

Ranks of
Relevant
Documents

Original r.;p.ery
"Morse Code"

30

Modification 1
Modification 2

7

Document
Number

Correlation

394
305

0.29
0.13

4

8

394
305

0.33
0.26

4
16

394
305

0.30
0.13

c) Thesaurus entries for' terms in original request.
d) Modified queries by deletion of common, highfrequency concepts and addition of important lowfrequency concepts.

e) Comparison of search results using original and
modified queries.

much higher for the modified formulations than for
the original.
A second example, and a different dictionary
fee,dback process is illustrated in Fig. 2 for the request labeled "IR Indexing." In this case it is assumed that an initial retrieval operation has taken
place, and that the user would like to use information obtained from the retrieved documents in order
to reformulate his .search request before· a second
attempt is made. The original query text is shown
in Fig. 2a, and the corresponding concept classes
and concept frequencies appear in Fig. 2b. The retrieval results obtained by processing the initial

query are given in Fig. 2c.
Under the assumption that the user examines the
list of retrieved documents, and finds that the 5th
and 6th documents (numbers 79 and 80) are useful
to him, it is now possible to request that concepts
attached to these documents, but not included in the
originat search request, be displayed. This is done
in Fig. Id for concepts jointly included in the relevant documents no. 79 and 80.
lt now becomes possible for the user to pick new
terms, from the list of Fig. 2d-for example, terms
like "coordinate," "lookup," and "abstract"-and
to' use them to rephrase the search request as shown

297

INFORMATION SEARCH OPTIMIZATION

"Automatic Information Retrieval and Machine
Indexing"
Figure 2. Processing of request "IR indexing."
a) Original query text for "IR indexing."

Original Term
Used
Concept Number
in Request

Frequency of Concept
(405 documents)

automatic

119

70

information

350

45

26

6

machine

600

77

indexing

101

11

retrieval

b) Terms included in original request.

Document
Rank

Document
Number

1

167

2

Correlation
Coefficient

Relevant

0.1-1-1

no

166

0.38

no

3

129

0.33

no

4

314

0.33

no

5

79

0.33

yes

6

80

0.30

yes

}

c) Retrieval results for original query (using version
III of Harris Theraurus).

in Fig. 2e. The reformulated request also excludes
concepts 119 (automatic) and 600 (machine)

which are found to occur with excessive frequency
in the document collection. The ranks of the rele-

298

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

Concepts from
Documents
79 and 80

1965

Corresponding Thesaurus Entries

t,

co-ordinate, I coordinate
intercept, ordinate, pole,
rec tangular-to-polar

49

108

consult, look-up, look,
scan, seek, search

I lookup

I aostract I ,

"
article, auto-abstracting,
bibliography, cataloE:, copy, etc.

114
170

noun, verb, sentence

497

science

"Information Retrieval. Document Retrieval.
Coordinate Indexing. Dictionary Look-up
for Language Processing. Indexing and
Abstracting of Texts."

Retrieval Results Using
Original Query
Ranks of
Relevant
Documents

Document
Nuni>er

Correlation

79
80
221
l26
48
3

0.33
0.30
0.29
0.28
0.21
0.10

5
6

9
II

l2
69

Retrieval Results Using
~Query

Ranks of
Relevant
Documents

Document
Number

CorreIa"
tion

II

80
19
48
l26
221

18

3

0.51
0.41
0•.36
0.23
0.23
0.19

1

4
6

9

d) Concepts common to relevant documents Nos. 79
and 80 and not included in original request.
e) Modified query using terms from relevant documents.

f) Comparison of search results using original and
modified queries.

vant documents obtained for both original and
modified queries are given in Fig. 2f. It may be
seen that the relevant documents have much lower
rank, and correspondingly higher correlation coefficients for the modified search request than for the
original. The lowest relevant document, in fact,
places only 18th out of a total of 405 documents
when the modified query is used, whereas it originally ranks 69th.
Corresponding improvements can be obtained by
the judicious use and display of hierarchical subject
arrangements and statistical term associations.

user who controls not only what is displayed by the
system, but also what is returned in the way of
modified information. A variety of search optimization methods should, therefore, be considered
which place a much larger burden on the system
and a correspondingly smaller one on the user. One
such procedure is the relevance feedback method.
In essence, the process consists in effecting an
initial search, and in presenting to the user a certain amount of retrieved information. The user then
examines some of the retrieved documents and
identifies each as being either relevant (R) or not
relevant (N) to his purpose. These relevance judgments are then returned to the system, and are used
automatically to adjust the initial search request in
such a way that query terms or concepts present in
the relevant documents are promoted (by increasing
their weight), whereas terms occurring in the documents designated as nonrelevant are similarly demoted.

REQUEST OPTIMIZATION USING
RELEVANCE FEEDBACK
The vocabulary feedback process illustrated in
the preceding section appears to be both easy to implement and effective in improving search results. It
does, however, put considerable demands upon. the

299

INFORMATION SEARCH OPTIMIZATION

The amount of improvement to be obtained from
the feedback process depends critically on the manner in which the search request is altered as a function of the user's relevance judgment. The following
process which has been used experimentally with
the SMART system appears to be optimal in this
connection. Consider a retrieval system in which
the matching function between queries and documents (or between query and document identifiers)
induces a metric, or a monotonic function of a metric, on the space of query and document images
( e. g., on the space of keyword vectors). 6 In such a
case, it is possible to produce an ordering of the
documents with respect to the input query in such a
way that increasing distance between document and
query images reflects increasing dissimilarity between them.
Let DR be the nonempty subset of relevant documents from the source collection D, relevance being
defined subjectively and outside the context of the
system. An optimal query can now be defined as
that query which maximizes the difference between
average distances from the query to the relevant document set, and from the query to the nonrelevant
set. In other words, the optimal query is the one which
provides the maximum discrimination of the subset
DR from the rest of the collection (D'-DR). More
formally, let 8(q, d) be the distance function used in
the matching process between query q and document
d. The optimal query" qo may then be defined as that
query which maximizes the function
C

= 8

(q, d) - 8 (q, d)
deDR
deD R

identified by the user, from the remaining documents;
using this optimal query to modify the original search
request the resultant query can then be resubmitted,
and the process may be iterated, as more complete
sets of relevant documents become available through
subsequent retrieval operations. One may hope that
only a few iterations will suffice for the average user;
in any case, the rate of convergence will be reflected
in the stability of the retrieved set.
In the SMART automatic document retrieval system, the query-document matching function normally used is the cosine correlation of the query vector
with the set of document vectors, defined as
- - _ q d _
p (q, d) - ----==--=- - cos () - Iqlldl
q,d

q

where and d are the vector images of query q and
document d, respectively. Since the vector images
are limited to nonnegative components, the range for
the correlation is 0 ~ p ~ 1, corresponding to an
angular separation of 90 ~ () ~ O. Under these conditions, the correlation coefficient is a monotonic
function of the angular distance metric. Furthermore,
since the· correlation decreases with increasing distance, relation (1) may be rewritten as
C·= p

(q, d) -"- p (q, d)

(3)

deDRdeDR

where p is the average cosine function p, It can be
shown, 7 that in this case C is maximized for

(1)

where ,8 is the average distance function, and decreasing distance implies stronger query-document association.
Clearly, Eq. (1) is of no practical use, even under
the assumption that the optimal query qo can be determined as a function of D and DR, since knowledge
of the set DR (the relevant document subset) obviates
the need for retrieval. However, if instead of producing the optimal query qo, thr:- relation (1) is used
to produce a sequence of approximations to qo, starting with some initial query which identifies a part of
the set DR, then a method for automatically generating useful query modifications becomes available. The
system can, in fact, produce the optimal query to
differentiate the partial set of relevant documents,

(2)

qo =

~o 1: I~I - N~no 1: I~I
dieDR

(4)

dieDR

where no = n(D R ), the number of elements in the
set DR, and N = neD), the number of elements in
the collection.
The query modification algorithl1l employed may
now be written in the form

(5)

where qi is the ith query of a sequence, and R =
{rl,r2, . . .,rnt} is the set of relevant document vectors
retrieved in response to query qi, and S = {Sl,S2,

300

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

... ,Sn2} is the set of nonrelevant vectors retrieved in
response to qi (the specification of sets Rand S constitute the feedback from the user after the ith itera\tion of the process).
A simple graphical illustration of the application of
Eq. (5) for two-dimensional document and query
vectors is given in Fig. 3. Figure 3a shows the original query vector (Qo), and the four document vectors Al and A2 (relevant), and BI and B2 (nonrelevant). Figure 3b illustrates the formation of the
optimal vector used to differentiate between A I and

1965

A2 on the one hand, and BI and B2 on the othe:c. The
resulting, normalized query (QI) is shown in Fig. 3c.
It may be noticed that whereas the original query is

approximately equidistant from sets Rand S, the
modified query is much closer' to R (indeed, it coincides with A I) than to S. This is reflected in the correlation coefficients for both original and modified
queries Qo and QI with the four document vectors,
as shown in Fig. 3d. It is evident that the modified
query will be much more effective in providing retrieval of the relevant document set than the original.

AlfAY/ \

~B2
a) Initial Query (Qo), Relevant Docs.
(A 1,A 2) and Nonrelevant Docs.
(BpB2)

b) Sum of Relevant - Sum of Nonrelevant
Doc. Vectors

Doc.

At

!A2

/

/
(A-B)N

/

Qo
....... ~Bl

00

Ot

AI

0.71

1.00

A2

0.92

0.92

Bt

0.92
0.71

0.38

B2

0.0

/
...........
_ _ _ _~:.:::_:____ B2.

c) Resultant of Qo +Normalized
Sum of Relevant - Sum of
Nonrelevant

d) Correlation of Ouery Vectors
0 0 and 0 1 With Doc. Vectors

Figure 3. Geometrical representation of relevance feedback.
a) Initial query (Qo), relevant docs. (AI' A 2 ) and nonrelevant docs. (Bv B 2 ).
b) Sum of relevant - sum of nonrelevant doc. vectors.

c) Resultant of Qo + normalized sum of relevantsum of nonrelevant.
d) Correlation of query vectors Qo and QI with doc.
vectors.

The query modification process of Fig. 3 was
tested by performing two iterations for a set of 24
search requests, previously used in connection with
the SMART system. Figure 4 shows the results for
a request on "Pattern Recognition." The original
retrieval results, using version 2 of the "Harris"
thesaurus (synonym dictionary), are given in Fig.
4a. The user identifies documents 351, 353, and
350 as relevant, and 208, 225, and 335 as nonrelevant. The query is then automatically modified, in

accordance with the expression of· Eq. (5), and
retrieval performance is compared in Fig. 4b. It
may be seen that drastic improvements are obtained
both in the ranks of the revelant documents and in
the magnitude of the correlation coefficients. The
"recall" and "precision" measures, shown in Fig.
4b, are the normalized evaluation measures incorporated into the SMART system,8,9 which express
the ability of the system to retrieve relevant material
and to reject irrelevant matter.

301

INFORMATION SEARCH OPTIMIZATION
Document
Rank

Document
Number

I

351
353
350
163
82

2
3
4
5
6
7
8
9
10

Correlation

.65
.42
.41
.36
.35
.32
.27
.25
.24
.21

I

208
225
54
335

Retrievlli Results Using
Original Query

User Feedback
Relevant
Relevant
Relevant

-

Not Relevant
Not Relevant

-

Not Relevant

Results Using Query
Modified by User Feedback

Ranks of
Ranks of
CorreiaDocument CorrelaRelevant Document
Relevant Number
tion
Number
tion
Documents
Documents

I

2
3
4
6
9
26
27
33

~

1

351
353
350
163
1
54
205
224
314
39

.65
.42
.41
.36
.32
.24
.17
.17
.16
.12

Recall
.972
Precision .864

I

I

2
3
5
6
7
II

16
17
30

'351
350
353
163

.66
.60
.55
.37
.32
.29
.23
.19
.19
.16

I

54
314
205
39
224
Recall
Precision

.989
.923

Figure 4. Query processing using relevance feedback.
a) Retrieval results using original query for "pattern
recognition" (version 2 of Harris thesaurus).

b) Comparison of search results using original and
modified queries,

Figure 5 is a typical recall-precision plot giving
recall and precision figures averaged over 24 research requests for the original query formulations
as well as for two iterations using relevance
feedback. * It may be noted again that for a given
recall value large improvements are gained in the
average precision by using the retevance feedback
process. Additional improvements are obtained by
identifying further documents as either relevant or
nonrelevant during a second iteration.

For example, he may find that the documents obtained from the system show that his request was
interpreted too narrowly (since all retrieved documents belong to some small subfield of the larger
area which he expected to cover), or too broadly,
or too literally, or too freely.
Depending on the type of interpretation furnished by the user, the system now proceeds to initiate a new search operation under altered analysis
procedures. If the user's verdict was "too narrow,"
a hierarchical subject arrangement similar to the
one mentioned in the second section of this paper
might be consulted, and each original query term
could be replaced by a broader one; if, on the other
hand, the initial search was "too broad," more specific terms might be obtained from the hierarchy. If
the interpretation was too literal, the use of a synonym dictionary might provide more reasonabte resuIts; and so on.
Automatic retrieval systems are particularly attractive in such a situation, because these systems
make it possible to provide at relatively little extra
cost, a variety of indexing procedures which may be
called upon as needed. The SMART system, in par-

AUTOMATIC MODIFICATION OF THE
ANALYSIS PROCESS
The last search optimization process to be described depends, like its predecessor, on feedback
provided by the user, and results in selective
changes in the document and request analysis process. However, instead of furnishing relevance judgments based on the output of a previous retrieval
operation, the user makes a qualitative assessment
*The method of construction of such recall-precision plots
has previously been described in detai1. 9,10

of the effectiveness of an initial search operation.

302

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

1.0
2 nd ITERATION
RELEVANCE
FEEDBACK

.9
.8
.7

INITIAL
QUERIES

.6
1st ITERATION
RELEVANCE FEEDBACK

z .5

Q

C/)

(3

w

.4

a::

.0...

.3
.2

.1

.3

.4

.5

.6

.7

.8

.9

1.0

RECALL

Figure 5. Precision versus recall for initial queries and queries modified by relevance feedback (averaged over
24 search requests).

ticular, provides a large variety of indexing methods including the following:
1. A null thesaurus procedure which uses the
word stems originally included in documents and search requests· for content identification.
2. A synonym dictionary ("Harris" thesaurus) which replaces original word stems by
synonym classes or concept numbers.
3. A hierarchical arrangement of concept
numbers which can be used, given a set of
concepts to obtain more general ones ("hierarchy up"), or more specific ones ("hierarchy down").
4. A statistical phrase procedure which is
used to replace pairs or triples of co-occuring (related) concepts by a single "phrase"
concept (e.g., the concepts "program" and
"language" might be combined into "programming language") .
5. A syntactic phrase process which generates
phrases only if the components in fact exhibit an appropriate grammatic at relationship.

6. A variety of so-called merged methods,9 in
which the system proceeds iteratively
through two or three simple processes and
combines the output.
Obviously, the ability to generate a multiplicity
of distinct index images for each document does
not necessarily imply that each modification in the
anlysis process results in large-scale improvements
in the search effectiveness. Experiments conducted
with the SMART system have, however, shown that
in many cases a considerable increase in retrieval
effectiveness is obtainable when changes in the
analysis are adapted to the aims of each particular
user.
Consider, in this connection, the evaluation output for a variety of analysis methods produced by
the SMART system, reproduced in Fig. 6 and 7.
Figure 6 contains output for the search request titled "Automata Phrases," with nine relevant documents. Six simple analysis methods are shown: null
thesaurus, "Harris Two" (version 2 of the regular
synonym dictionary) , statistical phrases, syntax
phrases, hierarchy up, and hierarchy down. Thirteen
"merged" methods, each including two simple components, are also included in Fig. 6, as well as nine

303

INFORMATION SEARCH OPTIMIZATION
ALTOAU PHA
HARAIS He

9 RELEVHT
~UlL

THS

STU HAASE
SYNT IX P~R

SUT PHRASE

S'NTU PHR

HIERAACHY UP

OlEA COW~

~ARRIS TwO
NUll THS

U)

f-

Z

w
:0
::>
u

39 312
43 2<1
92 26~

0
0

~
Il.

~

HARRIS rt.c
SlA1 PHR.SE

HAARIS TWC
SnTAJ PH'

~AU IS TWC
HEA'RCH UP

HU I S TWO
>IE. DOWN

ST"T PHRASE

HIERARCHY lP

STAT PHRASE

HIEA OCW~

SY"TAX Pt-R

HI ERUC~Y UP

SYNTAX PtoR

HE. OOWN

TOP 15 AElEVAU TCF 15 HlEV,NT TCP 15 RElEVANT TOP I! .ElHANT TOP 15 RHE.AH TCP 15 RHEV"T Tep 15 RELEVANT TOP 15.ElEVA"
1 316
1 316
1 316
1 316
I 316
I Ht
1 31t
1 316
1 371
1 371
1 371
1 371
1 371
1 371
1 371
1 371
2 371
2 371
2 311
2 371
2 264
2 264
2 12~
2 129
2 264
2 264
2 316
2 316
2 264
2 264
2 3H
2 316
3 129
3 129
3 129
3 129
3 129
3 12~
3 313
3 313
) 316
3 316
3 129
3 129
3 372
3 312
3 372
3 312
4 313
4 313
4 372
4 372
4 313
• 313
• IH
• 176
4 372
4 372
4 372
4 372
4 316
4 316
4 129
4 129
5 372
5 372
5 313
5 313
5 173
t 176
! 2H
~ 371
5 173
8 313
5 313
5 313
5 212
8 313
5 212
t 313
6 176
6 176
6 212
7 176
6 176
II 371
t 167 34 372
6 C02
9 129
6 002
8 176
6 173
9 129
6 313
8 176
7 002 11 241
7 176 10 241
7 218 50 n2
7 24~ 39 315
7 218 12 241
7 238 11 241
7 218 10 176
7 231
Ie /41
8 167 46 315
8 167 43 315
8 167 t! 241
8 38! 43 241
ft 313
14 176
8 176 42 315
ft 313
12 241
8 176 42 315
9 249 73 264
9 249 68 264
9 249 72 315
9 371 82 264
9 129 68 315
9 139 74 2..
9 129 64 315
9)85 69 26~
10 139
10 241
10 127
Ie 166
1C 139
10 385
10 176
10 2<1
11 241
11 166
11 311
11 C45
11 127
11 241
11 127
11 249
12 166
12 385
12 361
12 If!
12 241
12 249
12 241
12 245
13 385
13 245
13 16t
13 173
13 361
13 167
13 361
)3 167
14 045
14 045
14 263
14 IC I
14 176
14 089
14 263
14 161
l ' OI!lCJ
15 113
15 38'
15 2C4
15 263
15 161
15 ZitS
15 283
Rhl( REe- 0.2980 Rhle flEe- 0.3141 RNte RH- o •.ae! RN" Rfe- C.2Cll. RNI( REe- 0.3119 RhK REe- 0.3000 ANI( flee- 0.3982 RNK REC. C.He!

lCG P.E- 0.7488 lCG PRE- 0.7523

lC~

PAE- 0.t4!f lOG PRE- e.6175 LOG PRE- C.7621 LCG PRE- 0.7397

LO~

P.E- 0.7805 LOG PRE- C.7390

NOR REe. 0.9703 NOA AEe. 0.9725 NOf! RE(- O.C)'2t NOR REC- 0.9511 NCR REC- 0.9181 heR IIEe- 0.9105 fl;CR life- 0.9809 NOR REC- 0.'9719
~CR PRE- 0.8956 NCA PRE- 0.8975 ~CR PRE- (I.IH! NOR PRE- C.8(11 NOR PRE- 0.9(128 "CR PRE- 0.8905 "CR PRE- 0.9125 NOR PRE- 0.1!9CC

O\lERALl- 1.0468 OVEA'lL- 1.0670 OVU"ll- (I.E5'91 OVERAll- c.e248 OVERAll- 1.1340 cnAAlL- 1.0391 CVU'Ll- 1.1188 OVERALL- 1.(493
~CA CVR- 1.7469 NCA CVR- 1.760C NCR OVR- 1.!944 NOR OV.- 1.5658 NOR OVR- 1.7962 NCR CVR_ 1.7431 NOR OVO- 1.8171 NOR OV.- 1.7497

4

HIE.ARCMY UP
HIER OCWN
TOP 15 RElEVANT
I 264
I 264
2 316
2 316
3 129
3 129
4 In
5 313
5 313
8 176
6 218 12 311
7 238 56 31'
e 176 68 372
9 127 75 241
10 385
11 361
12 371
13 263
14 249
15 177
RNIC REe- 0.1951
lCG P.E- 0.6236
HCR REC- 0.9481
M:;R Pfle- 0.8121
OVERALL- 0.8193
.. OR ()\lR- 1.5526

HARRIS hC
STAT PHRASE
HIEA OCliIto

~ULL

T~fS

STU

F~USE

TOP 15 "LEVANT
I 129
I 129
2 371
2 371
3 316
3 316
4 167
5 372
5 372
9 313
6 173 12 241
7 002
13 176
8 166 25 264
9 313 67 315
10 213
II 139
12 241
13 176
14 263
15 089
ANI( fIEC- 0.3285
LCG PRE- 0.7084
fIICR IIEC- 0.9742
NOR PRE- 0.8718
aVERILL- 1.0369
Nelli (VA- 1.71,28

HURLS

ac

THES
SYNTAX PH"

~Ull

.AUI S TWC
NUll THES
STAT PHRASE

HARRI! no

NLll THES
SYNTU PHR

TOP 15 RELEUNT TCP 15 RElE"hT
I ~u
I 3H
I 316
I 316
2 12~
2 129
2 129
2 129
3 371
3 311
3 311
3 311
4 313
4 313
4 372
4 372
5 167
t 312
5 313
5 313
t 312
7 Ilt
6 167
8 176
1)76 14 241
7 212 13 241
e 173 31' 2t4
8 176 28 264
~ ee2
73 315
9 173 67 315
Ie Itt
IC 166
II 24~
II 249
12 213
12 213
13 139
13 241
. . 241
14 385
)! 315
15 263
RN" REC- (1.1191 RNI( REe- 0.3435
LOG PRE- C.74C9 LOG PRE- 0.7544
NCfI Rfe- O.~116 NOR REC- (.'91:31 NOft REt- C.9159
NOli PRE- c.eeel NOR PRE- C.8911 NOR PRE- 0.1987
OVERALL- 1.0932 OVERALL- 1.0f:OO O~ERALL- 1.0'97«1
Ntll OVII- 1.171,!5 NOR OVfh 1.7'f:4 NOR OVR- 1.118(1
TCP 15 RELEVANT
I 129
I 12~
2 371
2 HI
3 316
3 31t
4 372
4 372
5 167
9 H!
6 212
II 17t
7 173 12.41
e 166 22 U4
9 313 tI 315
10 213
11 176
12 241
13 263
14 24~
15 249
ANI( REC- 0.~6(1C
let P"E- 0.7332

~A.RIS

TWV

SUTA. FHI

SYNT.JC Ptll

HIfRUny UP

HER

[OW~

HU_I S TWC
NUll THES
HI ERUCHY UP
TCP 15 'ElEVA"
I 316
I 316
2 129
2 129
3 264
3 264
4 313
4 313
5 167
7 176
6 173 13 371
7 176 19 241
8 218 24 172
9 166 8, 315
10 249
11 213
12 127
13 371
14 361
15 263
RhK AEe_ 0.2841
LCG PRE- 0.7013
NOR AEC- 0.9683
NOR PRE- O.8614t
OVERALL- 0.9861
fl:CR CVR- 1.7089

_IS Twe
MIL THES
HI fA OWN
TOP 15 REL ANT
I 316
I
6
1 129
2 12
3 313
3 313
4 167
5 176
5 176 12 371
6 173 15 241
7 238 19 312
8 166 27 264
9 249 61 315
10 213
11 385
12371
13 263
14 045
15 241
RNI( Rfe- 0.3103
LCG PRE- 0.6757
NOli REe- 0.9719
"CR Pile- 0.8506
CV!R'Ll- 0.9861
ttOR OVR,. 1.7103

"ARR 15 TWO

STAT PHRASE
HIEURCHY UP
TOP 15 .ElEVANT
I 316
I 316
2 371
2 371
3 264
3 264
129
4 129
313
5 313
6 72
6 372
7 I
8 176
8 17
15 241
9 002 74 315
10 218
II 167
12 249
13 139
14 127
15 241
RNK REC- 0.3811,
LO~ PRE- C.8169
NOR REC- 0.979'
NOR PRE- 0.'9302
OVERALl:- 1.1983
NOR OVR- 1.8278

.AuIS no
HIERARt.Y ~P
H IE. DO~N

TOP 15 .ELE,"T Tep 15 RElEV,H TCP 15 RELEVANT TOP 15 RELEVANT
1316131613161316
1316
l~IE
1316
13U
2 371
2 371
2 371
2 371
2 371
2 371
2 2t<
2 2t4
3 129
3 129
3 264
3 264
3 129
3 129
3 12~
3 129
~ 313
~ 313
4t 129
4 129
I, 312
I, ~12
4 313
I, H3
5372
5372
5372537253135313
5173
tilt
6176
6176
6313
6 313
6 212
7 11t
t 170 )3 311
7 002 13 241
7 212
9 176
7 176 12 /41
7 21! 55 372
8 238 ~5 315
8 173 14 21,1
8 238 I,~ H!
! 23e 62 3l~
9 167 77 264
9 176 68 315
9 167 71 H~
~ 161 69 241
10 249
10 218
10 249
Ie 2~9
II '39
II 167
11 385
II 127
12 385
12 249
12 241
12 3e5
13 241
13 127
13 166
13 371
14 166
14 241
14 245
14 361
15 045
IS 361
15 045
15 Itt
RNI( REC- 0.2885 ANt( IIEC- 0.4018 RNI( REC- O.~O'H RNK REC- C.2C9)
lOG PRE- 0.1~02 lOG PRE- 0.8188 lce; PRE- 0.742~ LaC PAE- C.E1,32
NOR REC- 0.9689 hCR REC- 0.9812 NCR .EC- c.nll NO • • EC- C.~523
toeA: PRE- 0.8901 flieR PRE- 0.9311 fII(" PIiIE- c.e94:C ·NOR PRE- (.8273
OVERALL- 1.0281 CVEUll- 1.2206 OVEfiAlL- 1.C4E~ OVERALL- (.8'2'
NOR OVR- 1.7350 NOR CVR- 1.8371 NCR CVA- 1.741! NCR OVR. 1.5U8

Figure 6. Evaluation output for request "automata phrases" (28 different analysis methods).

triple merges. * For each method, the output is presented in two parts: the .left part includes the document numbers of the first 15 documents retrieved
by that method, whereas the right-hand side con-

*The ranked document output for the "merged" methods
is produced by taking the ranked lists for the individual component methods and merging these lists in such a way that
all documents with rank 1 precede all documents with rank
2, which in turn precede documents with rank 3, and so on.

304

PROCEEDINGS -

AV~RAGE"S

.AN~

aUA.SI-ClEVe:RDO~

~ULL

HARR15 TWO

r.RAPH~

THFS

1965

FALL JOINT COMPUTER CONFERANCE,

SlAT PHRAt;E

HIFQ:,AQ(HY UP

SYNT AX PHR

STAT PHRASE

HIFQ DOWr..j

SVNT AX PHR

0.1
(\.2
0.3
('1.4
0.1)
0.6
n.7
0.8
0.9
1.t)

0.9150
0.8 7 99

0.8295
('1.7878
C.71:.q2
0.6665
0.5995
0.5503
C.4~q3

0 3411

HARRIS

HARRI S TWO
NULL THf5

~T.T

0.1 0.94"1
0.2 0.8961
0.3 0.8665
0.40.842S
o.t; C.793~
('1.6 ('I.740~
0.70.653]
0.8 0.5429
0.9 0.4853
1.0 0.4191
RNK REC- "0.5318
lOG PRE- 0.7521
NOR REe- 0.9693
NOR PRE: 0.8786

T~O

0.1 O.91}92
0.2 O.A709

0.3 a.Fl070
0.4 0.7697
0.5 0.7473

0.6 0.1111
0.7 n.6P05
O.R 0.6311
0.9 O.~292
].0 ('I 4272

SYNTAX P,..R

SYNTAX PiotR

HIEJlARCHY UP

HIER DOWN

0.1 0.9456
0.2 C.8642
0.3 0.7l0!!
0.4 0.7"3~1
C.5 C".111"1
0.60.6698
0.70.6201
0.8 0.5595
C.9 C.49~1
1.00 39('0

0.1 0.9174
0.2 0.8556
0.3 0.1951
~.4 0.7779
I".t; C.1629
0.6 0.1~04
0.7 0.6875
0.8 0.6117
r.9 0.5291
1.0 0 41~9
PHI( QFCc O.~141 RNI( rlEC'" 0.'5471
LOG PRE- 0.7413 LOG PRE= 0.1641
NOR REC- 0.9683 NOR REe= 0.9113
NOR PRE:.: 0.8687 NOR PRE- 0.8806

HARRIS TWO

HAR~I

NULL THES

NULL THES
HJER DOwN

0.1 0.9458
0.2 0.8938
c.~ C.83S0
0.4 C.8131
C.50.1901
0.60.1274
0.10.6215
0.8 0.5111
o.q 0.4698
1.n 0 4060
RNI( flEe= (;.5173
LOG PRE= 0.7460
NOR REC= C.9668
NOR PRE= 0.8112

o. '3

S TWO

0.1 '0.9583
0.2 0.9108
C.3 C.8590
('.4 ('.8"2;"30
0.50.7876
0.60.7"i18
e.7 C.6491
0.8 0.5499
0.9 0.48'31
1.00 4}52
QNI( PEC= 0.5323
LOG PQE= 0.7545
NOR REC= 0.9705
~OR PRE= (".8815

0.1 0.8124
0.2 O.7S42
O. '3 0.11 ~ 1
0.4 C.61~5
0.15 0.65'8
0.6 0.~B68
0.7 0.5178

o.e

O.44~1

0.9 O.3r;)7

HARRI S TWO

HARRIS TWO

HtFq rmWN

PHR'«;E

0.1 0.94;\1
0.2 0.8989
~.3 0.8678
0.4 0.8227
o.~ 0.7Q44
r.6 0.1515
0.7 0.7134
0.8 0.6235
0.9 0.528e
1.0 0.4466
1.0 n.4]ft
RNK ~EC- 0.5732 RNK qec- o.
25
lOG PQF'" ".7809 L("I(j PPE- n
572
NOP REC'" ('I.q7~1 PIOR RFC=
.97] 1""
NOR PRE- 0.8983 NOR PRE.8842

HIERARCHY UP

n.l 0.9384
('1.2 0.8379
0.7765
n.4 0.1666
0.5 0.7352
1".6 0.6190
o. 7 O.62~3
0.8 0.5645
0.9 0.4667
1.0 0.3853

0.1 O.9~P.4
0.2 O.890C
0.3 0.8345
0.4 0.7981
0.5 0.7692
0.6 0.7417
0.10.706'"
o.e 0.6519
0.9 0.5457
1.0 0 4412

HIERARCHY UP
H!£R nOWN

0.1
0.2
0.3
0.4
0.5
0.6
('1.1
O.B
0.9
1.0

!lNIC
lOG
"lOR
NOR

1.0 0.385('1
qEe- 0.4909 11,,1C
PPF~ 0.7244 LOG
REe., 0.q6~B NOP
PRE- 0.8608 NOR

NUll TH£S
STAT PHRASf

HARRIS TWO

0.1 0.9431
0.2 0.8917
0.3 (\.A~48
r.40.7767
0.50.76'='1
0.6 0.7237
e.70.6639
0.8 0.6C16
0.90.5176
1.004364
RNK RE"C= 0.5568
LOG PREz: 0.7683
NOR REC: 0.9736
NOR PRE= O.fl.897

0.1
0.2
0.3
0".4
0.5
0.6
0.7
O.B
0.9
1.0
RNIC
LOG
NOR
NOR

0.9399
0.8882
0.8161
0.7530
0.72"i7
0.6762
0.6320
0.5920
0.5338
0.4434
REC~ 0.5529
PRE" 1".762]
REC- 0.9726
PRE= 0.8838

HARR IS TWO

NULL THES
STAT PHRASE

0.1 0.e764
0.1 0.9812
1).2 0.1926
0.2 0.9333
0.' 0.7671
0.30.9073
('1.40.711)00
0.40.A502
('\." n.7179
0.'5 0.79('17
0.6 0.6665
0.6 O.73~8
(,.7 0.5945
0.1 0.6696
0.8 0.4873
0.8 0.6123
C.9 0.'3868
0.9 0.54e1
1.0" 2994
1.00 46q6
RNIC qfC- n.4"323 QNI( QEC= 0.'5A18
lOG PRE,.. 0.6699 LOG PRF= 0.7871
NOR RE"C:.: 0.~658 NOR REC= 0.9735
NOR PRE= 0.8448 NOR PREll: 0.9009

STAT PHRASE
HIERARCHY UP

0.9230
0.8863
0.8429
0.8186
0.1715
0.6889
0.60"37
0.5457
0.4626
n.3R46
REC- 0.5140
PRE_ 0.7403
RFC_ 0.9694
PRE- 0.8740

1.0 0.4346

HARP I 5 TWO
STAT PHRASF.

HARRIS TwO
SYNTAX PHR

HlfR DOWN

HrER~RCHY

0.1 0.9343
0.2 0.8816
0.3 0.e444
0.4 0.8016
0.50.7776
0.60.7466
0.70.7088
0.8 0.6]61
0.9 0.53('13
1.00 431:!1
QNK QEC= O.t;696
LOG PRE"= 0.7759
NOR PEC= 0.9739
NOR PRF= 0.~931

UP

0.1 0.9608
n.2 0.8826
0.3 0.8020
n.4 0.7614
C.50.7456
0.60.7166
0.7 0.6548
(l.8 0.5763
0.9 0.4907
1.0 (,\.4074
R~I( qEC= 0.5J86
LOG PRE_ 0.7463
NOR REe= 1).9695
N~R PRE_ 0.8758

o.~

0.6
0.7
0.8
.9
1 0
RNI(
LOG
NOR
NOR

0.9299
0.8803
0.8:'40
0.7928
0.762')
0.7444
0.6987
0.6318
0.5531
0.4544
'" 0.5824

R
PRE- 0.7~05
REC: 0.9140
PRE= 0.8931

HARRIS TWO
NULL THES
SYNTAX PHR

0.1
0.2
0.3
0.4
0.5
0.6
0.1
0.8
0.9
].0

0NK t'E(= O.
1 FlNK
LOG PRF,.. 0."1613 LOG
NOR REC- 0.9708 NOR
NOR PREll: 0.8891 NOR

0.9583
0.9250
0.8879
0.85S?
0.8202
0.7784
0.7037
0.6033
0.5312
0.4567
REC= 0.S784
PRE= 0.1832
REC= 0.9143
PRE= 0.9004

0.1
0.2
0.3
0.4

0.1
0.2
0.3
0.4
0.15
0.6
0.1
0.8
0.9
1.0
RNI(
LOG
NOR
NOR

0.9583
0.9162
0.8688
0.f!:305
0.8014
0.1769
0.6940
0.5984
0.5167
0.4316
RE"C= 0.5545
PRE= 0.7699
REC= 0.9714
PRE= 0.8911

HARR IS TWO
SYNTAX PHR

HARP I S TWO
HIERARCHY UP

Hl£R DOWN

HIER DOWN

0.1 0.9529
0.2 0.8616
0.3 0.8094
0.4 0.7858
0.50.7145
0.60.7380
0.7 0.69]5
0.8 0.5991
('\.9 0.5048
1.00.4051
RNK REC= 0.5339
LOG PRE= 0.7550
NOR REC= 0.9712
NOR PRE= {'I.8813

0.1 0.9152
0.2 0.8713
0.3 0.7957
0.4 0.7117
0.50.7496
0.60.6811
0.70.5982
O.A 0.5156
0.9 0.4344
1.00.3142
RNK REC= 0.4941
LOG P~EII: 0.1256
NOR REC- 0.9679
NOR PRF"= 0.fl637

Figure 7. Precision vs. recall plots for 28 analysis methods
(averages shown over 17 search requests).

sists of only the relevant document numbers and
their ranks in decreasing correlation order with the
request. Below the lists of document numbers, a va-

riety of recall and precision measures are provided
for each analysis procedure, to reflect the effectiveness of the corresponding process.

INFORMATION SEARCH OPTIMIZATION

An examination of Fig. 6 reveals, for example,
that for the request on "Automata Phrases," improved retrieval is obtained by switching from the
word stem procedure to the synonym recognition
process using the regular thesaurus (labeled 1 in
Fig. 6). This is reflected both by the magnitude of
the evaluation coefficients, and by the ranks of the
last relevant document (1 04th out of 405 for the
word stem process (null thesaurus), and 74th for
"Harris Two"). An improvement is also obtained
by switching from "Harris" thesaurus to the phrase
procedures, and from statistical phrases to syxtax
phrases (labeled 2). The third example from Fig. 6
shows that the merged procedure which combines
the statistical phrases with the hierarchy results in
an increase in performance over and above each of
the component methods. A further improvement is
obtained by adding the regular "Harris 2" thesaurus
process to the previously merged pair ( example
four of Fig. 6).
Figure 7 shows evaluation output obtained for
the same 28 analysis methods previously shown in
Fig. 6, but averaged over 17 different search requests. The output of Fig. 7 is presented in the
form of precision vs. recall graphs, similar to that
shown in Fig. 5 (the actual graphs are not drawn
but tables are presented instead). The five examples
specifically indicated in Fig. 7 again confirm the
earlier results that improvements are obtainable
from method to method.
Each of the three search optimization procedures
described in this study appears to be useful as a
means for improving the retrieval effectiveness of
real-time, user-controlled search systems. Additional experimentation with larger document collections
and with an actual user population may be indicated before incorporating these procedures in an operational environment. Iterative, user-controlled
search procedures appear, however, to present an
interesting possibility, and a major hope, for the
eventual usefulness of large-scale automatic information retrieval systems.

305

REFERENCES
1. G. Salton, "A Document Retrieval System
for Man-machine Interaction," Proceedings of the
ACM 19th National Conference, Philadelphia, 1964.
2. G. Salton and M. E. Lesk, "The SMART
Automatic Retrieval System-An Illustration,"
Comm. of the ACM, vol. 8, no. 6 (June 1965).
3. G. Salton et aI, "Information Storage and Retrieval," Reports No. ISR-7 and ISR-8 to the National Science Foundation, Computation Laboratory, Harvard University (June and Dec. 1964).
4. V. E. Giuliano and P. E. Jones, "Linear Associative Information Retrieval," Vistas in Information Handling, P. Howerton, ed., Spartan Books,
Washington, D.C., 1963.
5. R. M. Curtice and V. Rosenberg, "Optimizing Retrieval Results with Man-machine Interation," Center for the Information Sciences, Lehigh
University, Bethlehem, Pa., 1965.
6. J. F. Rial, "A Pseudo-metric for Document
Retrieval Systems," Working Paper W-4595,
MITRE Corp., Bedford, Mass. (1962).
7. J. J. Rocchio, "Relevance Feedback in Information Retrieval," Report No. ISR-9 to the National Science Foundation, Sect. 23, Computation
Laboratory, Harvard University (Sept. 1965).
8. J. J. Rocchio, "Performance Indices for Document Retrieval Systems," Report No. ISR-8 to
the National Science Foundation, Sect. 3, Computation Laboratory, Harvard University (Dec. 1964).
9. G. Salton, "The evaluation of Automatic Retrieval Procedures-Selected Test Results Using the
SMART System," American Documentatio'n, vol.
16, no. 3 (July 1965).
10. C. W. Cleverdon, "The Testing of Index
Language Devices," ASLIB Proceedings, vol. 15,
no. 4 (Apr. 1963).

AN ECONOMICAL PROGRAM FOR LIMITED PARSING OF ENGLISH
D. C. Clarke and R. E. Wall*
IBM San Jose Research Laboratory
San Jose, California

nicat articles as well. Abstracts, like titles, are intended to be concise statements of the information
in a document, but by virtue of their greater length
should provide more potential index terms.
The syntactic recognition problem with abstracts,
however, is much more difficult than with titles.
The latter often consist only of noun and prepositional phrases and rarely post-modifying participles or relative clauses. Abstracts, on the other
hand, potentially exhibit the full range of syntactic
constructions of formal written English, except for
interrogative and exclamatory sentences, which are
excluded by precepts of style. For this reason, the
fairly simple procedures of the Title Analyzer Program were inadequate for dealing with abstracts
with any reasonable degree of accuracy. While our
initial efforts were directed (as in the Title Analyzer) toward the identification of nouns and their
modifiers, the result has been a program written in
COMIT5 yielding a nearly complete parsing of the
"surface" syntactic structure of each ,sentence. The
overall sequence of operations in the program is
shown in Fig. 1.
In the description of the program which follows
we will emphasize those features of the design imposed by the necessity for economical performance
in a projected mechanized indexing system.
The program accepts cards in a format which is

Automatic syntactic analysis has often been proposed as a component of mechanized indexing
systems. 1,2 However, up to this time, frequency
counting and statistical association techniques have
been more favored, since these involve operations
which can be performed with great speed on present
day computers. Syntactic analysis programs, 3 especially the few which have relatively complete grammars, have suffered from the disadvantage of slow
and expensive operation and consequently have seldum been applied beyond the field of mechanical
translation. In this paper, we report the design and
testing of a limited syntactic recognition program
for English which shows promise of becoming accurate enough to aid in mechanized indexing, yet sufficiently inexpensive to make large-scale use practicable.
We originally developed this system as an extension of Baxendale's Title Analyzer Program,4 which
used a smaH number of syntactic clues and a discard list to select "significant" words and phrases
from titles of technical articles for use as index
terms. However, the shallowness of an index produced only from titles seriously limited the applicability of the Baxendale program, so it seemed natural to apply similar techniques to abstracts of tech*Present address (R. E. Wall): Department of Linguistics,
Indiana University, Bloomington, Ind.

307

308

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

Tentatively bracket
and label phrase
boundaries

Pushdown store

Revise phrase and
clause markings to
correct any ill-formedness

Figure 1. Sequence of syntactic analysis program.

N-type GaAs doped with Te to 3 X 10 17 crn- 3 and 9.6 X 10

17

crn- 3

have absorption coefficients of 20 crn- l and 10 crn- l , respectively,
at 10 475 eV and 77 0 K.

Printed input text

*N-TYPE *GA*AS DOPED WITH *TE TO *(*( **F *) AND *(*( **F *)
HAVE ABSORPTION COEFFICIENTS OF *(*( **F *) AND *(*( **F *)
RESPECTIVELY, AT 1.475 E*V AND 77 DEGREES *K •

Keypunched input text
Figure 2. Sample input sentence.

essentially a character-for-character transcriptiC..l (Fig. 2). We have accepted the present necessity of keypunching and have therefore concentrated
on' making the input format convenient for our syntactic analysis program. Nonetheless, we feel that
this format will be reasonably compatible with automatically transcribed text whenever such becomes
generally available.

DICTIONARY
The function of a dictionary in a syntactic recognition program is to assign each word * of the input
text to one or more word classes (traditionally such
*In this discussion of the dictionary we are referring to
words as tokens or separate occurrences, not as types or the
total of different forms.

AN ECONOMICAL PROGRAM FOR LIMITED PARSING OF ENGLISH

categories as noun, verb, adjective, etc.). The usual
approach is to use a "complete" dictionary, which
contains (ideally) every word form in the language.
Our program uses a "computational" dictionary of
the type described by Klein and Simmons6 which
makes word-class assignments on the basis of
orthographic features. The current dictionary consists of three lists which contain about 1,000 entries
in all:
1. Common function words-prepositions, articles, conjunctions, etc.
2. Word endingst - -ing, -tion, -ed, -OUS, etc.
3. Exceptions to the word ending rulesthing, feed, mention, etc.
One requirement, of the program was that it
should be suitable for use in a mechanized indexing
system. A complete dictionary operating on technical text would require an addition each time a new
word was encountered.' Such additions are not compatible with economic automatic processing. We
thus chose to use a computational dictionary designed to encode correctly the relatively few types
which account for the large proportion of tokens in
running text.
Words which are not classified by the computational dictionary are arbitrarily assigned to the
noun/verb category. This choice is again influenced
by potential use of the program in a mechanized
indexing system. The hypothesis is that the importance of nominal constructions in selection of index
unit candidates places emphasis on the bracketing
of all noun phrases. The grammatical algorithm is
designed to deal with the noun/verb ambiguity.
One advantage of our computational dictionary
is that it is small enough to be contained in the core
storage of an IBM 7094 along with the grammar
rules and program instructions. This allows for a
binary search through the dictionary lists for every
word as it occurs in text ·order. A full diction~ry, on
the other hand, would have to be stored on magnetic tape (in which case the input text would have to
be run in batches, alphabetized, looked up, and
re-sorted into text order) or else stored on drums
or disks, thereby sacrificing the advantage of a binary search. A further consequence . of .the small
computational dictionary contained in core storage
is that the processing of sentences can be open-

t A reverse-alphabetized word list7 was most helpful in
discovering word endings and exceptions.

309

ended. Since there is no need to handle the text in
batches, any number of sentences can be run without interruption once the program has been loaded.
These conveniences, however, are paid for in two
ways. One is the obvious limitation that many
words will receive the arbitrary noun/verb classification because they were not found in the dictionary, and any misclassification may lead to erroneous
phrase bracketings. The other disadvantage is in the
lack of refinement possible in certain word classes.
For example, although the suffix -tion nearly always serves to identify words as noun forms, they
cannot be further subclassified by this clue as animate-inanimate, abstract-concrete, or countable-uncountable. Thus, a computational dictionary
introduces error in syntactic recognition not only by
incorrect word-class assignments, but also by limiting the discrimination which can be made in the
grammar.
GRAMMAR
The grammar gives rules for the allowed combination of word classes into phrases and clauses.
Nine types of phrases-nominal, pronominal, adjectival, past participial, present participial, prepositional, verbal, infinitive, and adverbial-and eight
kinds of subordinate and relative clauses are recognized. The kind of clause is dependent on the clause
introducer and on the alternative structural patterns
predicted by that introducer. For example, if a
clause is introduced by which, the grammar expects
that a verb will be found but that a subject is optional. If a .verb is not found, the algorithm will
search for a re-bracketing to fulfill the requirement for a verb. The output is a labeled bracketing
of these phrases and clauses together with the syntactic word class for each word. An example of the
output is shown in Fig. 3.
Each phrase is enclosed in parentheses and is
followed immediately by an identjfying label (NOUP
= noun phrase, PREP = prepositional phrase, etc.).
A hyphen separates the phrase label from a list of
the word classes assigned to each word in the phrase.
These classes are based on those of Kuno and OettingerS with many modifications. Although a complete list of the word classes and their defining characteristics would be too long to include here, it would
perhaps be helpful to give a few of those appearing
in Fig. 3.

310

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

THIS PAPER PRESENTS A GENERAL SYSTEM CONFIGURATION FOR AN ARITHMETIC UNIT
OF A COMPUTER WHICH IS USED TO SOLVE POLYNOMIAL PROBLEMS EFFICIENTLY
(THIS PAPER) NOUP-ATES NOUS
(PRESENTS ) VERB-VZZS
(A GENERAL SYSTEM CONFIGURATION ) NOUP-ATBS NOVS NOUS NOUS
(FOR AN ARITHMETIC UNIT) PREP-PRE ATBS NOVS NOUS
(OF A COMPUTER ) PREP-PRE ATBS NOUS

***8C 1
WHICH-RL3
(IS USED) VERB-VBIS pZl
(TO SOLVE ) I NFP-TO I S VZZP
(POLYNOMIAL PROBLEMS ) NOUP-NOVS NOUP
(EFFICIENTLY) ADVP-AVI

***EC 1

Figure 3. Sample of output from syntactic analysis program.

NOUS
PRE
VZZS
NOVS
ATBS
PZI
AVI

noun, singular number
preposition
finite form verb, third person,
singular number, transitivity
unknown
noun/adjective
article modifying singular nominals
past participle homographic
with past tense form
regular adverb

The beginning and end of the relative clause are
marked by the symbols * * *BC 1 and * * *EC 1.
Such an analysis falls short of a "complete" phrasestructure parsing in two ways. First, the labelings of
fine structures within phrases are suppressed. For
example, in the sentence shown in Fig. 3, the noun
phrase an arithmetic unit is not overtly labeled as
such but is included in the prepositional phrase. Likewise, the finer structure of this noun phrase itself
(arithmetic unit = NP, etc.) is not given explicitly.
Using phrase-structure tree diagrams we might
illustrate the difference as in Fig. 4. The tree diagram at the .left represents the phrase marker as it
might appear for this 4-word prepositional phrase
in a phrase-structure parsing; the tree at the right
shows the same phrase as it would be analyzed by
our grammar.

The second difference is the failure to mark dependencies between phrases and clauses. For example, in the output in Fig. 3, the point of attachment
of the prepositional phrase for an arithmetic unit is
not specified. The clues for joining such modifiers
to the proper head seem in many cases to be purely
semantic ones, and the problem is always troublesome in any parsing scheme. Jane Robinson cites
the example9 I saw the man with the telescope in
the park, which can have several different readings,
depending on the words which the prepositional
phrases are understood to modify. We do not yet
know whether the simple expedient of joining
post-modifiers to the nearest allowable preceding
structure can be improved upon with the aid of syntactic information alone, nor do we know how
much of this interphrase structure will be necessary
in order to do the job of indexing. In any case, delimiting the phrase boundaries as we have done is a
prerequisite to any attempt to specify these dependencies algorithmically.
The current implementation of our program does
not incorporate an explicit, separable grammar.
However, a formal description of the grammar in a
context sensitive phrase-structure notation hasbeen written to provide documentation.
"-~

311

AN ECONOMICAL PROGRAM FOR LIMITED PARSING OF ENGLISH

/

PRE

~

ATB

NP

/~NP

ADJP

NOV

for

I

an

arithmetic

NOU

unit

for

an

arithmetic

unit

Figure 4. Comparison of phrase-structure tree diagrams.

ALGORITHM
The algorithm is a set of procedures for assigning
an allowable syntactic structure to an input sentence
according to the rules set forth in the grammar. A
serious problem in implementing parsing algorithms
has always been that the processing time tends to
increase exponentially with the number of words in
the sentence being analyzed (because as sentence
length increases, so in general does the number of
combinatoriat alternatives which must be considered). Consequently, the practical upper limit on
sentence length for the best existing programs has
been about 40 words, and for most programs it has
been much below that. Longer sentences are not at
all rare, however, particularly in technical writing,
and any parsing system which is intended to be' a
practical component of an indexing system should
be able to handle them. We therefore attempted to
design this parsing algorithm so that the total processing time would be directly proportional to sentence length.
The general sequence of operations is as follows.
Mter dictionary lookup is complete, all phrase
boundaries are tentatively identified in one leftto-right pass through the sentence. On a second
left-to-right pass, clause boundaries are estab-

lished, and tests for wetl-formedness in each
clause are performed. Nested clauses are handled by
a pushdown storage mechanism. 10 Whenever an illformed condition is recognized, the algorithm initiates an ordered search for alternatives pertinent to
that condition (different word classes or different
phrase boundaries) and will choose the first alternative which resolves that condition. This strategy,
together with the restriction that no set of alternatives can be tried more than once during the analysis of a sentence, avoids the repetitive tracing of
substructures which have already been recognized as
well-formed. Thus, even worst-case analysis
times will vary linearly (or nearly so) with sentence
length. A final series of passes through the sentence
serves to link phrases joined by coordinating conjunctions and performs a few minor revisions before output.
We ,can illustrate one of the parts of the algorithm, the clause well-formedness testing, by using
the example of the sentence in Fig. 3. During dictionary lookup, both paper and presents have received the arbitrary noun/verb coding, but the tatter word, because of its -s suffix, has been coded
as plural noun and third-person singular verb.
After the first pass, the phrases have been bracketed

312

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

as they appear in the output (Fig. 3), except for the
first three words.

ThiS
ATES
[

paper
NOUS
VZZP

presents]
NOUP
VZZS
NOUP

The noun homograph of presents has been tried
first and has led to the incorrect bracketing shown.
On the second pass the lack of a verb for the independent clause is noted (the relative clause is
well-formed), and the algorithm then examines
the first noun phrase, beginning at the right-most
word, for a verb homograph. Presents is found to
have such a homograph, so the subject is redefined
as the remaining noun phrase, This paper, and the
test for number agreement between subject and verb
is made. Since this alternative produces a wellformed clause, the final bracketing is:

This paper]
[ ATES NOUS

[~ATBS

[presents]
VZZS
NOUP

VERB

Had this alternative not been allowable, the other
words in the phrase would have been examined for
verb homographs. If none was found, the phrase
would have been restored to its original bracketing
and the next noun or prepositional ph:ase to the
right in the same clause would have been broken
apart and examined similarly. This procedure would
have continued until either a verb and subject had
been established or else all the relevant possibilities
had been exhausted. However, when all the clauses
of a sentence have been made well-formed, no
more alternatives are tried. Thus, the algorithm arrives at only one syntactic structure for each sentence, in contrast with the multiple parsings generated by a program such as the Harvard Syntactic
Analyzer. 8
While multiple analyses are clearly useful in
linguistic research for exposing syntactic ambiguities, in a practical application such as mechanized
indexing they are an embarrassment of riches. Having all structural descriptions for each sentence
would be of little use since at the present time there
is no method for deciding which analyses are also
semantically acceptable and, further, which is the
one "correct" reading intended by the author. Perhaps one could hope to select instead the "syntacti-

1965

cally most probably" parsing ll ,12 if adequate statistics of English grammatical structures were available. Since they are not, we have ordered the search
for alternatives according to what seem to us, intuitively, to be the most frequently occurring structures.
A useful by-product of the algorithm arises
from the fact that all the phrases of a sentence are
tentatively recognized in the first pass. Should the
analysis of any sentence be terminated because of
excessive time, or if no grammatically acceptable
parsing for some clause can be found, many substrings of the sentence will still be correctly identified.
Thus, in cases of noncJ.tastrophic failure, we are
able to get partial results and go on to the next sentence.
Provision is also made for handling parenthetic
expressions (the clause well-formedness tests are
omitted) and clauses separated by semicolons
(treated as separate sentences). Sentences up to 100
words in length can be analyzed. However, some
very long sentences, depending on the particular
structures they contain, will occasionally require
more COMIT "workspace" than is currently available. In such cases, the program writes out the results of the dictionary lookup routine on a tape
which can later be used as input to the syntactic
analysis portion.
PROGRAM TESTING
The program was coded in COMIT5 because of
the ease it provides in the design and updating of
experimental models. Initial debugging and testing
were carried out on a sample of 70 consecutive sentences taken from abstracts in the IBM Journal of
Research and Development. This text, which we
will refer to as IBM #1, was chosen because it
c~ntained a fairly wide range of technical subject
matter. The results were used to make further refinements to the grammar, and then the program
was tested on 5 more texts,each containing 70 sentences, from randomly selected abstracts. One text
was taken from another issue of the IBM Journal
(IBM #2) and the others from the fields of chemistry, physics, acoustics, and, for comparison with
the technical material, literary criticism. The accuracy with which phrases were identified * is indicat*The method of counting phrases is in accord with our
earlier remarks about "complete" parsing. Thus, the object
in a prepositional phrase does not count as an additional
nominal or pronominal phrase.

313

AN ECONOMICAL PROGRAM FOR LIMITED PARSING OF ENGLISH

Table 1. Accuracy of Identifying Phrases.
Text

No. of
Words

NP

IBM #1
IBM #2
Physics
Chemistry
Acoustics
Literary criticism
Total

1593
1867
1805
1716
1705
2192
10878

154/170
170/182
153/163
160/174
174/187
1931216
1004/1092
92%

Technical
material only

8686

811/876
93%

PP

PMA

PMR

PMP

89/95
100/110
112/118
106/114
117/123
133/161
657/721
91%

10/15
12/19
21/27
18/20
10/11
24/35
95/127
75%

10/11
6/7
11/13
14/15
8/11
4/6
53/63
84%

17/17
20120
11/11
16/17
22/23
10/14
96/102
94%

524/560
94%

71/92
77%

49/57
86%

86/88
98%

Pn P

Inf P

VP

209/222
248/267
240/264
214/241
2331249
249/283
1393/1526
91%

6/6
11/12
11/11
12/12
5/5
54/54
99/100
99%

10/11
12/13
14/14
16/16
18/21
27/27
97/102
95%

1144/1243
92%

45/46
98%

70/75
93%

NP-noun phrase
PP-prepositional phrase
Pn P-pronoun phrase

Inf P-infinitive phrase
VP-verb phrase
PMA-post-modifying adjective

Av P

Percent

Totals

11/15
18/19
19/20
14/15
14/15
37/44
113/128
88%

516/562
597/649
592/641
570/624
601/645
731/840
3607/3961
91%

76/84
90%

2876/3121
92%

92
92
92
91
93
87

PMR-post-modifying present participle
PMP-post-modifying past participle
Av P-adverbial phrase

'Total number of words includes tbose contained in

parenthetic expressions. This accounts for the discrepancies

between the total and tbat given for the acoustics text in
Table 1.

ed in Table 1. A further test using 1,000 sentences
taken from Nuclear Science Abstracts gave similar
results.
It was of interest to compare the performance of
our program with that of one of the most complete
parsing programs available, the Harvard Syntactic
Analyzer (HSA).8 We obtained this program from
SHARE, modified it to produce only one analysis
(i.e., the first found) for each sentence, and tested
it on our first text, IBM # 1. After homograph

codes were supplied for words not found in the
HSA dictionary, the program produced an analysis
for 59 of the 70 sentences. Seven were rejected as
ungrammatical, and four had not been analyzed after at least 5 minutes of running time on each by
the SYNTAX subroutine. One sentence was al'lowed
to run for 17 minutes without success. Table 2
shows the comparison of our program with the
modified HSA in identifying phrases in the 59 sentences which were analyzed by both.

Table 2. Comparison with Modified Harvard Syntactic Analyzer
(59 Sentences from IBM #1; 1244 Total Words).

Our program
HSA

NP
115/126
91%

PP
157/169
93%

Pn P
3/3
100%

Inf P
9/10
90%

VP
73/79
92%

PMA
7/9
78%

104/126
83%'

147/169
87%

3/3
100%

9/10
90%

73/79
92%

9/9
100%

PROCESSING TIME
The core clock was used to measure the time of
each phase of our program for every sentence analyzed. A program kindly supplied by Mr. K. L.
Deckert of the IBM Systems Development Laboratory, San Jose, plotted the times against sentence
length on a CALCOMP plotter and calculated the
slopes of the resulting lines by the method of least
squares. The summarized results appear in Table 3.
Ali the data appeared to be well represented by
straight lines except for the second pass (testing for
clause well-formedness and trying alternatives),
which as expected displayed considerable scattering.
The times for sentences containing parenthetic

PMR
7/8
88%
5/8
63%

PMP
12/12
100%

AvP
7/9
78%

Totals
390/425
92%

5/12
42%

6/9
67%

361/425
85%

Table 3 . Average Processing Times for Each Phase
of Program.
Phase
1. Input and dictionary lookup .

sec Time/word
0.072

2. Bracketing of phrases .

0.047

3. Testing clause well-formedness
and trying alternatives .

· 0.019

4. Rebracketing coordinated structures
and other minor corrections .

.0.024

5. Output

· 0.017

TOTAL

· 0.179

314

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

expressions, because they are treated in a special
way, were also found to deviate markedly from the
line. Nonetheless, we found no clear indication that
the total time might be increasing exponentially
with length for sentences {)f the order of 50 to 75
words.
The total time for our program to analyze the 59
sentences of IBM # 1 (Table 2) was about 4.5
minutes plus 4.2 minutes for compilation (run on
the IBM 7094 but adjusted to the IBM 7090 time).
The time for the modified Harvard Syntactic Analyzer was about 30 minutes (not measured precisely), which does not include the time for dictionary
lookup and updating. We have recently been informed by Dr. Kuno that the running time for the
Harvard program has now been reduced substantially.13 However, this version is not yet available to
us for testing.
DICTIONARY CODING
Since the computational dictionary is a fundamental part of our program, we were concerned with
its ability to assign words to word classes compared
to the assignments made by a complete dictionary.
Klein and Simmons reported that their computational dictionary could correctly assign unique
word-class codes to about 90 percent of the words
in their sample texts. However, this figure measures
the results of two operations: first, assigning each
-word all its possible word-class codes and, second,
eliminating ambiguous codes by means of the context. Our dictionary performs only the first of these
functions, while word-class ambiguities are resolved in the syntactic recognition routine. Therefore, we counted as "correct" those words which
were identified by the computational dictionary or
which were not found and were indeed noun/verb
ambiguities. Table 4 gives the results for the acoustics text. Words coded arbitrarily received only the
noun/verb classification; the fraction of these
marked "incorrect" should have been assigned to
either noun only or verb only, or else should have
had additional codes attached as well. Similar data
were collected for all six experimental texts with an
earlier version of the dictionary. The percentage of
correct coding was somewhat lower (86 percent),
but it was nearly the same for each of the texts.
In order to determine the extent to which parsing
errors arose from inadequacies in the computational

1965

Table 4. Accuracy of Dictionary Coding
for Acoustics Text.
Words
Found among common function
words and exceptions to
. 1001
ending list
Found in ending list
Correct
Incorrect.

Percent

58

_440
13

25
1

137
143

8
8

Total coded correctly* .

. 1578

91

Total coded incorrectly

156

9

Coded arbitrarily (noun/verb)
Correct
Incorrect.

dictionary, we reran two of the texts with corrections to dictionary coding supplied by hand. The
overall accuracy in identifying phrases increased
from 91 to 93 percent for the chemistry text and
from 87 to 90 percent for literary criticism. Thus,
using a perfect dictionary with the present grammar
and algorithm seems to improve the accuracy by
about 2 to 3 percent.
DISCUSSION
The principal result of our work thus far has
been to show that the approach to parsing, which
we adopted for purely practical reasons, nonetheless
succeeds as well in identifying phrases as at least
one other more sophisticated routine. We were
frankly surprised at this result. Because our program was to operate with many handicaps-a minimal dictionary, simple grammar, and severe time
and space constraints on the whole program-we did
not suppose that it would be able to perform so
well.
We must emphasize that the comparison with the
HSA (1963 version) should be accepted with reservations. The HSA, as previously noted, provides a
more complete syntactic description of each sentence than does our program, and therefore the running times are not directly comparable. Also, the
sample for comparison, only 59 sentences, is rather
small. One migIit also argue that selecting only the
HSA's first analysis from each sentence may have
produced a bias, but there seems -to be no reasona-

AN ECONOMICAL PROGRAM FOR LIMITED PARSING OF ENGLISH

ble alternative to this choice, and in fact there is
some reason to believe that the first analysis (rather
than the second, the last, etc.) has a greater probability of being the "correct" syntactic analysis than
does any other. 11
We believe that two factors are chiefly responsible for the degree of success which our program has
so far achieved. First, we have made some fortunate
guesses about the probability of occurrence of syntactic constructions, at least for the kind of technical writing we have investigated. (Note that the accuracy for the literary criticism text was somewhat
lower than for the others despite the fact that the
dictionary coded about the same percentage of
words correctly in this text.) The second factor is
the strategy of searching out alternatives only to
remedy a particular syntactic ill-formation. This
technique aHows most of the previously made
"probable" choices to be left intact whenever an
error is corrected. ~
Three kinds of errors were frequently made by our
program: ( 1) incorrect bracketing of coordinated
structures around and or or; (2) unresolved noun/
verb ambiguity; and (3) incorrect assignment of
words with suffix -ing, which may be adjectival (preand post-modifying), verbal, or gerundive. It is interesting to note that the pattern of errors made by
the HSA differs considerably. A frequent mistake
was also the noun/verb confusion, but it usually
arose from erroneously finding relative clauses beginning with an elliptical which or -that. For example,
a sentence beginning [The maximum signal] [has]
... was analyzed as if it has been [The maximum]
(which) [signal] [has] ... , with a plural noun occurring later in the sentence being called the predicate
verb for the subject maximum.
The current version of our program occupies
about 29,000 registers of an IBM 7094, thus allowing about 4,000 registers for COMIT "workspace"
during analysis. Therefore, no substantial additions
to the dictionary, grammar, or algorithm are possible while maintaining the program's present design
on the IBM 7094. Some slight improvements in
performance can undoubtedly be made at the expense of much more investigation into grammatical
refinements. This. would undoubtedly lead to an increase in running time and storage space required.
We do not know what the limits of accuracy are for
our approach, but we estimate that less than half
the errors are in theory correctable (by an expanded
grammar); the remaining are genuine syntactic am-

315

biguities which presumably can only be resolved by
extrasyntactic information. If this estimate holds, it
means that an accuracy of about 94 percent in
identifying phrases is theoretically attainable.
The point of balance between cost and accuracy
will depend on the particular application envisioned
for the program. Despite the encouraging results
thus far, we cannot claim that our program will
guarantee the feasibility of a mechanized indexing
system. It is clear that more will be required for automatic indexing than an identification of phrases
and clauses. For example, it may be necessary to
specify some interphrase dependencies, and a means
for the deletion of items deemed nonsignificant will
almost certainly be necessary. Also, some syntactic
transformations to convert the material into a format suitable for searching (whether by machine or
human) will probably be essential. Nonetheless, the
prospects for using at le~s.t a limited syntactic analysis program in automatic indexing on a large scale
now seem much more hopeful.
ACKNOWLEDGMENT
The authors wish to express their appreciation to
Mr. J. Bennett and Miss P. Baxendale for substantial contributions to this work throughout its development. Mr. Bennett assisted materially in the programming and made several modifications to the
COMIT system which greatly expedited the debugging.
REFERENCES
1. W. D. Climenson, H. H. Hardwick and S. N.
Jacobson, "Automatic Syntax Analysis in Machine
Indexing and Abstracting," American Documentation, vol. 12, pp. 178-183 (1961).
2. G. Salton (principal investigator), Report
No. ISR-7 to the National Science Foundation,
Harvard Computation Laboratory, Cambridge,
Mass. (1964).
3. D. G. Bobrow, "Syntactic Analysis of English by Computer-A Survey," Proceedings of the
Fall Joint Computer Conference, 1963, p. 365.
4. P. B. Baxendale, "An Empirical Model for
Machine Indexing," Machine Indexing Progress and
P~oblems, papers presented at the Third Institute on
Information Storage and Retrieval, American University, 1961, p. 207.

316

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

5. V. H. Yngve, "COMIT As an IR Language,"
Communications of the ACM, Jan. 1962, pp. 1928.
6. S. Klein and R. F. Simmons, Journal of the
ACM, 1963, p. 334.
7. A. F. Brown (ed.), Normal and Reverse
English Word List, Univ. of Pennsylvania, Philadelphia, 1963.
8. A. G. Oettinger (principal investigator),
Report No. NSF-8 to the National Science Foundation, Harvard Computation Laboratory, Cambridge, Mass. (Jan. 1963).
9. J. J. Robinson, "Preliminary Codes and
Rules for the Automati -; Parsing of English," Memorandum RM-3339-PR, RAND Corp., Santa Monica, Calif. (Dec. 1962).

1965

10. A. G. Oettinger, "Automatic Syntactic Analysis and the Pushdown Store," Proceedings of the
Twelfth Symposium in Applied Mathematics,
American Mathematical Society, 1961, p. 104.
11. R. E. Wall, "Probabilistic Approach to Ordering Multiple Analyses of Sentences," in Report
No. NSF-13, Harvard C;omputation Laboratory,
Cambridge, Mass. (Mar. 1964).
12. K. C. Knowlton, "Sentence Parsing with a
Self-Organizing Heuristic Program," Ph.D. thesis,
Massachusetts Institute of Technology, Sept. 1962.
13. S. Kuno, "The Predictive Analyzer and a
Path Elimination Technique," Communications of
the ACM, July 1965, pp. 453-462.

THE MITRE SYNTACTIC ANALYSIS PROCEDURE FOR
TRANSFORMATIONAL GRAMMARS*
Arnold M. Zwicky,t Joyce Friedman,t
Barbara C. Hall, t and Donald E. Walker
The MITRE Corporation
Bedford, Massachusetts

INTRODUCTION

The Problem of Syntactic Analysis

A solution to the analysis problem for a class of
grammars appropriate to the description of natural
languages is essential to any system which involves
the automatic processing of natural language inputs
for purposes of man-machine communication, translation, information retrieval, or data processing. The
analysis procedure for transformational· grammars
described in this paper was developed to explore the
feasibility of using ordinary English as a computer
control language.

Given a grammar* G which generates a language
L( G), we can define the recognition problem for G
as the problem of determining for an arbitrary string
x of symbols, whether or not x E L (G). The more
difficult problem of syntactic analysis is to find, given
any string x, all the structures of x with respect to G.
The syntactic analysis problem varies with the class
of grammars considered, since both the formal properties of the languages generated and the definition of
structure depend on the form of the grammar.
A context-free (CF) phrase-structure grammar is
a rewriting system in which all rules are of the form
A ~ cp, where cp is a non-null string and A is a single
symbol; in context-sensitive (CS) phrase-structure
grammars all rules are of the form tilt A 0/2 ~ 0/1 cp 0/2,
where A and cp are as before and 0/1 and 0/2 are strings
(possibly null) of terminal and/or nonterminal symbols. A derivation in a phrase-structure grammar is
represented by a tree in which the terminal elements
constitute the derived string. In a transformational
grammar there is, in addition to a phrase-structure

*The research reported in this paper was sponsored by the
Electronic Systems Division, Air Force Systems Command,
under Contract AF19 (628) 2390. The work was begun in
the summer of 1964 by a group consisting of J. Bruce Fraser, Michael L.Geis, Hall, Stephen Isard, Jacqueline W.
Mintz, P. Stanley Peters, Jr., and Zwicky. The work has
been continued by Friedman, Hall, and Zwicky, with computer implementations by Friedman and Edward C. Haines.
Walker has directed the project throughout. The grammar
and procedure are described in full detail in reference 1. This
paper is also available as ESD-TR-65-127.
tPresent addresses of Zwicky, Friedman and Hall are, respectively: Department of Linguistics, University of Illinois,
Urbana; Computer Science Department, Stanford University,
Stanford, Calif.; Department of Linguistics, University of
California, Los Angeles.

*The linguistic concepts on which this work is based are
due to Noam Chomsky; see, for example, references 2-6.

317

318

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

component, a set of transformational rules which operates upon trees from the phrase-structure component to produce trees representing sentences in their
final form.
For both types of phrase-structure grammars the
syntactic analysis problem is known to be solvable.
In the case of CF grammars, a number of general
recognition and syntactic analysis procedures have
been developed and programmed. Several syntactic
analysis algorithms for CS grammars given by Griffiths (1964). 8
The case of transformational grammars is complicated by the fact that they do not correspond exactly to any well-studied class of automata. In
fact, a number of decisions crucial to their formalization have yet to be made. This situation makes it
impossible to describe a general recognition procedure for transformational grammars without explicit
conventions about the form and operation of transformational rules. Since there is no widespread
agreement as to the most desirable conventions, it
is likely that different people working on the analysis problem for transformational grammars are actually working on quite different problems. A solution to the problem with one set of conventions will
not necessarily be a solution to the problem with a
different set of conventions. Furthermore, the solution in one case would not necessarily imply the
existence of a solution in another.
The area of formal properties of transformational
grammars needs more study; the results of this attempt to solve the syntactic analysis problem for a
particular one may help in determining the further
restrictions needed on the form of transformational
rules.

1965

phrase-structure component serve to generate a set
of basic trees that are then operated upon by the
rules of the transformational component to produce
a set of surface trees.

Phrase-structure Component

A CS phrase-structure rule t/Jl A t/J2 ~ t/Jl cp t/J2 is
written in the form A ~ CP/t/h - t/12. t/Jl or t/J2 or both
may be null. The rules are ordered; consecutive rules
expanding the same symbol in the same context are
considered to be subrules of a single rule. A rule in
this sense is thus an instruction to choose anyone
of the specified expansions.
The initial symbol of the grammar is SS, and the
first phrase-structure rule is SS ~ # S #. t Further instances of SS and S are introduced by later rules.
These instances are expanded during a succeeding
pass through the phrase-structure rules during which
new instances may be introduced, etc. The result is
a tree that may contain sentence-within-sentence
structures of arbitrary depth. This version of the
phrase-structure component differs somewhat from
the more usual versions, but is similar to the version
presented in Chomsky.3
We shall use the following tree terminology: x is
a daughter of y, x (not necessarily immediately) dominates y, x is the (immediate) right (left) sister of y,
x is terminal, and the sequence Xl, X2, • • • , Xn is a
(proper) analysis of x. We shall also refer to the
(sub) tree headed by x. These terms are all either
standard of self-explanatory.

Transformational Component

THE MITRE GRAMMAR
In order to develop an analysis procedure it was
necessary to fix on a particular set of conventions
for transformational grammar. Many of these conventions agree essentially with the more or less
standard conventions in the literature; points on
which general agreement has not been reached will
be noted.
The grammar contains two principal components: a CS phrase-structure component and a
transformational component. * The rules in the
*There is a third component, the lexicon, which will not
be discussed in detail here.

Form of the Rules. A transformational rule specifies a modification of a tree headed by the node SS
or S. Every such rule has two main parts, a description statement and an operation statement.
The description statement sets forth general conditions that must be satisfied by a given tree. If
these conditions are not met, then the rule cannot
be applied to the tree. The conditions embodied in
a description statement are conditions on analyses of
tThe first phrase-structure rule in the MITRE grammar
differs from this rule by allowing for the conjunction of any
number of sentences. SS may then dominate a sequence of
conjoined sentences. S, on the other hand, never immediately
dominates such a sequence.

319

SYNTACTIC ANALYSIS FOR TRANSFORMATIONAL GRAMMARS

sentences (trees headed by SS, # S #, or S*); a description statement is to be interpreted as requiring
that the given tree have at least one analysis out of a
set of analyses specified by the description statement.
If a tree satisfies the conditions embodied in a
description statement, then the operations apply to
the subtrees headed by the nodes in the analysis. The
operation statement lists the changes to be madethe deletions, substitutions, and movements (adjunctions) of subtrees.
In addition to a description statement and an operation statement, a transformational rule may involve a number of restrictions. A restriction is an
extra condition on the subtrees. The extra condition
is either one of equality (one subtree must be identical to another) or of dominance (the subtree must
contain a certain node, or must have a certain analysis, or must be a terminal node). Boolean combinations of restrictions are permitted.
The form of a transformational rule can be illustrated by the following example:
TWH2
(#) (Q) ($NIL NG) (AUXA) ($SKIP NP AP $RES 19)

1
2
3
(5) ADLES 4
ERASE 5

4

5
$RES 19:

dom WH

The description statement of this rule (TWH2)
consists of five numbered and parenthesized description segments. Each segment specifies one part
of an analysis. When several grammatical symbols
(symbols not beginning with $) are mentioned in a
segment, the interpretation of the segment is that
the corresponding part of the analysis must be a
subtree headed by one of these symbols. When
$NIL is mentioned in a segment, the interpretation
is that the corresponding part of the analysis is optional-that is, the corresponding part may be a null
subtree; if, however, some analysis can be found in
which the correspcnding part is not null, that analysis must be chosen. The occurrence of $SKIP in a
segment is equivalent to a variable between that
segment and the preceding one. * $RES must be followec! by the number of the restriction to which it
refers. There is an implicit variable at the end (but
not at the beginning) of every description statement.
In a more informal and traditional notation, the
*This distinction is not important for our discussion here.
See the discussion in reference 1.
*$SKIP and $NIL may not both be used in a single segment.

description statement of TWH2 would be written as

#
~

+

Q

+

(NO)

~~~-----

1

P
-AUXA-X- {ANp
~
234

I

y+#
~

5
In our system there is no way of referring to a sequence of subtrees as a single part of an analysis,
althiugh there is in the more informal notation.
In outline, the routiJ?e that searches through a
tree for an analysis that conforms to a given description statement searches from left to right
through the tree, attempting (in the case of a segment containing $NIL) to find a real node before
assuming thqt a segment is null, attempting always
(in the case of a segment containing $SKIP) to
"skip" the smallest possible number of nodes, and
checking (in the case of a segment containing
$RES n) to see if a restriction is satisfied as soon
as a node to which the restriction applies is found.
In case one part of the search fails, either because
the required nodes cannot be found or because a
restriction is not satisfied, the routine backs up to
the most recent point at which there remains an alternative (e.g., the alternative of searching for NP
or for AP in the fifth segment of TWH2). As each
part of the analysis is found, the appropriate subtrees are marked with numbers corresponding to the
numbers on the description segments. The tree then
undergoes the modifications specified in the· operation statement.
The operation statement of TWH2 consists of an
(ordered) list of two instructions. There are three
types of instructions: the adjunction instructions, the
substitution instruction, and the erasure instruction.
The adjunction instructions are of the form (cp) AD
n, where cp is a sequence containing numerals (referring to the marked subtrees) or particular grammatical symbols or both, where AD is one of the four
adjunction operations - ADLES (add as left sister), ADRIS (add as right sister), ADFID (add as
first daughter), or ADLAD (add as last daughter)
- and where n is a numeral referring to a marked
subtree. The instruction (5) ADLES 4 specifies the
adjunction of a copy of the subtree marked 5 as the
left sister of the node heading the subtree marked 4.
Substitution instructions are of the form (cp) SUB n,
where cp and n are as before. When such an instruction is applied, copies of the elements of cp replace the

320

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

subtree marked n, and this subtree is automatically
erased. *
Erasure instructions are of the form ERASE n
(erase the subtree marked n and any chain of nonbranching nodes immediately above this subtree) or
ERASE 0 (erase the entire tree). The ERASE 0
instruction permits us to use the transformational
component as a "filter" that rejects structures from
which no acceptable sentence can be derived.
Derivations. The transformational rules are distinguished as being obligatory or optional, cyclical or
noncyclical, and singularly or embedding. The obligatory / optional distinction requires no special comment here.
A rule is cyclical if it can be applied more than
once before the next rule is applied. A rule may be
marked as cyclical either (a) because it can be applicable in more than one position in a given sentence (say, in both the subject and object noun
phrases), or (b) because it can apply once to yield
an output structure and then apply again to this
output. Otherwise, the rule is marked as noncyclical. In the present grammar case (b) does not occur.
Singulary rules are distinguished from embedding
rules on the basis of the conditions placed upon the
tree search. In the case of a singulary rule the
search cannot continue "into a nested sentence"that is, beneath an instance of SS or S within the
sentence being examined; the search may, of course,
pass over a nested sentence. In the case of an
embedding rule the search can continue into a nested sentence, but not into a sentence nested in a
nested sentence. Singulary rules operate "on one level," embedding rules "between one level and the
next level below."
The transformational rules of our grammar are
grouped into three sets-a set of initial singularies, a
set of embeddings with related singularies, and a set
of final singularies. t The rules are linearly ordered
within each set.
The initial singularies operate on the output of
the phrase structure component; they can be considered as applying, in order, to all subtrees simultane-

1965

ously, since these rules do nothing to disturb the
sentence-within-sentence nesting in a tree. There
are numerous ways to order the application of these
rules with respect to the nesting structure of a tree,
and they are all equivalent in output.
The embeddings and related singularies operate
on the output of the initial singularies. These rules
require a rather elaborate ordering. Let us define a
lowest sentence as an instance of # S # in which S
does not dominate # and a next-to-lowest-sentence
as an instance of # S # in which S dominates at least
one lowest sentence and no instance of # S # that are
not lowest sentences. At the beginning of the first
pass through the embeddings and related singularies,
all lowest sentences are marked. The rules will be
applied, in order, to the marked subtrees. At the beginning of each subsequent pass, all next-to-Iowest
sentences will be marked, and the rules will again be
applied, in order, to all marked subtrees. Characteristically, the embedding rules, when applied during
these later passes, erase boundary symbols and thus
create new next-to-Iowest sentences for the following
pass. However, only those subtrees marked at the
beginning of a pass can be operated upon during
the pass. The process continues until some pass
(after the first) in which no embedding rules have
been applied.
The final singularies operate on the output of the
embeddings and related singularies. They can be
considered as applying, in order, to all subtrees
simultaneously.
A tree that results from the application of all applicable transformational rules is a surface tree.
Each surface tree is associated with one of the sentences generated by the grammar.
Dimensions

The MITRE Grammar generates sentences with a
wide variety of constructions-among them, passives,
negatives, comparatives, there-sentences, relative
clauses, yes-no question, and WH-questions. The
dimensions of the grammar (excluding all rules concerned with conjunction) are as follows:
Phrase Structure Component:

*If $NIL is chosen in th,e nth description segment, then
AD. n or (cp) ~UB n IS vacuous. Null terms in cp are
Ignored; If all of cp IS null the instruction is vacuous.
~ cp)

tThere is also a fourth set, conjunction rules. Because of
the tre~!F~nt of conjunc!ion in. the "En¥1ish Preprocessor
Ma~lUal
IS cu~rently bemg reVIsed, conjunction has been
omItted from thIS presentation.

Transformational Component:
75 rules
approximately 275 subrules
13 initial singularies

321

SYNTACTIC ANALYSIS FOR TRANSFORMATIONAL GRAMMARS

26 embeddings and related
singularies, including 9 embeddings

PRES SO M

I

CAN

15 final singularies

PRES PL M

54 rules

VINT

I

I

CAN

THE MITRE ANALYSIS PROCEDURE

NCT
#

The MITRE analysis procedure takes as input an
English sentence and yields as output the set of all
basic trees underlying that sentence in the MITRE
grammar. If the procedure yields no basic tree, the
input sentence is not one generated by the grammar.
If the procedure yields more than one basic tree,
the input sentence is structurally ambiguous with
respect to the grammar.
.
There are five parts to the procedure: leXIcal
look-up, recognition by the surface grammar, reversal of transformational rules, checking of presumable basic trees, and checking by synthesis. These
parts are described in detail in the following sections.
Lexical Look-up

The first step of the process is the mapping of
the input ·string into a set of pre-trees, which are
strings of subtrees containing both lexical and
grammatical items. The pre-trees are obtained
from· the input string by the substitution of lexical
entries for each word.
A lexical entry for a word may be identical to the
word (in the case of grammatical items like A and
THE). More often, a lexical entry for a word indicates a representation of the word in terms of more
abstract elements (NEG ANY for NONE), a
ADJ
category assignment for the word (
I for
GREEN
GREEN), or a combination of abstract representaPRES SG VTR
tion and category assignment (
I
for
OPEN
OPENS). A word may have several lexical entries.
The number of pre-trees associated with an input
string is then the product of the numbers of lexical
entries for the words in the string. Thus, the string
# CAN THE AIRPLANE FLY # has 15 associated
pre-trees, which can be schematically represented as:

I

SO

FLY
THE NCT SO PRES PL VINT

I

I

CAN

FLY :J:I:

AIRPLANE

VTR

I

CAN
NCT SO

PRES PL VTR

I

I

FLY

CAN

Of these 15 pre-trees, only
# PRES

SG

M

I

CAN

THE

NeT

I

SG

AIRPLANE

VINT

I

#

FLY

is a correct assignment of lexical entries to the words
in the input string. *
Recognition by the Surface Grammar

The surface grammar is an ordered CF phrasestructure grammar containing every expansion
which can occur in a surface tree. Unavoidably, the
surface grammar generates some trees which are not
correct surface trees, even though the corresponding
terminal string may be a sentence obtainable by the
grammar with some other structure.
In the second step of the analysis procedure the
surface grammar is used to construct from each
pre-tree a set of presumable surface trees associated with the input string. Since the surface grammar
is context-free, and context-free parsing algorithms
are known to exist, no details will be given here for
this step of the analysis.
In the course of recognition by the surface grammar, some pre-trees may be rejected. For example,
9 of the 15 pre-trees in the previous section are
rejected in this way. From other pre-trees one or
more presumable surface trees will be constructed.
The remaining steps of the analysis procedure are
designed to determine, for each presumable surface
tree, whether or not the tree is in fact a surface tree
for the input sentence.
*Since the MITRE grammar generates neither imperatives
nor noun-noun compounds, the interpretation of CAN THE
AIRPLANE FLY as analogous to CORRAL THE SADDLE
HORSE is excluded.

322

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

Reversal of Transformational Rules

The next step in the analysis procedure reverses
the effect of all transformational rules that might
have been applied in the generation of the given
presumable surface tree.
The "undoing" of the forward rules is achieved
by rules that are very much like the forward rules in
their form and interpretation. The discussion under
Form of the Rules, above, applies to reversal rules
as well as to forward rules, with the following additions:
(a) There is a new adjunction instruction, ADRIA
(add as right aunt - that is, add as right sister
of the parent).
(b) Adjunction and substitution instructions have
-been generalized to permit instructions like:
(A)
B

ADRIS
C

n

(1 B C) SUB n

I

231

1965

( c) in some cases the reversing of several forward
rules can be combined in whole or in part into a
single reversal rule.
Reversed final singularies are first applied to all
subtrees. Then reversed embeddings and related singularies are applied in several passes. The first pass
deals with the highest sentences in the tree. Later
passes move downward through the tree, one level
at a time. New lower sentences are created when
boundary symbols are inserted during the reversal
of embedding transformations; in general, a sentence created on one pass is dealt with on the next.
Finally, reversed initial singularies are applied everywhere.
The effect of transformational reversal is to map
each presumable surface tree into a presumable basic
tree. t
Checking of Presumable Basic Trees

As with forward rules, reversal rules are either
cyclical or noncyclical, and either singulary or
embedding. All reversal rules are obligatory. *
The reversal rules are grouped together in the
same way as the forward rules, and the order of
their application within each group is essentially
the opposite of the order of the corresponding forward rules. In many cases, one reversal rule undoes
one forward rule. There are three types of exceptions, however: (a) several reversal rules may be
required to attain the effect of undoing a single forward rule; (b) for some rules, notably the rules
with ERASE 0 instructions, no reversal is needed;

In the next step of the analysis procedure, each
presumable basic tree is checked against the
phrase-structure component of the (forward)
grammar. The check determines whether or not the
presumable basic tree can in fact be generated by
the phrase-structure component; if it cannot, it is
discarded.
Checking by Synthesis. It is possible that transformational reversal and phrase-structure checking
could map a presumable surface tree T 1 into a basic
tree T2 that is not the basic tree underlying T 1• For
example, the reversal rules map at least one presumable surface tree associated with THOSE PIG IS
HUGE into a basic tree underlying THAT PIG IS
HUGE. Even under the assumption that input sentences are grammatical, the possibility remains. For
example, the reversal rules map at least one presumable surface tree associated with THE TRUCK HAS
A SURFACE THAT WATER RUSTS into a basic
tree underlying mE TRUCK HAS A SURFACE
THAT RUSTS. Similarly, they map at least one presumable surface tree associated with THEY CAN
FISH into a basic tree underlying THEY CAN A
FISH.
Revision of the present reversal rules and the
introduction of rejection rules into the transformational reversal step might make a synthesis step

*Optional reversal rules are required when two distinct
basic trees are mapped into identical surface trees by the
application of forward rules. No such example occurs in the
present MITRE grammar.

tDistinct presumable surface trees may be mapped into
identical presumable basic trees; the resultants of distinct
presumable surface trees will continue to be processed separately, however.

I

1

2D

Such instructions are used to restore entire subtrees deleted by forward rules.
( c ) In the reversal of optional forward rules, a
marker OPTN is added as a daughter of a specified node, which in every case is either terminal
or else has only a lexical expansion. Some such
device is required if the result of the final synthesis step is to correspond to the original input
string. The constraint on the placement of
OPTN insures that the marker will not interfere
with the operation of other reversal rules.

SYNTACTIC ANALYSIS FOR TRANSFORMATIONAL GRAMMARS

323

unnecessary. However, the above examples demonstrate that with the present rules this step is essential.
In the synthesis step, the full set of forward transformational rules is applied to each basic tree that
survives the previous checking step. Each optional
rule becomes obligatory, with the presence of the
marker OPTN (in the appropriate position) as an
added condition on its applicability.
The synthesis step maps a basic tree T 2, derived
from a presumable surface tree T 1, into a surface tree
T 3. If T 1 and T 3 are not identical, then T 2 is discarded as a possible source for the input string. If T 1
and T 3 are identical, then T 2 is a basic tree underlying T 1 (and hence, underlying the input string).

parsing would improve the procedure by eliminating some incorrect surface trees at an early stage.
Some increase in the efficiency of the reversal
step might be achieved by making use of a preprogrammed path through the reversal rules, or by using information that certain surface grammar rules
signal the applicability or inapplicability of certain
reversal rules. Similarly, the efficiency of the final
synthesis step might be improved by making use of
a preprogrammed path through the forward transformational rules, or by using information that certain reversal rules have been applied.
A nalysis by Synthesis

Dimensions

The first analysis procedure proposed for transformational grammars was the "analysis by synthesis" model of Matthews. 9 Basically this procedure
involves generating sentences until one is found
which matches the input sentence; the steps used in
the generation provide the structural description.
No attempt to program the analysis-by-synthesis
procedure for transformational grammars has been
reported in the literature. In its raw form this procedure would take an astronomically long time. One
way to refine the procedure would be to use a "preliminary analysis" of some sort, which would have
to be extensive to make any appreciable change in
efficiency. As a result, there may be no sharp boundary between refined analysis-by-synthesis and
direct analysis with a final checking-by-synthesis step. In the case of the MITRE procedure the
final synthesis step plays a relatively minor role in
the total procedure.

The dimensions of the additional components of
the analysis procedure are as follows:
Surface Grammar:

Reversal Rules:

49 rules
approximately 550
subrules
30 final singularies
92 embeddings and
related singularies
12 initial singularies
134 rules

AREAS FOR FURTHER INVESTIGATION
We are investigating a number of problems both
in the grammar and in the analysis procedure, with
the objectives of making the grammar more adequate and the procedure more efficient.
Among the grammatical problems are the use of
syntactic features (see Chomsky3) and the addition
of further rejection rules in the transformational
component. The treatment of conjunction is being
revised. Other topics requiring investigation include
adverbial clauses, superlatives, verbal complements,
imperatives, and nominalizations.
We are examining a number of ways to improve
the efficiency of the analysis procedure. If the input
vocabulary is to be of an appreciable size, an efficient and sophisticated lexical look-up routine
will be required. We are using computer experiments to determine the extent to which the use of a
CS surface grammar, either as the basis of a CS
parsing routine or as a check on the results of CF

Petrick's Procedure

S. R. Petrick10 has proposed and programmed a
general solution to the analysis problem which is
similar in many respects to the MITRE procedure.
One of the main differences between his approach
and ours is that he alternates the use of reversal
rules and phrase-structure rules, while we use first
the phrase-structure rules of the surface grammar
and then the reversal rules. Furthermore, while Petrick's reversal rules are all optional, ours are all
obligatory. It follows that although we may have a
larger number of structures to consider at the beginning of reversal step, this number does nbt increase
as it does at every step in Petrick's procedure.
At the present time the procedures differ in gen-

324

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

erality, for Petrick has shown that there are algorithms for the construction of his surface grammar
and reversal rules. In the case of the MITRE procedure, the question of the existence of comparable
algorithms has not yet been resolved.
Kuno's Procedure

Another approach to the analysis problem has
been proposed in Kuno. 11 Kuno attempts to find
basic trees, without using reversal rules, by constructing a context-free surface grammar and associating with each of its rules information about the
form of the basic tree.
Kuno reported that an experimental program for
this system had been written and was being tested
on a small grammar. At that time it was not known
whether an algorithm for constructing the required
phrase-structure grammar existed.
COMPUTER TESTS
To test the grammar and the procedure a set of
FORTRAN subroutines (called SYNN) , designed
to be combined in several different programs, has
been written. In one order, the subroutines carry
out the procedure from the stage at which presumable surface trees have been obtained, through" the
base tree, to the final step of comparison of the derived surface tree with the given presumable surface
tree. In other orders they can, for example, convert
base trees to surface trees and back, or check surface trees against context-sensitive grammars.
We describe first the su1:'-routines, in groups corresponding to the major components of the MITRE
procedures, then some of the programs and the results of running the programs on a subset of the
grammar.
Subroutines

Because the primary operations are operations on
trees, the main subroutines of the SYNN package
analyze and manipulate trees. Three of the subroutines treat trees without reference to the grammar:
CONTRE reads in a tree and converts it to the internal format, TRCPY stores a copy of a tree for
later comparison, and TREQ compares two trees to
see if they are identical.
In the SYNN package there are four subroutines
that deal with phrase-structure grammars. CONCSG

1965

and CONCFG read in context-sensitive and contextfree grammars, respectively, and convert them to
internal format. CHQCS and CHQCF check the
current tree against the indicated grammar by a
regeneration procedure.
Most of the subroutines of SYNN are concerned
with the transformational components. Separate subroutines read in the transformational rules, control
the application cycle, mark levels of embedded subtrees, search for an analysis, check restrictions, and
perform the operations.
The application of the forward rules is controlled
by the subroutine APPFX, and the application of
the reversal rules by APPBX. The application cycles are as described in the section Reversal of
Transformational Rules, above, except that each
transformational rule has a keyword which is used
to bypass the search if the transformational keyword does not occur in the tree.
There is also a generation subroutine GENSR
which is best described as a "constrained-random" generator. Within constraints specified by the
user the subroutine generates a pseudo-random
base tree to which other subroutines of SYNN can
be applied.
Programs

In initial tests of the grammar and procedure the
most useful combination of subroutines was in the
program SYN1, which goes from basic tree to surface tree and back to basic tree, checking at every
step. This first program is an iteration of the subroutines CONTRE, TRCPY, CHQCS, APPFX,
CHQCF, APPBX, CHQCS, TREQ. When all parts
are correct, the final result is the same as the input,
and this is indicated by the final comment of the
TREQ subroutine.
The program SYN2 carries out the steps of the
MITRE procedure without the first two steps, lexical look-up and context-free parsing. Its basic
cycle is CONTRE, TRCPY, APPBX, CHQCS,
APPFX, CHQCF, TREQ. After each of the subroutines an indicator is checked to see if the tree
should be rejected.
The program SYN3, which uses the generation
subroutine, is like SYN2 except that GENSR replaces CONTRE in the basic cycle. Inputs for
GENSR are easier to prepare than those of

325

SYNTACTIC ANALYSIS FOR TRANSFORMATIONAL GRAMMARS

CONTRE, so that SYN3 is being used extensively
in debugging the grammar.
The lexical lock-up and context-free parsing
steps of the procedure have not been programmed.
Because algorithms for these steps are known to exist, it was decided that their programming could be
postponed and an existing program used.
Test Grammar
A subset of the grammar, familiarly known as the
JUNIOR grammar, was selected for initial tests of
the procedure. Its dimensions are:
(Forward)
Grammar
Phrase-Structure
Component:
Transformational
Component:

Surface Grammar
Reversal Rules

61
105
11
6

3
20
32
306
6
15
11
32

rules
subrules
initial singularies
embeddings and related singularies, including two embeddings
final singularies
rules
rules
subrules
final singularies
embed dings and related singularies
initial singularies
rules

Twenty-six sentences (plus some variants) constitute a basic test sample for the JUNIOR grammar. This sample, which includes at least one test
for each transformational rule, contains ( among
others) the sentences:
1. The airplane has landed.
2. Amphibious airplanes can land in water.
3.0 Did the truck deliver fifty doughnuts at
nine hundred hours?
4. Were seven linguists trained by a young
programmer for three months?
5. The general that Johnson met in Washington had traveled eight thousand miles.
6. Are there unicorns?
7. John met the man that married Susan in
Vienna.
8. There were seven young linguists at

MITRE for three months.
9. Can all of the ambiguous sentences be analyzed by the program?
10. The linguist the ambiguous grammar was
written by is young.
SYNI has been run on the full set of sample sentences. The total time for a run with 28 sentences
was 5.11 minutes on the 7030 computer.
SYN3 has likewise been run with the JUNIOR
grammar. As an example of running time, a typical
run generating 20 trees carried all of them through
the transformations and reversal rules in a total of 5
minutes. All but one of these trees contained
embedded sentences; half of them contained two
embeddings.
In another experiment, a CF parser was used
with SYN2 to simulate the full procedure. The results for sentences (1), (2), and (6) are:

Pre-trees
Presumable surface trees
Presumable base trees
Correct base trees

(1)
12
8
3
1

Sentence
(2)
90
15
4
2

(6)
1
1
1
1

In the worst case encountered, sentence ( 5) ,
there are 48 presumable surface trees.
It is clear from even these few numbers that if
the procedure is to be practical, it will be necessary
to incorporate a highly efficient routine for obtaining surface trees and to work on the rapid eliminat:on of spurious ones.
REFERENCES

1. "English Preprocessor Manual," SR-132,
MITRE Corp. 1964, rev. 1965.
2. N. Chomsky, Syntactic Structures, Mouton,
The Hague, 1957.
3.
, Aspects of the Theory of Syntax,
M.I.T. Press, Cambridge, Mass., 1965.
4.
, "Formal Properties of Grammars,"
Handbook of Mathematical Psychology, R. D.
Luce, R. R. Bush and E. Galanter, eds., Wiley,
New York, 1963, vol. 2, pp. 323-418.
5.
and G. A. Miller, "Introduction to the
Formal Analysis of Natural Languages," ibid., pp.
269-321.

326

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

6.
and
, "Finitary Models of Language Users," ibid., pp. 419-491.
7. T. V. Griffiths and S. R. Petrick, "On the
Relative Efficiencies of Context-Free Grammar
Recognizers," Comm. ACM, vol. 8, pp. 289-300
(1965) .
8. T. V. Griffiths, "Turing machine recognizers
for general rewriting systems. IEEE Symp. Switching
Circuit Theory and Logical Design. Princeton, N. J.,
November, 1965, pp. 47-56.
9. G. H. Matthew", "Analysis by Synthesis of

1965

Sentences of Natural Languages," 1961 International Conference on Machine Translation and Applied
Language Analysis, HM Stationery Office, London,
1962, vol. 2, pp. 531-540.
10. S. R. Petrick, "A Recognition Procedure for
Transformational Grammars," Ph.D. thesis, M.I.T.,
1965.
11·~ S. Kuno, "A System for Transformational
Analysis," paper presented at the 1965 International Conference on Computational Linguistics, New
York City, May 20, 1965.

COBWEB CELLULAR ARRA YS*
Robert C. Minnick
Stanford Research Institute
Menlo Park, California

cell of a cutpoint cellular array, the array is thereby
particularized to a required logical property. The
table in Fig. 1 a includes the logical functions that
can be produced at the bottom output of each cell,
depending on the particular specification of its cutpoints. The symbol F in the index column indicates
an R-S flip-flop.
A 3 X 4 array of cutpoint cells is shown in Fig.
1b; the specification bits are indicated as dots. A
realization for one cutpoint cell in terms of diodetransistor circuits is shown in Fig. 2. The four cutpoints in this realization are depicted as switches;
however, they could be photoresistors, flip-flops, or
breaks or bridges in conductors. The DTL realization in Fig. 2 is one of many circuit possibilities
for a cutpoint cell.

INTRODUCTION
The cobweb cellular arrays are embellishments of
the cutpointl -3 cellular array that are made by complicating the cell-interconnection structure. This
new class of arrays will allow for more economical
and efficient logical designs than are possible in
cutpoint arrays. As a background to the new arrays,
the properties of the cutpoint array2 will be reviewed.
CUTPOINT ARRAY
The cutpoint cellular array is a two-dimensional
rectangular arrangement of cells. As shown in Fig.
1b, each cell has binary inputs from neighboring
cells on the top and the left, and binary outputs to
neighboring cells on the bottom and right. In addition to being used in the .cell, the input to the left
of each cell is bussed to the right output. The bottom output of each cell is set as one of six combinational switching functions of the two cell inputs,
or as an R-S flip-flop-in either case by the use of
four specification bits, or cutpoints, in each cell. By
specifying these cutpoints independently for every

PROBLEMS WITH CUTPOINT ARRAYS
It has been shown in the previously cited references that arbitrary logical functions can be realized
using appropriately specialized cutpoint arrays. However, certain of these realizations tend to be inefficient in terms of the number of required cells. For
instance, the best-known realization for a three-bit
parallel adder using no more than two cutpoint arrays
is shown as Fig. 3. In this figure the two three-bit
words (a3, a2, ad and (b s , b 2, bI) are added to form

*The research reported in this paper was sponsored by
the Air Force Cambridge Research Laboratories, Office
of Aerospace Research, Under Contract AF 19(628)-4233.

327

328

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

INDEX a b c d
0
1
2

3
4

5
6

7

F

0
0
0
0
0
0
0
0
1

0
0
0
0
1
1
1
1
1

0
0
1
1
0
0
1
1

o

1965

z

0 1
1 y'
o x' + y'
1 x'y'
0 x+y
1 xy'
0 xiBy
1 0
1 x=S, y=R

(a)

( b)
RA-64'54'-82

Figure 1. Cutpoint Array.

the sum word (S3, S2, sI). The input carry to the
low-order column is co, while C3 is the overflow bit.
An n-bit parallel adder can be formed in a similar
manner to the one in Fig. 3; a total of (2n + 1) 2
cells are required in two adjoining arrays for such a
realization.
Reference back to Fig. la shows that cells with
an index 1 form the complement of the top input.
This one-variable function is convenient to use when
transmittal of information vertically in an array is
desired. Hence, vertical cascades of Index 1 cells in
a cutpoint array indicate that in effect, no logic is
being performed, perhaps with the exception of one
cell in each such cascade. With this in mind, it is
now observed that in the upper 3 X 7 array of Fig.
3 only six cells, roughly along the diagonal from the
upper-right to lower-left corners, are used logically.
Similarly, in the lower 4 X 7 array in Fig. 3, only

cells in the upper-right triangular area are used logically.
A wastage of cells similar to that encountered in
Fig. 3 had been observed in several cutpoint-array
logical designs, particularly in designs which involve parallel operations. This inefficient use of cells
occurs in most of these situations because every
bit of one operand word must interact with every
bit of a second operand word. In a cutpoint array
the only convenient way this interaction can occur
is to introduce the bits of one word on the side
of the array and the bits of the other word along the
top. This orthogonal introduction of the two operand words into a cutpoint array seems necessary
because no facility is provided within the array to
change the direction of information flow from vertical to horizontal.
It it were possible to redirect the information

329

COBVVEB CELLULAR ARRAYS

y

~~----------~

+5V

2.2K ' s

r--------...
2.2K

+5V

2.2K

2.2K
b

2N706
2N706

x

x

-5V

-5V

ALL DIODES IN 4009

c
z

Figure 2. Circuit for one Cutpoint CelL

°1

°2

°3

C3

53

Co
52

51

Figure 3. Cutpoint realization for a three-bit parallel adder.

330

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

flow inside a cellular array, two n-bit operand
words might be applied to the side of the array, (or
both to the top), and possibly a significant reduction would result in the number of cells that are required. Instead of requiring 0(n2 ) cells, the resulting array might require O(n) cells. Thus this lack
of control on the direction of information flow constitutes an important problem in the use of cutpoint
arrays.

1965

Another problem encountered in practical logical
designs using cutpoint arrays is the excessive requirement for jumper connections from edge-output
points to edge-input points of the same array. One
example of this problem is shown in Fig. 4, which
is a five-bit shift register driven by a four-phase
clock. For this example four such jumpers are used.
Jumpers of this type will be termed edge jumpers.
A second example is shown in Fig. 5. In this fig-

Figure 4. Cutpoint realization for a five-bit shift register.

ure, the following three combinational functions of
the three variables, X3, X2, Xl, are realized in one
cutpoint array:

E66
E43

= I(1, 6)
= I(O, 1, 3, 5)

E 129 = I(O, 7).
o

Figure 5. Cutpoint realization for three functions of threevariables.

(1)

331

COBVVEB CELLULAR ARRAYS

A requirement for edge-jumper connections in a
cutpoint array often carries with it a wastage of
cells. In the bottom half of the array in Fig. 5, for
example, only three cells are used other than for
transmitting signals.
A third problem often encountered when practical logical designs are made in terms of cutpoint
arrays is an insufficient number of edge connections
to the array. A final problem is the desirability to
have the cells isolated from one another during the
early part of the production so that it is possible to
identify faulty cells by step-and-repeat testing.

The cobweb array is proposed as a means of
meeting all of these problems of inefficiency for
parallel operations, excessive edge-jumping, insufficient edge connections, and lack of cell isolation.
COBWEB ARRAY
A 4 X 4 cobwed array is shown in Fig. 6. It is
seen that within the array each cell has five possible
inputs: two from a horizontal and vertical buss and
three from nearby cells. Connections from edge cells
to the package terminals are shown on Fig. 6 by
peripheral dots. For terminal connections, each cell
on the left and bottom edges of the array has one
non-bus output connected to terminals, each cell on
the right and top edges of the array has one non-bus

input connected to terminals, and each horizontal
and vertical bus is connected to a terminal. For an
M X N-cell cobweb array it is easily seen that
3 (M + N) - 2 package terminals are needed. This
compares with M + 2N terminals for the cutpoint
array of the same size; for square arrays approximately twice the number of terminals are provided
by the cobweb array, while in general the number
of terminals in the cobweb array varies from one
and one-half to three times the number in cutpoint
arrays of the same dimensions.
In Fig. 7 a one internal cell of this cobweb array
is shown with its five inputs labelled as u, v, w, x,
and y Fig. 7 b shows how this cobweb cell can be
fabricated from the previous cutpoint cell and fourteen additional cutpoints. Of course, as mentioned
previously, technologies other than the diode-transistor method shown in Fig. 7 b can be used. The
added cutpoints are labelled e, f, ... , r. In order to
have all single-throw cutpoints, the double-throw
cutpoint a in Fig. 2 is replaced in Fig. 7 b by two
cutpoints, g and e, where a = g' e and a' = ge'.

It is anticipated that cobweb cellular arrays will
be made by one of the modern batch-fabrication
technologies, such as that of integrated circuits. In
making these arrays with integrated circuits, the
number of deposition steps is of related economic
interest. Returning to Fig. 6, and using the nomen-

TA-741581-1

Figure 6. Structure of the cobweb array.

332

PROCEEDINGS - - FALL JOINT COMPUTER CONFERANCE,

1965

x~

~U
(0)

.-------------------------~~----------------------u

,-------------------------~~----------------------V

,---------------------~~~--------------------W
,-------------------~~~--------------------X

,-------------~~~------~~------y

-5V
c

z

TRANSISTORS: 2N706
DIODES: I N4009

r

( b)
T8-741581-2

Figure 7. Diode-transistor realization of cobwell cell.

c1ature of Fig. 7 a , it is seen that if the w busses
are moved to the right of the center in each cell, all
w, v and y interconnections may be deposited
simultaneously. After depositing an appropriate insulating layer, the u and x interconnections together
with connections for power and ground may be
formed as a second deposition layer. Hence the interconnection structure of the cobweb array in Fig.
6 is two-layered. Similar reasoning applied to Fig.
1b shows that the interconnection structure of the
cutpoint array is single layered.
In summary, the cobweb array consists of cells
that have the same amount of electronics as cutpoint cells. Each cell in the new array has about
four times the number of cutpoints as the cutpoint
cell, one and one-half to three times the number of
package terminals as a cut1 ,,",lnt array of the same
size, and a two-layered rather than a one-layered
interconnection structure. It will now be shown that

the use of this more complicated cellular array at
least partially alleviates the previously-discussed
problems of cutpoint cellular arrays.
LOGICAL DESIGN WITH COBWEB CELLULARARRAYS
In cutpoint arrays, switching functions are produced by forming one or more vertical cascades of
cells. In the cobweb cellular arrays, these cascades
of cells no longer are required to be vertical. Indeed, a cascade in a cobweb array may be any chain
of cells that follows the arrowheads in Fig. 6. This
property of cobweb arrays gives the logical designer
a considerable degree of flexibility in forming his
design. The need for an increased ratio of edge connections to cells is met in cobweb arrays. By introducing other assumptions on edge connections it is
possible further to increase this ratio if additional
logical design experience shows this to be desirable.

COBVVEB CELLULAR ARRAYS

In the cobweb array it is possible to use some of
the cutpoints in a cell in lieu of edge jumpers. For
instance, if cutpoints hand k (Fig. 7 b ) are
closed, this causes the x bus and input u to that cell
to be connected together. Similarly, by closing cutpoints j and f, and by opening cutpoint r, the cell
output can be jumpered to the w input bus; for this
connection, the logical function produced by the
cell is immaterial. * It is also possible to jumper as
many as all five inputs and the output of a cell together. Indeed, for those cases where sneak paths
are not introduced, it is possible to form one jumper path among the cutpoints f, h, i, j, k, I and a
second nne among m, n, 0, p, q. Cells that are
specialized in this way are called jumper cells. The
jumper connections are designated by circling the
inputs (and output) that are jumpered together and
by inserting the symbol J inside the cell. If two isolated jumpers are used, triangles will designate the
inputs (and output) on the second jumper.
It should be observed that J cells in the cobweb
array are logically inactive. That is, jumper cells are
used only to make local connections in the array,
and not to perform logical operations. It should also
be noted that jumper-cell connections can be made
in such a way as to allow information flow in violation of the arrowheads in Fig. 6.
It also is possible to use the cutpoints h, i, ... ,
q to obtain an OR of two or more of the five inputs
to a cell. For instance if cutpoints k, 1, m, nand 0
are closed, then the horizontal input to the cell is
x + y, while the vertical input is u + v + w. Care
must be taken when using this property to avoid the
introduction of sneak paths.

333

where () is the EXCLUSIVE-OR operator, and each
of G, H, A and B is a switching function of no more
than n-l variables, and is indep~ndent of Xi.
If it is assumed that G', H', A', and B are each
producible in one cascade of cells, the cobweb arrays
of Figs. 8a and 8b correspond to the two decompositions of Eqs. (2) and (3), respectively. If one or
more of the four (n - 1 )-variable functions are not
producible in a single cascade, either of the above
decompositions may be repeatedly applied until all
subsidiary functions are realizable in one cascade.
The J cell in Fig. 8a with the y input and the z
output circled means that the switches f and 1 (see
Fig. 7) are closed and that switch r is open. This
connects the y input to the cell output without the
use of an external jumper. For cobweb cells that
produce one of the functions listed in Fig. 1a, a
function index is placed inside the cell and the particular inputs (if any) that are connected through
the cutpoints h, i, ... , 1, (Fig. 7), are designated
by circles, while the particular inputs (if any) that
are conected through the cutpoints m, n, ... , q are
designated by triangles. For instance, the cell with
index 5 in Fig. 8a means (b, c, d) = (1, 0, 1), and
since a circle is on the x buss and a triangle is on
the y input, then (h, i, j, k, 1) = (0, 0, 0, 1, 0), and
(m, n, 0, p, q) = (0, 0, 0, 0, 1), and finally (e, f,
g, r) = (0,0, 1, 1).

(3 )

As shown in Fig. 8, no jumpers are needed in the
cobweb-array realization of either decomposition.
Furthermore, it is noted that only one row of cells
is needed for each application of the Reed decomposition.
With none of the cutpoints h, i, ... , q closed, all
cells are isolated in the cobweb arrays. Therefore,
step-and-repeat testing is possible for cobweb arrays
that are fabricated as monolithic integrated circuits,
while it is not possible for the originally proposed
cutpoint arrays.
The particular interconnection structure of the
cobweb array was chosen for several reasons. As the
number of potential inputs to each cell is increased,
the number of interconnection possibilities also increases. But this increase is obtairied at the cost of
additional cutpoints in each cell. Hence, it is desirable to introduce only as much interconnection versatility as the typical logical designer would use.

*In principle, cutpoint r in Fig. 7b could be eliminated
by setting cutpoints b, c, and d so that the output transistor is nonconducting. However, cutpoint r is necessary
for the correction algorithms to be described.

*In order to simplify the artwork, the terminal conventions adopted in connection with the discussion of
Fig. 6 will not be explicitly shown on this and on following
cobweb-array designs.

Two decomposition methods will now be shown
in order to illustrate the elimination or reduction in
the use of edge jumpers by the jumper-cell specialization. It is supposed that a switching function E =
E(Xl, X2, . . . , Xn) is not producible in one cascade
of cells. This function can always be decomposed
on one of its variables, Xi, in several ways, including
a form due to Shannon,
E

=

GXi

+ Hx/

(2)

and a form due to Reed,
E

=

AXi ()

B

334

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

x·I

(0) SHANNON

X·I

E=AXjG>B
(b) REED
Figure 8. Shannon and reed decompositions using cob-web arrays.

335

COBVVEB CELLULAR ARRAYS

Figure 9. Cobweb realization for a three-bit parallel adder.
I

a
Figure 10. Cobweb realization for a five-bit shift register.

Referring back to Fig. 7 a, the x and y inputs are
carried over directly from the previous cutpoint array. The u input allows the designer to build up a
carry propagation chain within a horizontal row of
register cells. The vertical bus allows one to jumper
a bottom-cell output of an array to a top-cell input.
Finally, the v input is a knight's move away so that
it is possible to build up a cutpoint cascade that
crosses other such cascades. The desirability of having crossings in cellular arrays has been observed
before. *
A number of obvious variations of the cobweb
array is possible. For instance input v, or both inputs v and w in Fig. 7 a may be omitted in each

cell,with a corresponding saving in cutpoints. In
the latter variation, a single-layered interconnection
structur results. Similarly, it is possible to invent
more complicated variations of the cobweb array.
Illustrations of logical designs using cobweb arrays are given as Figs. 9, 10 and 11. These figures
should be compared directly with Figs. 3, 4, and 5,
respectively. First comparing Figs. 3 and 9, it is
seen that an n-bit parallel adder can be synthesized
using 9n + 3 cobweb cells in a single array, while
(2n + 1)2 cells in two adjoining arrays are required
if cutpoint cellular logic is used. Thus, for example,
a 50-bit parallel adder requires 453 cells in a cob"'By Marvin E. Brooking, private communication.

336

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

condition will cause the shorting or opening of a
conductor or the shorting of a power supply. It appears from a consideration of the integrated circuit
technology that these assumptions are realistic.

web array and 10,201 cells in two cutpoint arrays.
A comparison of Figs. 4 and 10 shows that all
edge jumpers are eliminated in the cobweb realization of a shift register at the cost of one extra row
of cells. Finally, comparing Figs. 5 and 11, it is
seen that the three edge jumpers as well as half the
total number of cells are eliminated when a cobweb
array is substituted for a cutpoint array.

Two' clusters of cells called supercells are defined
by Fig. 12. The shaded cell in each 2 X 2 cobweb
array has five inputs (marked with the symbol I)
that are geometrically equivalent to the cobweb cell
of Fig. 7. The jumpers between points p and in Fig.
12 are used for transmitting the knight's move interconnections. The supercells of Fig. 12 are arranged in such a way that one may first perform a
logical design in terms of a conventional cobweb
array, and then replace each cell in the first and all
odd-numbered rows with a type ex supercell. The
cells in the second and all even-numbered rows are
replaced with a type f3 supercell.

FAULT AVOIDANCE METHODS
In regard to the cutpoint cellular array, methods
have been demonstrated for replacing faulty cells
with spare cells. 2 These methods no longer are feasible with the cobweb arrays; therefore, it is necessary now to develop an alternative faculty cell avoidance algorithm. It will be assumed that the faults
are "electronic;" that is, a transistor has a low beta,
or it has an emitter-collector short, or a diode is
open-circuited, etc. All conductors and cutpoints
will be considered perfect, and furthermore, the circuit design is assumed to be such that no failure

The effect so far has been to increase the number
of cells in the cobweb array by a factor of four. In
this supercell array it is possible under most conditions to make focal perturbations of the logical de-

Figure 11. Cobweb realization for three functions of threevariables.
II

o

o
(a) TYPE

q

a

1965

(b) TYPE

Figure 12. Cobweb supercells.

f3

COBVVEB CELLULAR ARRAYS

Figure 13. Exhaustive listing of the cobweb array fault-avoidance algorithm.

337

338

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

sign in order to avoid faulty cells. Assuming that
only one or two of the five inputs to a given cell are
connected by means of cutpoints h, i, ... , q in Fig.
7, it is necessary to demonstrate a fault-avoidance
algorithm for C~ = 10 cases (the two-input cases
cover the one-input cases). However, the logical
cells in a supercell array appear in two geometrically different environments that correspond to the
types a and f3 supercells; therefore, a total of 20
cases must be investigated. Proceeding by exhaustion, a fault-avoidance algorithm for each of these
20 cases is shown as Fig. 13. On this figure, a single shading indicates a faulty cell; arrowheads are
attached to the two active inputs for that cell. A
cell with cross-shading is assumed to be a good cell,

s,;~

Rf

RPi

Sri
ro

Rrj

Sm;~
Rmj

Sq

Shj

Rq

Rhj

and it replaces the faulty cell. If the faulty cell has
no symbolism other than the arrowheads and the
shading, it is assumed to have been disconnected by
having all of cutpoints f, h, i, ... , r open; if it has
a J symbol, it is used as a jumper cell with no connections made at the arrowheads. Cells with a dotted single shading are neighboring good logical
cells. Cases where the faulty cell in Fig. 13 occurs
on or near the top row correspond to faults in a supercells, while cases where the faulty cell in Fig. 13
occurs on or near the bottom row correspond to
faults in f3 supercells.
From this deveiopment it should be clear that if
a logical cell in a supercell array is bad, it can be
logically replaced provided that another cell is good

MP REGISTER
12 BITS

~P'

MC REGISTER
12 BITS

~m,

HO PRODUCT REGISTER
12 BITS

ho

LO PRODUCT REGISTER
12 BITS

10

f rno ho q

~
Rf

Slj
Rlj

1965

= po/Ttl

Rpj = (,8xi t 2
Rrj

= (yrno)'t 2

Rmj

= (ro + a,8po>'t 2

Smj= tl

Rq

= frnoT'hot2

Sq = [(fm o + T'h o )' + a',8]t 2

Rhj

= (sy + loa,8')t3

Rli = (loY + Th oy)'t 3

TB-5087-7

Figure 14. Block diagram for a twelve-bit serial multiplier.

339

COBWEB CELLULAR ARRAYS
•

/l y

HO PRODUCT REGISTER

CO PRODUCT REGISTER

MP BIT
STORAGE

Figure 15. Realization of the mUltiplier in terms of fivecutpoint arrays.

at a distance one or two cells from it, according to
Fig. 13.
Thus a fault-avoidance algorithm for cobweb arrays has been demonstrated. Many· variations in the
process are possible. For instance, if multiple faults
prevent complete. avoidance of faulty cells using the
2 X 2 supercells, one can replace some or perhaps all
cells in the supercell array again with supercells until
enough redundancy has been obtained that all faults
can be avoided. Similarly, it may be possible to
compress a supercell array if, for instance, no corrections are necessary in a particular row or column. Similar fault-avoidance algorithms can be deduced for the simplified cobweb arrays mentioned
before.
LOGICAL DESIGN OF A MULTIPLIER
As a final illustration, a logical design is given
for a 12-bit serial multiplier in terms of a single
cobweb cellular array. For comparison purposes, the
same system has been chosen as was previously
reported. 3 The block diagram for this four-register,

five-command multiplier is given as Fig. 14, while
a previously-reported design in terms of five interconnected cutpoint arrays is shown in Fig. 15.
In Fig. 16, this same system is realized in terms
of a single 27 X 16-cell cobweb array.
The statistics on these two realizations for the
multiplier are as follows:
Cutpoint Realization
There are 352 cells in five cellular arrays, and
100 connections at the edges of the five arrays.
28 % of the cells are "1" cells used only for
transmitting information,
71 % of the cells are used logically, and
1 % of the cells are not used.
Cobweb Realization
There are 432 cells in one cellular array, and
10 connections at the edges of the one array.
26 % of the cells are jumper cells,
55 % of the cells are used logically, and
19 % of the cells are not used.

340

PROCEEDINGS -

1965

FALL JOINT COMPUTER CONFERANCE,

It is seen from the above data that while 26 percent
more cells are required for the multiplier in the
cobweb realization than in the cutpoint realization,
only one cobweb array is used versus five cutpoint
arrays; furthermore, the backplane wiring in the
cobweb realization is reduced by an order of magnitude.

web arrays results in a significant reduction in the
required number of cells. Also it is possible to eliminate jumper connections from one edge cell on
an array to another edge cell on the same array
_ when cobweb arrays are employed.

ACKNOWLEDGMENTS
CONCLUSIONS
The logical design of the parallel adder in Fig. 9
was provided by Mr. David W. Masters, the supercell concepts were the result of conversations with
Mr. Milton W. Green, and some of the ideas on
parallel operations in cellular arrays were derived
from unpublished work of Mr. Jack Goldberg. Particular credit is due to Dr. Robert A. Short for his
critical evaluation of the manuscript and for his
many helpful suggestions and comments.

The essential difference between the previously
reported cutpoint cellular array and the cobweb array is the more complicated and flexible interconnection structure of the latter array. This flexibility
allows the logical designer much more geometric
freedom in the embedding of cascade logical realizations. For certain types of digital operations, and
in particular for parallel operations, the use of cob-

v v

V LV
J

J

~!V
~L~!~
k~u
~~~L~
~
.L
..L
..L
..L
..L

V

I

J

J

2

VVlI!VJVVVVVIIVVVE[L
.L
L\
j fI r; V II j [J V [/ V 'j V II V V II
.L
.L
1
.L
f( rII V II VV "; [I [/ j V [/ [I V [j V
.L
.L
rv II V VL [L~ ;L
V V! V V [j V l/ ~ f; II!
..L
[I
j
j
j
Jil
V j [! j [L~ [L
IT!
VI
V
V
V
L\
:;
1I J [I [j [j I'!
V V V II j [I!II V II
L\
f( V V II [/ I'! [/ lL [/ [! [! [; [/ fI V II
.L
.L
.L
V V V [! [/ [j [/.L t; TI.L ITZ [J.L [J V V j trI
1/

41

J

2

5

5

2l...L

j

J

j

L

L

L

5 ...

J

I.L

4

J1

5

-1 6

3

6

5

JU

5Ui

J

J

J

J

J

J

J

J

5

j

j

J

II! ~

V

5

j

4

f;

F

F

[/ j
5
5
j
[j j

J

J

J

j

J

J

J

5

J

J

3

J

J

J1 2

J

F

J..L

F

5

5

2

J

F1

F

5

51

F

F

[I j

1

V
1

1

[I

.

F

5

5

5

F

F

F1 F1

F

J

..

~mi

F1

j

F

F

5

5

5

F

F.L

F

F1

F

j

[J

5

5

5

FU

FU

F)1

FU

F U Fl..L( 5)1

5

5

5

51

5

5 1

5

F

F

F 1

5/

5

F /

F

F

5

5

F

F

F

F1 F 1

F

F

F

F

F

F

51 5

5

5

5

5/

5

5

F

F1

F1

F1

5J-Ll

F

F 1

5

5

5

5

F

F

F

F

F

F

F

5

5

5

J

J

Jdo.

~J..

J

J

J

F

F

F

J

J

J

F

5

/

• 1

•

.

F1 F 1

F

F

5

5

5

F

F..L F

'I

'I

F

5

F

F

'/

5

5)1

• 1

'I Prl ffl IU

I.

J

J

1

51

51'

FU

'/

I

! [!

~.;

..L

[J

1

51 5

/

2

J

l..L FJ..L\ FJ-Ll FJ..L\ F

5

~/

1

J

1

J

F)1

5

F

J

J

R rj

F

5)1 ')1

5

IJ..

II
II II tT'! ~ lL
41-

[J

F

5

.L

1

5

JJ...LF

5

[!

Jl...L

•

l..L 5 ) 1 5 ) 1 5)1

.L

J

J

j

V
..L
[j
[J
[j [j [j [j
V [j V l/ [J
5J..L\ J..L U\
L
V 11 VL ~ ~ ~ 11..L lL V [/ 11 rv~ ~ V
• ..L
[j 11 [lL ~ 11 ~l II [! II tIl
V V~ ~. V
[L II
r;
v
II
V
II
V II
]'( 1£ .L V V ! V
.L
'.L
• .L
j
r;
r;
r;
V V V tIl.L II V.L
V.L V V V
[/ j [/ 11 V tIl [/ [/ r; [/ [/ [/ II j
j
..L
1/ j [j II.L VI [lL j VL II.L V V j II j
if j [/ II [/ 11 j tIlL [/5U 11.J..L\ll/ j [/5J..L j
L
tIl II.L VL 11 [j.L lL 11 [/ II V [j V [L II
II.L II VL
11 [j 11 r; IlL 11 II' [! 1/ 11 j
j
.L
r; V IIj [/ [/ II V j .L V V [j V lL Ii
j 5.L
r; V r; V [I II [j II [/ [;' II r; V.L II
V [J j [j [/ tIl [/ V [j tIl II [J II j
II!V! II!1/ V IT! :; j V II V V V V
JJ..

J

. U V ·V tIlV V V 1/rJ
.V ll1. LI V J
Vj
.
·
11
V
V II
5

Rh;

R"

I

I

J

3

I

J

J

I

J

J

j

J

J

I

J1

JJ...

j

J

5

II V j t1!j r;j trI r;
V II J [/ [j if

[I V
J
J
[lL
5
F

j

J

.
F

J

I Prl rrl

F

J

I

J

J

J

~

V
¥V
[!
V
[!
V
J

.L

J

.L

[I

J.L

[I
J

V
V
J

J

[I j
J

J

[L

II
II
[L II
tIl.L II
tTl I
tIl I
J

J

[/
J

J ..L

J ..L

J

J

rTl

..L

Prl

Figure 16. Realization of the multiplier in terms of onecobweb array.

COBWEB CELLULAR ARRAYS

REFERENCES
1. R. C. Minnick and Robert A. Short, "Investigation of Cellular Linear-Input Logic," Final Report, Contract No. AF 19(628)-498; SRI Report
No. 4122; Stanford Research Institute, Menlo Park,
Calif., prepared for Data Sciences Laboratory, Air
Force Cambridge Research Laboratories, Office of
Aerospace Research, Bedford, Mass., USAF
AFCRL No. 64-6; DDC No. AD 433802 (Dec.
1963).

341

2. R. C. Minnick, "Cutpoint Cellular Logic,"
IEEE Transactions on Electronic Computers, Vol.
EC-13, No.6, Dec. 1964, pp. 685-698.
3. R. C. Minnick, "Application of Cellular Logic to the Design of Monolithic Digital Systems,"
presented at a Symposium on Microelectronics and
Large Systems co-sponsored by the Office of Naval
Research and the Univac Division of Sperry Rand
Corp., Washington, D. C., Nov. 17 and 18, 1964.
(To be published by Spartan Books, Inc. in 1965.)

TWO-DIMENSIONAL ITERATIVE LOGIC*
Rudd H. Canaday
Bell Telephone Laboratories, Incorporated
Whippany, New Jersey

3. The array will be used as a single output
circuit. Only the output of the lower right
element of the array is accessible to the
outside world.
4. Every element in the array realizes the
"majority" function

INTRODUCTION
It is well known that given a suitable Boolean
function, a large number of "gates" or "elements,"
each producing this function, can be interconnected
in a regular structure, or "array," to realize any given Boolean function. Furthermore, the structure of
the array can be invariant to the function being
realized.

f(A,B,C) = AB

+ AC + BC

of its three inputs. *
As a consequence of assumptions (1), (2), and
( 4 ), an array can be described completely in terms
of its width wand height h. Such an array will be
called a "MAjority Array" or "MAJA."
In the remainder of this paper it will be shown,
first, how to synthesize an arbitrary "self-dual"
function in a MAJA. Then this result will be extended to arbitrary functions .and some examples
will be given. This is "intersection synthesis;" Next
a second synthesis technique, "factorization synthesis," will be described, first in a canonic form,
through examples, and then in a more general form.

One of the simplest such structures is the two-dimensional array of three-input one-output elements
shown in Fig. 1. In this paper two methods are
presented for using this structure in the synthesis of
arbitrary Boolean functions. The following assumptions will be adhered to throughout this paper:
1. All elements in the array are identical.
2. The interconnections between elements in
the array are fixed. They cannot be broken
or changed in any way.
*The material presented in this report is based on a thesis
submitted in partial fulfillment of the requirements for the
Doctor of Philosophy Degree in Electrical Engineering at
the Massachusetts Institute of Technology, September 1964.
The research reported was made possible through the
support extended to the M.I.T. Electronic Systems Laboratory by the U.S. Air Force Avionics Laboratory, Navigation and Guidance Division, under Contract AF-33(657)11311 and, in the earlier phases of this research,under
Contract AF-33(657)-8932.

*It is easy to prove! that all of the results given here
extend directly to arrays of "minority" elements:
f(A,B,C) =_-AB

+ AC + BC

This paper is based on the author's Ph.D. thesis.! In
present paper space limitations preclude statements of
theorems and proofs on which the synthesis methods
based. These do appear, together with extensions of
results presented here, in reference 1.

343

the
all
are
the

344

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

Figure 1. A 4 X 6 array of 3-input elements.

Both synthesis techniques lead to arrays of reasonable size, and embody new synthesis techniques
which may prove to be applicable in other forms of
synthesis also.

Fig. 2 is an example of an XY SBC MAJ A. The
two synthesis methods to be presented both apply to
the SBC MAJ A.
Intersection synthesis is given first for self-dual
functions, as defined below.

PRELIMINARY DISCUSSION
Before discussing array synthesis, it is necessary
to define some terminology for arrays ..
Each element in an array has three inputs, which
will be denoted "top," "center," and "left" inputs
(signal flow in an array is always left-to-right and
top-to-bottom) .
The w inputs (for an array of width w ) consisting of the top input to each element in the top row
of the array form the "top boundary" inputs to the
array.
Similarly, the h inputs (for an array of height h),
consisting of the left input to each element in the
leftmost column of the array, form the "left boundary" inputs to the array.
One particular type of array proves to be of particular interest. This array has, in effect, all top
boundary inputs wired together, and all left boundary inputs similarly wired together.
Definition : An " XY Standard Boundary Condition majority array" ( XY SBC MAJA) is a

MAJA all of whose top boundary inputs carry
the signal Y where Y can be a variable or a
constant, and all of whose left boundary inputs
carry the signal X, where X can be a variable
or a constant.

Definition: Given a Boolean function f(xl, ... , Xn),
then the dual fd(Xl, ... , Xn) of the function f is

defined as:
fd( Xl, ••• , Xn)

=

j(Xl, X2, ... ,Xn)

By applying deMorgan's theorem one can e~sily see
that if f is expressed using only the operations +
(OR), • (AND) and - (NOT), then fd is obtained
by interchanging + and • throughout the expression
for f.
Definition: A Boolean function j(Xl, ... , Xn) is selfdual if and only if
fd(Xl, ... , Xn) = f(Xl, ... , Xn)

Note that by this definition of dual and self-dual, a
function which is a constant is not self-dual since,
if f ==- 1 then fd = f ==- o.
Any n-variable Boolean function f( Xl, .•• , Xn) can
be factored as
j(Xl, ... , Xn) = Xfo + Yft
(1)
with X and Y chosen from {Xl, Xl, ••• ,Xn, Xn}.
If f is a self-dual function, then the existence of
the factorization (1) implies that f can be factored
as
f

=

Xfo

+

Yfod

+ XY

(2)

where X, Y, and fo are the same as in Eq. (1).
Equation (2) is basic to the synthesis algorithm,
which is presented in the following two definitions
and Theorem 1 below.

345

TWO-DIMENSIONAL ITERATIVE LOGIC
y

y

y

y

x

x

x

Figure 2. An XY SBC MAJA.

INTERSECTION SYNTHESIS
Definition: Given two Boolean functions fa and fb,
and given a sum of products expression for
each: I a = rl + r2 + . . . + rk;
fb = tl + t2 +
. . . + tm, then an intersection matrix of fax Ib
is a matrix with k rows and m columns, in which
each entry eij is the intersection of the literals in
Ti with the literals in tj (i.e., eij contains a literal
y if and only if y is in both ri and tj).
Note that the intersection matrix for a given fa and
fb is not unique. It is unique for given sum-of-products expressions (including the ordering of their
terms) for both fa and lb. Now it is possible to define
an SBC MAJA to realize any given self-dual function.
Definition: Given a self-dual function f Sd = XY +
Xfo + Xfo d, and given a k X m intersection mat-

that the MAJA produces all the ones of f Sd ,
since a MAJA without constant inputs must
realize a self-dual function. 1 It is easy to prove
that if the term XY is one the array output is
one. Now let a term XrI in Xfo be one. Then
every literal in the term is one. Then every left
boundary input, and the center input to every
element in the ith row, is one. It is not difficult
to prove that this condition suffices to insure
that the array output is one. Thus the array
output is one for every term in Xfo. Similarly
if a term Yti in Yfod is one then every center
input to the ith column, as well as every top
boundary input, is one. Again this suffices to
insure that the array output is one. Thus every
one of jSd = XY + X/o + Ylod is realized at the
output of an intersection MAJA for f Sd and so
the MAJA realizes fSd.

rix fo X fod, with rows corresponding to terms of
fo, then an XY intersection MAlA for jSd is a
k X m XY SBC MAJA with the center inpuCto
the ilh element chosen to be anyone of the
literals in entry eij of the intersection matrix, for
all i, j: 1 :::; i :::; k, 1 :::; j :::; m.

The synthesis algorithm just presented allows one
to synthesize any self-dual Boolean function. To
extend the result to any arbitrary Boolean function,
the "self-dual expression" for a function is defined.

Again note that one function Is d may have many intersection MAJAs for each factorization (each choice
of X and Y).

Definition: Given any n-variable Boolean function
I(XI, .•. , x n}, and a variable U independent of
(Xl, ... , Xn), the Self-Dual Expression jSd for f
is defined as the (n +""'-1) -variable function: t
fSd(U,XI, . .. , Xn} = Uj(Xl, ... , Xn} + Uld(Xl, ... , Xn).

Theorem 1: Given any XY intersection MAJ A for a
self-dual function lSd, then the output of the
MAJA realizes the function Is d •
Prool:* By construction the MAJA has no constant inputs. Therefore it is sufficient to prove

*The proof given here is very sketchy. The detailed proof,
which depends on a number of theorems not given here, is
in reference 1.
tThis is a reformulation of work done by S. B. Akers.2

346

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

It is trivial to prove that the self~dual expression
for any function is a self-dual function. Also, if j is
a selfdual function, then
jsd(U,Xl, ... , Xn)

=

array from any factorization of the form
f Sd

=

XY

+ Xfo +

YfOd

f(Xl, ... , Xn).

Clearly this is true if and only if j is self-dual.
To synthesize an arbitrary n-variable function,
proceed as follows:
1. Find the (n + 1 )-variable self-dual expression, jsd, for the function j.
2. Synthesize jsd(U,Xl, ... , Xn).
3. Replace every input U to the array by the
constant input 1 (one) and every input fj
by the constant 0 (zero).
The resulting array realizes j(Xl, ... , Xn) since jsd(1,
= f( Xl, ... , Xn) by construction.
The examples to follow show arrays with the inputs U and fl. Thus these arrays, as shown, realize
the self-dual expression of the given function.
Wherever the inputs U and fj occur, they can be
replaced by 1 and 0 as discussed above to obtain
the array for the given function.
Note that the array for a self-dual function contains, by construction, no constant inputs. It can be
shown that in any MAJ A constant inputs are required if and only if the function being synthesized
is non-self-dual.
In an intersection MAJ A for a function, every
term in the factored expression for the function corresponds to a single row or column in the MAJ A. It
can be shown l that terms in the output function of
an SBC MAJA can correspond not only to single
rows and columns, but also to inputs (or elements)
which do not form a single row or column. Thus it
seems that the intersection matrix construction does
not make maximum use of the MAJ A. In other
words, by realizing some terms in the function using a set of elements not from a single row or column, it is possible to realize many functions in an
SBC MAJ A considerably smaller than an intersection MAJ A for the function. By extensions to this
work, reduced non-SBC arrays can be derived also,
but the methods become much messier and less algorithmic.
It is not possible in the space available here to
discuss reduction techniques. However, the following examples show some arrays in reduced form, as
well as the original intersection arrays.
While it is possible to construct an intersection

Xl ... , Xn)

1965

with fo and fod each expressed as a sum of product
terms, it is obvious that the smallest array results
from choosing X and Y and the expressions for fo
and fOd to minimize the number of terms in fo and in
fOd. This is done in the following examples.
SYNTHESIS EXAMPLES
Before giving examples of synthesis by Theorem
1, it is useful to define a notation which will be
used in examples throughout the rest of this work.
In the many examples to follow in this and succeeding sections it is necessary to show arrays with
variables assigned to the inputs. Since the interelement connections in an array are fixed, an array
with inputs can be completely specified by giving
each boundary input and the center input to each
element of the array. These inputs are presented as
a matrix, with a line separating top and left boundary variables from the center input variables. Thus
the array of Fig. 3 is represented by
B

B

B

B

B

u
D
C
C

C
C

D

B

C
C

jj

B

B

C

A

A

D

A
A

fJ

U

D

fj

D

B
A
A

C
C

c

Clearly this representation is completely general;
it is not restricted to SBC arrays.
Example 1: f(A,B,C,D)=I0,1,4,6,7,8,11,12,13,14.*

A minimum Sum of Products (MSP) form of the
Self-Dual Expression for this function is:
fsd=BCDU + ABCDU + ABCD + ABCD + ABC
+ ABCU + ABCU + ABCDU + BDU + CDU

This function can be factored on BB or CC without
increasing the number of product terms (10) in the
expression, since the term BDU can be written BCDU
or CDU can be writtenpCDU, without changing
Arbitrarily choose the BB factorization.

rd.

*This notation, defined in Caldwell,3 defined the rows of
the truth table for which the function is one.

347

TWO-DIMENSIONAL ITERATIVE LOGIC

B

B

B

B

B

f(A,B,C,O)

Figure 3. SBC MAJA for Example 1.

The intersection matrix is

(ACDU)
(4(12U)
(A~D)
(d~V)

(CDV)

3-input elements for any network capable of realizing
this function.

B
(CDU) (ACD) (ACV) (DU)
(V)
(D)
(CD) (C)
(~V)
(Q)
(2)
(~L
(D)
(4D ) (4)
(~)
(AU) (Q)
(~)
(4)
(U)
(DU)
(C)
(D)

(AC)
(A)
(d'>
(~)
(~)

(C)

Example 2: f(A,B,C,D)

r

MSP
= BD+ ACD + ABC + ABU
+ ADU can be written as
jSd = BD + B(AC+AU) + D(AC+AU)

The SBC MAJA is

One intersection MAJA is

B

U
D

ll.
ll.

C
C

fl

C

B

B
C
C

B
C
C

A

u

D

B
A
A

U

C

15

A
A

A

B
D
U

C

D

C

By reduction techniquest described elsewhere, l a
2 X 3 non-SBC array can be found to realize this
function:

= I1,4,5,6,7,9,11,12,13,15

d

D
A
U

B
B

D

C
A

This is the smallest SBC MAJA which can possibly
realize this function, since six different literals must
appear as inputs, and no smaller SBC array has six
inputs.
Example 3: f(A,B,C,D) = I1,2,5,7,11

r

= ACD + ABD + ABCD +
+ ABC15D + jjDU + CDD
+ ABU + ACU

MSP

d

ABCD
D
A

C
U
A

15
A

C

V
B

A 2 X 3 array is known to be the smallest array
capable of realizing this function since no smaller array has enough terminals. The 2 X 3 array shown
here has one element which performs no logical
function because it has two identical (A) inputs.
The 5-element network resulting from removal of
element 21 has the adsolute minimum number of

Factor on DD for the minimum number of product
terms in the factored expression

r

d

+ D(AC+AB+ABC+BU+CU)

A corresponding SBC intersection MAJA is:

!2

tThese techniquees are heuristic, and results obtained
depend to some extent on the experience of the person
doing the reduction.

= b(~jC+ABCV+AjjU+ACV)

D

15

15

D

D

;1

A

C
A
A

A

B

A

D
C
A
B
C

D
B

U
U
U

D
.(2
U
U
[j

348

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

By reshuffling rows and colums, it becomes possible to remove the row corresponding to term ACiJiJ
and the column corresponding to term CDU

D
D
D
D

D

D

:If
A

"C

D

A

B

A

A

C
B

B

TJ

fj

The 'term CDU is realized by the center inputs to
elements 31, 42, and 43, and the left boundary. The
term AdB V is realized by the center inputs to elements 11, 21, 31, 42, and the top boundary. This
is the smallest known SBC array for this function.
However, there exists a 2 X 3 non-SBC majority array for the function:

II
u

C
A
B

C
D
B

D
C

A

Arrays of size 2 X 3 or 3 X 3 appear to be typical
for non-self-dual functions of four variables. 1
THE CANONIC ARRAY
The two major disadvantages of the synthesis
method presented above are:
1. The lack of reasonable bounds on the size
of array needed to realize an arbitrary
function.
2. The inability to apply reduction procedures to functions of more than five or six
variables. *
The development of a canonic form for arrays for
arbitrary functions of n variables as is done below
obviates these disadvantages. This canonic form has
the following properties:
1. The canonic array for n variables, for a
given n, is an array of fixed size, with
some inputs fixed and the rest of the inputs chosen for the specific function (typically, well over half of the inputs are
fixed). This array will realize any given
functton of n variables if the nonfixed in*Note, however, that the basic synthesis algorithm (Theorem 1) can be applied to arbitrarily large functions, though
the resulting arrays generally are unreasonably large.

1965

puts are properly chosen. An algorithm for
determining the inputs needed to realize
any given function exists.
2. An algorithm exists for generating the canonic array for any given n.
3. The canonic array for n variables is the
smallest known array to realize the checkerboard (worst-case) function of n variables, for n even.
4. For most given functions the canonic array
is reducible (by methods given in reference
1) .

5. The canonic array embodies a technique
for embedding arrays within larger arrays,
which shows great promise for future work
in multiple output arrays and in nonmajority (nonminority) arrays.
The disadvantage of the canonic array is that the
array required for a given function usually is larger
than the array produced by intersection synthesis
and reduction, assuming that the function is small
enough to make that synthesis-reduction technique
feasible.t
The size of the canonic array is shown in Table 1
as a function of n , the number of variables in the
function to be synthesized. In addition a "connection count" is shown for each n. This is the number of connections to the array which are not invariant over all" functions of n variables, plus one
connection for each variable whose input connections are invariant. One can envision building the
array with all invariant connections wired together
at the time of manufacture. Then the "connection
count" is just the number of input terminals to the
array to allow it to realize any function of n variables.

n
3
4
5
6
7
8
9

Table 1.
Size
Connections
3X3
10
4X6
16
7X8
26
9x14
44
15X18
78
19X30
144
31X38
274

tReduction is feasible on most functions of five variables
and some functions of six variables. 1

349

TWO-DIMENSIONAL ITERATIVE LOGIC

CONSTRUCTION OF CANONIC ARRAYS
In this section the canonic array for n variables
is presented through examples. In the next section
the process of embedding sub arrays in an array is
considered more generally.
Consider the MAJA
U
U
U

U

A
go

number of variables, it is necessary to define a construction method which will result in the canonic
array for any given n. Here the approach taken is
inductive. Given the canonic factorization array for
(n - 1) variables, it will be shown how to construct
the array for· n variables. This will be done by embedding two arrays for (n - 1 variables in the factorization array for n variables. Consider first the case
of n = 4. The array for (n - 1) = 3 variables is
known (Array 2). Take two of them:

Array 1

in which go and gl are input literals chosen from the
set {B,B,U,U}. This array, as straightforward analysis will show, realizes the self-dual function

U
U
U

u

u

B
gooo

gou
C

C

gOOI

u
C
gOIO
B

Array 3

Array 3, with U = 1, realizes
which can be any self-dual function of the three
variables (A,B,U). If U = 1, Eq. (3) becomes

go

= YiCgooo + BCgOOI + Bego lo + BCgo u

4)

U

U
B

which, if go and gl are chosen from {B,B,O,l}, can
be any function of the two variables (A ,B). Thus
Array 1 is the canonic factorization array for n = 2
variables. It is called a "factorization" array because
Eq. (4) is a factorization of the function. It is called
"canonic" because it is in a standard form, as will
become clear later.
Now consider the MAJA

U

glOO

U

C

f

= Ago

+ Agi

(

U

U

U

V

A
goo

U

Ii

gu
B
gOI

B
glO
A

fj

Array 4, with U

U

U
U

If U = 1, this array realizes the function

U
(5)

If goo, gOI, glO, and gu are chosen from {C,C,O,l},

then Eq. (5) can be any function of the three variables (A,B,C). Array 2 is called the canonic factorization array for n = 3 variables even though its
form differs slightly from the canonic construction
to be defined.
It would be possible to continue thus to define
arrays to realize any function of .n variables for
n = 4,5,6, and so on. However, if one wishes to
define a canonic factorization array for an arbitrary

U

gUI
C
giOI

C
guo

B

Array 4

1, realizes

Combine Array 3 and Array 4 in the canonic factorization array for n = 4
U

Array 2

=

U

(6)

U

U

U

..4 ......4. _. __ 4 ____ B
Ii
go 11
C
:glOO
gooo

C

C
gOOI

U

U

gUI
C
glOi

B
guo
B

gOIO: C
B
:- A--- - . A -- -

- "A- ..

Array 5

where dotted lines have been shown only to clarify
the construction of the array. It should be emphasized that Array 5 is a 4 X 6 U U SBC MAJA, with
no modification of its structure. The array contains
subarrays only in the sense that the input pattern to
portions of the array can be identified with the input
patterns to Array 3 and Array 4.
Array 5, with U = 1, realizes the function
(8)

350

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

where go and gl are the arbitrary 3-variable functions realized by Array 3 and Array 4. To see this,
let U = 1 (and U = 0, of course). Then if A = 1,
the sub array corresponding to Array 4 ( elements
14,15,16,24,25,26,34,35, and 36) has one on its
top boundary (elements 14,15,16), and zero on its
left boundary (elements 14,24,34). It is not difficult
to see that with A = 1, Array 5 has the same output
as Array 4. Similarly, if A = 0, then the subarray
corresponding to Array 3 has zero on its left boundary (elements 21,31,41) and one on its top boundary (elements 21,22,23) and it can be shown that
Array 5 has the same output as Array 3. Thus
Eq. (8) is vertified.
By substitution of Eqs. (6) and (7) into Eq. (8),
one obtains

f = ABCgooo + ABCgOOl +
+ ABCg110 + ABCg11l

(9)

If gOOD through gU1 are chosen from {D,D,O,I}, then
equation (9) can be any function of the four variables (A,B,C,D).
By interchanging rows and columns in Array 5
and then interchanging U and fJ and changing the
subscripts on the g inputs appropriately, one obtains
the MAJA,

U
U
U
U
U
V

U
A
A

U
IB
IglOO

I

_-1. ___ ~ C___
B
~oo

C

go 11
C
gOOl

U
gUl
C

U
C
g110
~Ol. ., _B_ _ _ _ _ _ _
C
A
gOlO I A
B
A Array 6
I
I

which realizes the same function, Eq. (9), as does
Array 5. This is the flipped canonic factorization
array for four variables, "flipped" because it corresponds to Array 5 flipped about its main diagonal
(and with V, U interchanged and the g's renumbered).
To construct the canonic factorization array for
five variables one embeds two 4-variable subarrays
in a factorization array in exactly the same manner
in which Array 5 was constructed. If one uses as
subarrays two copies of Array 5, the resulting 5variable array is 5 X 12, with 60 elements. If,
however, one uses the flipped array, Array 6, the
resulting 5-variable array is 7 X 8 with 56 elements:

U
V
V
V
V
V
V
V

V

1965

V

V

V

V

V

V

IB
C gl111 D
-1-- _4 -:d- ,B
C
gOll1 D IB
gUOl D
gl1lO
B
D
g110l C
gOllO: B
~lOO D
B
D
B
gOlOl C IC
glOl1 D
B I glOOO D
C
glOl0 B
goo 11 D
IB
gOOlO B ,D
glOOl e
goooo D
B ~-A-- -A"-- A -- A
D
gOOOl C
Array 7

--1-

Again, the dotted lines are included to clarify the
construction. Array 7 realizes the function

f = ABCDgoooo + ABCDgoOOl 7 . . . + ABCDg1111

It is interesting to note that the canonic factorization array is the smallest array known which realizes
the "checkerboard" function f (A,B,C,D) = A + B
+ C + D. * The canonic factorization array for this
function is

V
V
V
V

V

V

V

V

V

V

A
B
D
C

A

A

B

D
C
D

C
D

D
C

B

A

D
C
D
A

C
D
B
A

However, for five variables no function is known
which cannot be realized in a reduced intersection
MAJ A smaller than Array 7. It is true in general
that no function is known to be "worst case" for
n odd, although the "checkerboard" function is
always "worst case" for n even.
The construction of canonic factorization arrays
for higher values of n is carried out by successive
embedding of (n - 1) -variable flipped arrays, as was
just illustrated for n = 5. Let Hn denote the height
of the canonic factorization array for n variables, and
let its width be W n. Then, by the construction of the
canonic factorization array

H3 = 3,

W3 = 3

and
Hn = Wn-l+ 1,

Wn = 2Hn-

l

for n

>3

These array sizes are tabulated in Table 1. Note that
in the canonic factorization array for n variables
{Xl,X2, ••• ,xn }, 2 n - l of the inputs, the g inputs,
*This function is termed "checkerboard" because its Karnaugh Map representation resembles a· checkerboard.

351

TWO-DIMENSIONAL ITERATIVE LOGIC

depend on the function being realized, while all other
inputs are fixed, independent of the particular function being realized and equal to one of the 2n
literals {X1,X1,X2,X2, ... , X(n-l),U,U} (U, U) being
in fact constants, of course), so that if all identical
fixed inputs are wired together at the time of manufacture, only 2n + 2 n - 1 external connections to the

U

U
U
U

U
V
V
V
V

array need be provided. This "connection count" is
also tabulated in Table 1.
As a final illustration, the canonic factorization
array for n = 6, f(A,B,C,D,E,F), is shown below,
with solid lines indicating the two 5-variable subarrays and dotted lines indicating the four 4-variable
sub-subarrays.

U

u

U

u

U

U

U

A

A

A

A

A

A

A

B :

C

C
--

C

CD

g

E

E

~

g
E

E

g

C
C
D
~:D
g
E
~
Big
E
g
E
__~ -.:, __E____ g ___ 12 ___
-

u
-

u

u

u

--

j

-

u

-

-

u

u

-

g
E
I
g
E
g
E
D
K.
I
I
D
g
g
E
E
g
_li_ ~ _11 __ -2___ 1) - -----=-,--g
D
C
C
C
C_ __ ~ _
C C C D gE, B
g
g I B
E ',B
D
E
E
~
I
g
g
g IB
B
D
E
E
I
[.
I
g
B
D
C
E'
C
C
D:B
I
A
C,B
A
A
A
A
A
A
B
B
B

C
g
E

C

I

I

D

C
E
g

c __ _

D

g
g
E
DC

g

C

where the 32 nonfixed inputs gooooo through gl1111 are
all denoted simply g.
The factorization array, unless it has prewired
fixed inputs, can often be reduced for a given function. The factorization array factors a function into
subfunctions, each of which is in turn factored until
eventually each sub-subfunction consists of a single
literal. Each subfunction is realized in a UU SBC
sub array. Many of the subfunctions may have DU
SBC MAJA realizations smaller than the one used
in the factorization array. These can be substituted
for the standard sub array with a corresponding decrease in array size.

where X and Yare any single literals. If the array
for gosd is denoted
U ... U

U

u
u

8 ... 8
8

u

8 ... 8

where 8 denotes the various inputs of the array for
gosd, and if the array for g1 Sd is denoted, similarly,
U

EMBEDDED SUBARRAYS

U ... U

U
U

E

E ••• E

E

E

U

E

E ... E

In this section the process of embedding subarrays will be considered in general. If one has two
UU SBC MAJA's realizing two self-dual functions
then the array for
and
W

W

r

d

is

V
X

V ...
X
X

8
8

8
8

... V
€

E

E

8

E

E

€

E ... E

8 ... 8

y

Y ... Y

then these two arrays can be embedded in a WV
SBC MAJA to realize the self-dual function

tsd =

VXgo + VYg1
VW+ WXY

+ WXg 1d + WY god +

W

Array 8

352

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

In this illustration the arrays for goSd and gl sd
have been assumed to be of equal height. This need
not be true in general.
The formal definition of this construction follows.
Given a self-dual function jsd(Xl,X2, ... ,xn ), express it in a VW factorization as jsd = V g + W gd +
VW where the function g mayor may not be selfdual. This is ,always possible, if V and Ware properly chosen from {Xl,Xl,X2, ... , Xn}. Then factor g
as g = Xgo + Y gl. Again, this is always possible.
Then

and
jsd

= VXgo + VYg 1 + WXg 1d + WYgod
+ VW + WXY

with V,W,X, and Y chosen from {Xl,Xl,X2, ... , Xn}.
Now construct an SBC UU MAJA to realize
goSd = Vg o + Vgod. Call this array Ao. Let its size
be ho X woo Similarly construct the SBC UU MAJA
Al of size hl X Wl to realize gl Sd = Ugl + Ugld.
Note that there is no restriction on how Ao and Al
are constructed, or on their size. It will now be
shown that the two arrays A 0 and A 1 can be embedded in an SBC WV MAJ A, A, of size h X
(wo + Wl) which realizes jSd, where h equals the
larger of ho + 1 and hl + 1.
Let the center input to element ij of Ao be called
aOij, defined for all i, j: 1 ~ i ~ ho, 1 ~ j ~ WOo
Similarly, let the center input to element ij of Al
be called a\j, defined for all i, j: 1 ~ i ~ hl'
1 ~ j ~ Wl. Then the inputs to the h X W array A
are assigned as follows, where h = the largest of
ho + 1 and hl + 1 and W = Wo + Wl and aij denotes
the center input to element ij of A:
For
For
aij

For
For

1 ~ i ~ h - ho and 1 ~ j ~ Wo
aij = X
h - ho < i ~ hand 1 ~ j ~ Wo
= aOkj with k = i - (h - h o )
1 ~ i ~ hl and Wo < j ~ W
aij = a\(j- WO)
hl < i ~ hand Wo < j ~ W
aij = Y

This specifies every input to A in terms of X and Y
and the inputs to Ao and A 1• Array 8 is an example.
It can be proved1 that the array just defined has
as output the function fsd(xl, ... , Xn).

1965

It is very important to observe that the only restrictions on the arrays A 0 and A 1 are

1. That they are SBC arrays with U and U as
boundary variables.
sd
d
sd
2. That they realize go = Ugo + V go and gl =
d

Ugl

+ Ugl respectively.

Condition (2) is not equivalent to the condition (2') :
That when U = 1 and U = 0, Ao and Al realize go
and gl respectively.
Since the subarrays Ao and Al can be any VU SBC
sd
sd
MAJA's realizing the functions go and gl r~spectively,
it is possible to construct one or both of Ao and Al
themselves as factored arrays. In fact, the canonical
factorization array for n variables is just a factored
array with each subarray factored and each sub-subarray factored and so on until each sub-sub . . . subarray is a 3 X 3 canonical array which realizes a function of only three variables.
To illustrate the use of factored sub arrays in a
sd
sd
factored array in the general case, express go and gl
as
sd
d
d
go= URogoo+ US og01 + UR ogo 1 + USog oo + URoSo
and
sd
d
d
gl = URlglO+ USlgll + URlgll + USlg lO + UR1S1
and realize each of them in factored UU arrays,
which are used as subarrays in the array for jSd.
Figure 4 shows the construction of the resulting array. In this array the function f sd has been factored as

fsd = VXRogoo+ VXSOg01 + VYR 1g10
+ VSY1gll + VYR1Sl + WXR 1g
+ WYR ogOl + WYSog oo + W XY + VW
(For the sake of illustration it has been assumed
in Fig. 4 that gooSd can be realized in a 2 X 2 SBC VU
MAJA, while gOl'~d, glOsd, and gllsd, each require a
3X3 SBC UU MAJA.)
A study has been made of two-dimensional arrays
of three-input one-output gates, or elements, each
element realizing the majority function of its three
inputs (f(A,B,C) = AB+AC+BC). These arrays
are functionally equivalent to arrays of minority elements (f(A,B,C) = AB+AC+BC).

TWO-DIMENSIONAL ITERATIVE LOGIC

353

w

w
w
w
w

w
w

Figure 4. Four sub arrays embedded in an SBC factorization MAlA.

SUMMARY
Two methods are developed for synthesizing any
given Boolean function in an array. The first method
results in an array whose size depends on the particular function being realized. The second method
results in an array whose size depends only on the
number of variables in the function being realized.
Any 4-variable function, for example, can be realized
in an array of 24 elements or less.
The principle result of this work is a simple algorithmic synthesis procedure with the following
properties:
1. It is based on building blocks ( arrays)
which are characterized solely by their
width and height, and which contain only
simple three-input, one-output elements of
one type, with a maximum output load of
two elements each.
2. It results in arrays obeying a known upper
bound on size that seems reasonably small.
3. It permits the synthesis of any Boolean
function of n-variables by specifying no
more than 2 Cn-!) inputs to the array.
4. It permits the logical decomposition of the
array into subarrays, corresponding to a

decomposition of the function into subfunctions, with no physical modification of
the array.
5. It results in circuits (arrays) with a longer
delay, and hence lower speed, than conventionallogic circuits.
6. It often requires more elements to realize a
given function than do methods less constrained in element type and interconnection.
REFERENCES
1. R. H. Canaday, "Two-Dimensional Iterative
Logic," Report ESL-R-210 Electronic Systems
Laboratory, Massachusetts Institute of Technology,
Cambridge, Mass., (Sept. 1964). The same material appears in: R. H. Canaday, "Two-Dimensional
Iterative Logic," M.LT. Department of Electrical
Engineering, Ph.D. Thesis, Sept. 1964.
2. S. B. Akers, Jr., "The Synthesis of Combinational Logic Using Three-Input Majority Gates";
Third Annual Symposium on Switching Circuit
Theory and Logical Design, Chicago, October 7-12,
1962.
3. S. H. Caldwell, Switching Circuits and Logical Design, Wiley and Sons, New York, 1958.

TWO-RAIL CELLULAR CASCADES*
Robert A. Short
Stanford Research Institute
Menlo Park, California

design algorithm and the logical capabilities of the
individual columns. For example, in a minterm
composition C may approach the value of ~. The
successful reduction of the constant C has been
achieved by enlarging the class of functions that can
be realized by a single column. In particular, for the
simplest possible interconnection structure with
which a column, or cascade, can be constructedone using two-input single-output cells-more sophisticated design techniques have been developed
that show that C need not exceed the order of Vs
for large n.
In this paper an augmentation of this simplest
interconnection structure will be examined; in particular, provision will be made for two connections
between each of the cells of a column in an attempt
to increase significantly the number of functions
that are realizable within a single column. This
simple structural augmentation that provides one
more interconnecting lead between cells proves to
be significant, for it results in a structure that is
functionally complete-that is, any function of an
arbitrary number of variables can be combinationally realized within the extent of a single column.
Before summarizing these results, as well as
others directed toward reducing the number of cells
required for such cascades, a brief review is given
below of pertinent prior results.

INTRODUCTION
The increasing importance of integrated circuit
technologies has motivated research into the development of systematic and efficient procedures for
the design of cellular arrays-that is, arrays of logical assemblies, or cells, that are interconnected in a
regular fashion. A useful and analytically attractive
approach to the design of two-dimensional, edgefe~ ce.llular arr.ays f~r the realization of arbitrary
sWItchmg functIOns IS based upon the decomposi
tion of the arbitrary function into a set of subfunc
tions, each of which is independently produced by
one of the columns of the array. In this approach,
each column of the array might realize, for example, an individual member of a minimum covering
set of prime implicants; these subfunctions are then
composed by "collecting" the column outputs in a
special row of the array whose final output is a
realization of the desired function, or alternatively
by using edge jumpers in the same array to accomplish the collecting function;
The total number of cells in such arrays typically
grows as Cn2 n , where the exponential factor reflects the growth of the width of the array, and
where C is a constant determined by the particular
*T~e research rep~rted in this paper was sponsored by
the AIr Force CambrIdge Research Laboratories, Office of
Aerospace Research, under contract AF 19(628)-4233.

355

356

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

y

I

x·In

(c)

+

Figure 1. Array composition for simplest cell.

SINGLE-RAIL CASCADES
The simplest logic cell from which a single column,
or cascade, can be constructed is the familiar twoinput cell indicated in Fig. 1a. It is assumed that
the cell is sufficiently complex that any of the twovariable functions of x and y can be specified for it,
as noted by the index j on the cell itself. Thus, for
the single cell output, j = ji(X,Y), where j can range
over any of the 16 possible 2-variable functions.
The cascade that results from the interconnection
of such cells is indicated in Fig. 1b. The independent
variables enter the cells directly, e.g., X f 2 provides an
input to the second cell; for convenience, the topmost free input, y, will be taken as an binary con-

stant. The output of the cascade is formed on the
single free output at the bottom and is some function
of the in variables, in particular
j=h [Xi,ji
n

n

(Xi
n-!

, ... )]
n-!

One, way of utilizing such cascades in two-dimensional edge-fed rectangular arrays is indicated in
Fig. lc, where the second output for each cell is
formed by reproducing the horizontal input. This
scheme has been utilized in the cutpoint arrays developed by Minnick.! In these arrays, where the horizontal cell inputs are functions of the independent
variables and are not functions of neighboring columns, the basic functional building block remains the
column itself. The functional capabilities of cascades

TWO-RAIL CELLULAR CASCADES

of the type shown in Fig. 1b have been extensively
investigated.
The case where the external independent variables
Xl , • • • , Xm correspond one-for-one with the cell
inputs Xi, • • • , Xi has been studied by Maitra,2
1

n

Sklansky,3 and Levy, Winder and Mott. 4 Design
algorithms for producing the limited class of functions are available. Obviously the same cascade will
suffice for the realization of any function in the class
of functions obtained by permuting the independent
variables; the total number of such realizable equivalence classes has been determined by Stone. 5 The
point of present interest, however, is that the number of such functions comprises an increasingly
insignificant proportion of the totality of possible
functions with increasing m. There are even some
three-variable functions that cannot be produced in
such elemental cascades, e.g., the majority function.
A refinement which increases the number of functions producible by this single-rail cascade ("singlerail" referring to the single connection between cells
of the cascade) was demonstrated by Minnick, 6 who
showed that a one-to-many correspondence between
the independent variables and the horizontal cell
inputs results in a larger class of realizable functions.
These cascades have been called redundant cascades, i.e., m :::; n, and result in the use of certain
of the independent variables to form more than a
single cell input. Design algorithms have also been
developed for these redundant cascades, 7 but again
the pertinent point here is that the class of functions,
while larger than the irredundant case for all m ~ 3,
still forms a vanishing proportion of all functions
for sufficiently large m. Indeed the redundant cascades still do not quite suffice for the three-variable
case.
There is no other way in which the elemental binary two-input single-output cell can be generalized
to augment further the number of producible functions. Although arbitrary functional complexity is
permitted within the cells, * the interconnection
complexity is simply not sufficient for complete
functional capability in a single column.
With this fundamental question disposed of, the
next-rank question becomes of interest: namely,
how does the functional capability of cascades grow
with increasing liberality in the allowable interconnection structure? Does any linear cascade exist that
does achieve complete functional capabilities?
There would appear to be only two ways in
which the interconnection structure of cascades can

357

be liberalized within the basic cascade structure,
which requires that a given cell receive inputs
(other than external) only from its immediate predecessor, and supplies outputs only to its immediate
successor. In one of these ways the number of external inputs to a cell can be augmented, in the other
alternative the number of connections between cells
can be increased. (A distinction should be made
between this latter alternative and the rather intricate interconnection patterns exemplified by the
"cobweb" arrays that have been proposed by
Minnick. 8 In the cobweb array, each cell has as
available inputs not only horizontal and vertical
buses, but also inputs from the cell above, the cell
to the right, and one of the cells located a knight's
move above. Each cell also has an augmented
switching network-e.g., cutpoints-by which it
selects any two of the five inputs to which it responds, and the particular output that it will activate. The resulting designs achieve a much more
efficient utilization of the cells of the array, but the
essential function-composition capabilities are still
those that characterize the single-rail cascade.)
The first of these alternatives has been investigated by Lendaris and Stanley, 9 and on the basis of
their results can be quickly dismissed. The basic
cascade with m external inputs per cell is indicated
in Fig. 2, and it is assumed that each cell can produce any of the (m + 1 )-variable functions on its
output. In summary, although the class of functions
realizable in such a cascade is increased-obviously
all (m + 1 )-variable functions are realizable, for
example-it is still deficient* and becomes increasingly so, as noted in the previously mentioned cascades, as the number of variables increases.
The second alternative, an increase in the number of interconnections between cells, is indicated
in Fig. 3 for the case of two such cell interconnections, i.e., the "two-rail" generalization of the elemental single-rail cascade previously discussed. 10
Again it will be assumed that the cells are individually as complex as need be and, in this case, that

*Although arbitrary functional complexity in each cell
has been assumed, it is interesting to note that such complexity is not necessary. In fact, Minnick 1 has demonstrated
that anyone of 64 different sets of 6 functions each is
sufficient for these purposes. This result serves only to
reduce the individual cell complexity (i.e., to reduce the
range on j in Fig. la), but not to reduce the number of
cells required in a cascade.
*It should be noted that these cascades have not been
examined in the redundant situation; there is no reason to
expect any basic difference in the results, however.

358

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

any three-variable function of the cell inputs can be
formed (again specified by the j-index). If necessary, variable redundancy will also be permitted,
and as before the topmost y-inputs will be taken as
binary constants. However, no greater generaliza-

1965

tion than the two-rail cascade will be considered;
for as will be shown below, the set of functions
realizable is not only greatly augmented, but indeed
includes the entire class of possible functions. That
is, the two-rail cascade is complete.

X ml

Xm2

Figure 2. Basic multiple-external-input cascade.

TWO-RAIL CASCADES

in the cascade of Fig. 4 will realize any

Logical Completeness

on the second output of the terminal cell. (It may
further be noted that this realization follows the
previous forms in that only one independent variable
is accommodated per cell. If this requirement is
relaxed the top two cells are seen to be redundant
and only the remaining two cells are necessary.)
It further· follows that edge-fed rectangular arrays
can be constructed utilizing such cells (again simply
bussing the x-input through to provide the intercolumn connections, and utilizing a Shannon-type composition on the last n - 4 variables) that would
exhibit a growth rate of Cn2 n , where C is no greater
than 1/16. Thus an improved growth rate compared
with the two-input cell is readily exhibited, but it
must be remembered that the individual cells are
more complex. *

!(XI, X2, X3, X4) = X4g1

The isolated basic two-rail cell is shown in Fig.
4. The cell has three inputs (one is externally supplied) and two outputs. The index j indicate swhich
of the three-variable functions of the cell inputs are
produced independently by the cell outputs.
The greater flexibility offered by such a cell
(which of course must be measured against the
greater cell complexity) is suggested by the cascade
of Fig. 5 which will realize any four-variable
switching function depending upon the specialization of the cells. In particular if the index notation
j :

it (x,

YI, Y2), !2(X, YI, Y2)

is used to· specify the functional outputs of a given
cell, then the assignments of
it: x, 0
jz : YI, x
h : gl(X, YI, Y2), go(x, YI, Y2)
j4 : arbitrary, XYI
X'Y2 = !(XI, X2, X3, X4)

+

+ xlgo

*It also immediately follows that array growth rates
characterized by any arbitrarily small value of C can be
constructed simply by augmenting the number of vertical
rails to the required number. It also follows that in general
the individual cell complexity would rapidly increase.

TWO-RAIL CELLULAR CASCADES

359

Figure 3. Basic two-rail cascade.

X---iII-.(

Figure 4. The two-rail cell.

However, the cascade of Fig. 5 exhibits another
property of two-rail cells that can be utilized to
enhance even further the number of functions realiz-:able in a single column. In particular, the last cell
of the cascade has two independent functions of
the preceding variables presented on its vertical
inputs. Thus the action of the last cell can be selectively applied to portions of the previously generated
results; in the example shown the last variable can
act selectively on the functions g1 and go to obtain
X4g1 and xlgo before composing these in turn for the
final result. This capability suggests a different view

of the possible tasks of the two rails of a two-rail
cellular cascade. Specifically, it is possible that one
of the rails could be designated as an "accumulator" to which partially derived results can be added
(logically) after they are computed in the functional
line of the other rail.
For example, it is well known that arbitrary functions can be composed by simply adding the component minterms. In the two-rail cell it is possible to
do this directly. Thus, again let /1 and /2 refer to
the two cell outputs and x, Yl and Y2 to the inputs,
and assume that It can be specified as anyone of

360

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

Figure 5. Realization of arbitrary four-variable function.

the set of functions (XY1, X'Yl, 1) and that /2 can
be specified as anyone of the set (Y2, XYl + Y2,
.x'Yl + Y2). Then any arbitrary minterm (or prime
implicant) can be formed on the it leads and, when
completed, it can be added to the sum being accumulated on the 12 leads. At the same point, a new
min term can be commenced on the it leads. It is
apparent that the resulting cascades will be redundant in the sense that the variables are required at
more than one cell; it also follows immediately that
any function is realizable in a single cascade of such
cells.
If it is assumed, then, that a complete minterm
expansion for a function of n variables is utilized in
a single two-rail column, the total number of cells,
N, required is

tal rectangular array that also utilizes a minterm
expansion. It does, however, achieve this rate within the desired single-column restriction.
Alternative realizations to the basic two-rail cell
described above are possible and can be utilized to
reduce the cell count somewhat for the functionally
complete column.
In the first place, if the functions producible on
the second rail are augmented to include the complements of those prescribed above, then the minterm expansion can be utilized to realize either 1 or
I, whichever is simplest. If a final complementation is necessary to produce the specified function,
it can be. accomplished in the final cell of the column. Since the number of minterms in 1 and 1 is
just 2 n , it follows that
N :::;;

In terms of the number of cells required, this
growth rate is no improvement on the most elemen-

!

n2n = n2n- 1

for such a cascade. The same end can be achieved
by augmenting the cell functions so that a product-

TWO-RAIL CELLULAR CASCADES

of-sums can accumulate in the second rail.
The same growth rate can also be achieved by a
two-rail cell based upon the exclusive-OR expansion
f(Xl, ••• , Xn)

=

Co

+ C1Xl + C2X2 + ... + CnXn
+ Cn+ lX1X2 + ...

In this case, if the cell oputs can be selected from
(again referring to Fig. 4):

It :

(x,

XY1,

12 : (Y2, Y2

1)

+

xyt)

then, as in the minterm case, each product term
can be formed in the first rail, to be added or not
to the accumulating subfunction in the second rail,
depending on the value of the particular binary
constant Ci. Since the constant Co can be accommodated by one of the initial boundary constants at
the top of the column, only one cell is required for
each variable occurrence. Hence the total number of
cells can be enumerated as
N

=

I

i=l

i

(~)
= n2 n - 1 •
l

Clearly other two-rail cascades can also be developed based on other expansions. For the realization
of particular functions the use of prime implicants
instead of minterms will suffice, as will various
multilevel combinations (that is, greater than the
usual two-level AND-OR configuration) that reduce the number of variable occurrences for the
particular function to be realized. Since these realizations will result in nonstandard variable orderings
and hence are not appropriate for the composition
of horizontal-bus rectangular arrays, they will not
be further discussed here.

Elf!cient Two-Rail Compositions
Since the two-rail cascade is functionally complete, i.e., any function can be realized within the
extent of a single cascade, two minimization questions next become of significant interest. The first
seeks an algorithm for the minimum length realization of any given function; the second seeks a minimum form of cascade that will be appropriate for a

361

large class of functions, e.g., canonical cascades
which, when the cells are appropriately specialized,
will realize any member of the entire class of functions. The latter question will be briefly examined
here in terms of efficient cascade realizations for
arbitrary n-variable functions, where efficiency is
measured in terms of cascade length. The development of fixed-variable-order cascades suitable for
the class of all functions of n variables is particularly appropriate to the design of rectangular, horizontal-bus arrays, where all the input variables are applied to the columns of the array in the same order,
even though redundantly. In such arrays, designs
that have been minimized for each function realized
in the individual columns generally will need to be
augmented in order that each column can be driven
within the common variable ordering that feeds the
entire array.
Since the minimization criterion of interest is the
length of the cascade (i.e., the total cell count), it
follows that the complexity of the individual combinational cells is not at issue and is subject only to
the logical constraints implied by the two-rail structure. That is, each cell will initially be assumed capable of developing, independently on both of its
outputs, any of the three-variable functions of its
inputs. This point of view is entirely consistent
with the original assumptions made regarding the
single-rail cascades; steps directed toward reducing
this implied individual cell complexity will be discussed in the following section.
Since each cell is assumed to possess complete
three-variable capabilities, the determination of the
minimum-length three-variable cascade is trivial,
and is, of course, one. Almost as obviously, the minimum length four-variable cascade is two, although it is of special interest because it represents
the last instance in which the value is known to be
minimum. A particular instance of such a four-variable cascade is indicated in, Fig. 6 and is based
upon the general exclusive-OR expansion mentioned previously, that is

where gl, g2 are arbitrary functions of three-variables
and are realized on the outputs of the first cell in
the cascade. This particular expansion is selected
with an inductive construction in mind, for it suggests
a means for introducing a new variable to the scope
of a problem with the expenditure of only one cell

362

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

for that particular variable. Indeed any arbitrary
function of n variables can be expanded as
t(Xl, ... ,xn )

= gl(Xl,

... ,xn-t} +
Xng2(Xl, ... , xn-d

where gl and g2 are arbitrary functions of their arguments, suggesting the general form of realization of
an n-variable cascade as indicated in Fig. 7. In this
figure, the cascade A represents an efficient ( and
presumed known) realization of the (n - 1 )-variable function g2. (The symbol 1> on an output indicates that the particular function realized thereon
may be arbitrarily specified since it does not contribute logically to the result.) The pertinent output
of cascade A provides one input for the cell which
introduces the new variable, X n , which in turn provides an "accumulated" input for cascade B. The
function of cascade B, finally, is to develop the
function gl as efficiently as possible, and to accumulate it on the second rail in order to form the complete n-variable function. An economical realization
of the B cascade can also be obtained by utilizing
the exclusive-OR expansion, this time on only n - 3
of the variables; thus using n = 5 as an example,
gl(Xl, X2, X3, X4) = hO(Xl, X2) + x 3h 1(Xl, X2)
+ x 4h 2(Xl, X2)
+ X3x 4h3(Xl, X2).

A realization of this B cascade corresponding to
n = 5 is shown in Fig. 8. Since two cells are utilized
for each hi function, plus one more for each variable
occurrence of the expanded variables, it follows that

1965

in general such a B cascade requires
NB = 2 • 2 n- 3 + ni

3

i=l

(n ~ 3 ) = (n + 1 )2n- 4
1

cells together. The number of cells. in the complete
n-variable cascade then is certainly bounded by the
recursion relation.
N n ::;; NA

+ NB + 1 =

N n-l

+ (n +

1 )2 n - 4

+ l.

It follows immediately that the number of cells
required for a canonical five-variable cascade, for
example, need not exceed fifteen cells. Further simplifications can be made, however, for all cases. Since
it is immaterial which of the n - 3 variables is used
in the expansion of gl, it can always be arranged
that the last variable used at the bottom of cascade
A can provide one input to the top of cascade B,
saving one cell. Furthermore, since the particular
function ho(xi, Xj) is not multiplied (logically) by
any of the others, it follows that ho and anyone of
the other two-variable functions can be realized in
the same two cells of the cascade, thus saving two
more cells. (This simplification is indicated in Fig. 9
which can be substituted directly for the bottom five
cells in the B cascade of Fig. 8.) Thus for all n, the
upper bound on the number of additional cells
required can be reduced to
N n ::;; Nn-l

+

(n

+

1)2n - 4 -2.

This represents the best bound that has proved valid
for all n. Examination of Fig. 8, however, reveals

Figure 6. Arbitrary four-variable cascade.

363

TWO-RAIL CELLULAR CASCADES

8

Figure 7. Construction of n-variable function.

other cp outputs that suggest even further savings.
For example, the cp output of the fourth cell in the
cascade could be specified as X4 if that variable
could be used logically by the fifth cell in the cascade possibly resulting in the elimination of another
cell. It turns out that such savings can be easily
shown for n = 5, and result from a nonuniform
expansion of the function gl, that is, an expansion
such that the different l4's may be functions of different pairs of variables. For example, an alternative
expansion for gl for n = 5 is
gl(Xl, X2, X3, X4)

= hO(Xl, X2) +
+

(2)
x 4h 2(X2,
(4)

x 3h 1(Xl, X2)

(3)
X3)

+ Xlx 4h 3 (X2, X3)
(1)

and if this expansion is realized in the B cascade in

the order indicated by the numbering of the terms
above, then in each instance a cell can be saved in
the transition from one term to the next in the cascade. In Fig. 10 a five-variable cascade is specified
that utilizes this B cascade for a total of 10 cells for
the entire cascade, and achieves the minimum
known length possible for such a general cascade.
Whether such savings, which accrue from appropriate nonuniform expansions, can be achieved
for all n is not known. For all values of n through n
= 8 the existence of such expansions has been
shown, however, and if this result can be extended
to all n,. then the upper bound can be reduced as
indicated by the recursion
N n ~ Nn-l

+

(n-l)2 n- 4

On the basis of these results it is conjectured that

364

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

NOTE: The 'no-totion

1965

"0 H'~

on on

output arrow indicates thot
at that output 'he function
H is added to the previously
accumulated function on
fhe second ro i I.

X2
X3
<±>X3 h ,

X,
X2
G) hO = f

Figure 8. A realization of the B cascade. The notation "9h"
on an output arrow indicates that at that output
the function h is added to the previously accumulated function on the second rail.

the above bounds holds for all n.
As a summary, the best known values of N n
are shown in Table 1 for low values of n. For com-

parison, the direct miriterm expansion values are
also shown.
Table 1. Upper-Bounds for Two-Rail Cascades.

TWO-RAIL CELLULAR CASCADES

365

Figure 9. Simultaenous realization of ho and hl.

n
3
4
5
6
7
8
9
10

Minterm
n2n - 1 N n 12
32
80
192
448
1024
2304
5120

1

Bound
+ (n-l)2 n 1
2
10
30
78
190
446
1022

4

Reduced-Cell Compositions
Although to this point the only cost criterion has
been the length of the two-rail cascade, it is apparent that the individual cell complexity is also of
great practical importance. Certainly the general
two-output, three-variable cell will be significantly
more complex and costly than has previously been
described for the single-rail case. 1
In Fig. 11, however, a summary is found of the
six cell types that have been utilized in the efficient
two-rail canonical realizations of the previous section. Of these six only the first type, in part (a) of

the figure, requires the complete generality assumed
for the two-rail cell. This type is only used in the
first cell of any such cascade, however, and the remaining types of cells are required to realize only
very simple three variable outputs. For present purposes it will suffice, then, to demonstrate the avoiddance of cells of the type in part (a), in particular
by realizing the necessary functions in terms of the
remaining five cell types, which can then be thought
of as a sufficient, reduced cell set.
Although the general cell is used only as the first
cell of every cascade, it is convenient to replace the
first two cells in every cascade (as indicated by part
(a) of Fig. 12 which represents the first two cells
of the cascade of Fig. 10) with the five-cell cascade
of par (b) of Fig. 12. It can be verified that these
two cascades are functionally identical according to
the expansion
g2(Xl, X2, X3, X4) = hO(Xl, X3) + x 2h 1(Xl, X3)
+ x4(h2(Xl, X2) +
x 3h 3(Xl, X2) ),

and for the price of three additional cells in part
(b) of the figure, only reduced-cell types are utilized.
ized.

366

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

1965

A

B

Figure 10. The best-known five-variable cascade.

Thus upper bounds on the number of reduced
type cells required for canonical two-rail cascades
can be obtained simply by adding three cells total
to the more general results previously obtained.
BOUNDS FOR RECTANGULAR ARRAYS
Since the single-column for. two-rail cells has
been shown sufficient for the composition of arbitrary functions, it is of interest to ask whether the
growth rate of rectangular arrays composed of such
columns is thereby enhanced. As one way of structuring such an array, let us consider the conventional Shannon type decomposition
t(Xl, ... ,xn) =

I gi(Xl, ... , Xm) (Xm+l ... Xn)i
i

where an arbitrary function of n variables is expressed canonically in minterms of n - m of the
variables, each with a coefficient that is an arbitrary
function of the remaining m variables. If the mvariable functions are realized in a single column
in a minterm two-rail realization, then the number
of cells in a column, including one for a collector
row, will not exceed

m2m

+

n-m.

Since there are no more than 2 n - m such columns
necessary, the total number of cells in the entire
array, as suggested in Fig. 13, will not exceed the
product, that is

367

TWO-RAIL CELLULAR CASCADES

YI

Y2

YI

'~Y2

'hii,

Ie)

YI

Y2

Id)

Y2

Ie)

Figure 11. Two-rail cell types.

XI

X3

x4
x3

h2

)(1

X

X

 N:

=

383

1

no-loop to 1, yes-done

Figure 12. Bit serial, word parallel add.

There are two contiguous words A and B, A above
B, and the sum is formed in B. There are two
marker bits. M1 holds the carry in B. M2 in B receives the bit to be added from A. The jth digit position is designated by dj, j referring to an implicitly defined counter in the Mask register running
from the least to most significant bit.
The truth table disptays the cases of M1, M2, dj
and the new values of M1, dj. The first four cases
require no change in M1 or dj. The sixth case has
the same result as the fifth and can be converted by
exchanging M1 & M2. The eighth case has the same
result as the seventh and can also be converted by
exchanging Ml & M2. Note that the seventh case
ends in the same state of M1 and dj that begins the
fifth case, so the fifth case must be handled before
the seventh.
This algorithm is a simple illustration of one
form of parallel sequential logic. The function is
. broken up into cases which are passed against the
data. As an individual digit of A and B is examined, not all cases will select and so some operations will be dummies. However, all possible cases
are covered. Suppose there were several pairs of

Figure 13 shows the logic tables and algorithm
for another example of paranel sequential logic but
for the second form-sequential by item of data,
parallel by function. This time the example is nonnumeric, format transformation. The input is an N
character packed number, calculated by some process, to be printed out on a check. The rightmost
two characters specify cents, delimited by a period.
The remaining characters are grouped right to left
in fields of up to three characters, each field separated by commas. A dollar sign is placed to the left
of the most significant character and the spaces to
the teft of the dollar sign are filled with asterisks.
There is an exception. Any amount less than one
dollar is printed as dollar sign, zero dollars, point,
and the appropriate cents.
In a conventional machine, this would probably
be programmed as a set of subroutines to perform
the justifying, deletion, shifting, superposition, insertion, testing for most significant digit, asterisk
fill and check for special case. In this example, the
operation will be viewed as two functions, FORMAT SPREAD 2 and FORMAT FILL 3, which
operate in paranel on the data. The two functions
have a common label so that different SPREAD or
FILL functions can be called when appropriate.
The use of no comments in the second and third
label fields allows independent calling.
Both logic tables consist of doublets. There is a
bit of shorthand used in displaying the logic table.
There is an enlargement of the third doublet of the
first logic table to the side. The positions refer to
the characters, not individual bits. In the third
doubtet, the entry word (actually six words, one for
each bit of the character) copies the third character. The associated output word (actually six

384

PROCEEDINGS -

FALL JOINT COMPUTER CONFERANCE,

LABEL

CHARACTERS

Ml

FORMAT-SPREAD2-X

XXX XXX XXI
XXX XXX XXI

1
0

XXX XXX XIX
XXX XXX XIX

1
0

XXX XXX IXX
XXX XXI XXX

~1

"

"

It

11

"
"
"
"
"
"
"
"
"

n
II

"
tt

"
"

II

"
"

FORMAT-X-FILL3
n

"

"
"
"

n

"
" "
"
" "

IV

"
"
II
II

"
"

"

XXX XXI XXX
XXX XIX XXX

o-

XXXXXX XXXXIX ••• XXI
XXXXIX
XXXXXX ••• xxo
•••
o • XXXXXX XXX1XX ••• XX1
XXX1XX XXXXXX ••• XXo

0

....

XXX XIX XXX
XXX 1XX XXX

1
0

• •• XXXXXX XXIXXX • •• XX1
o • • XX1XXX XXXXXX

XXX 1XX XXX
XIX XXX XXX

1
0

XXX ZXX XXX
$X, XXX .XX

1
0

XXX
**$
XXX
***

ZZX
XXX
ZZZ
$XX

XXX
.XX

hl-

0

• •• xxo

•• XXX 000000 001XXX XX •• oXl
• .011 XXXXXX XXXXXX XX •• oXO
•• XXX 000000 OOXIXX XX ••• X1
oXO
• .011 XXXXXX XXXXXX XX
0

•

1
0

' •• XXX 000000 OOXX1X XX
XI
o .011 XXXXXX XXXXXX XX ••• XO

"

XXX ZZZ ZXX
*** *$X .XX

1

•• XXX 000000 OOXXXI XX ••• X1
• .011 XXXXXX XXXXXX XX o •• XO

Vi

II

It

IV

XXX ZZZ ZXX
*** *$Z .XX

1
0

VI

Ii

It

VI

"

"

It

XXXXXX XXXXXI ••• XXI
XXXXXi XXXXXX ••• xxo

XXX
.XX

"

"

"
"
"

1965

II

0

0

••

Figure 13. Example of format transformation.

words) reproduces the third input character but in
the fourth character position. As the enlargement
indicates, the entry words for each bit of the character are interleaved with the output words. The
readout spreads the packed number out as required
by the format transformation assuming all characters are significant.
The second logic table also uses some shorthand
in display. The first four doublets find the most significant character. The fifth doublet checks for the
exception case. In the second doublet, the sixth
character position is the code for the number zero
which is all zeros as shown in the enlargement. The
fifth character position represents the logical condition of some code for a number other than zero.
This breaks up into four subcases (zone bits are
zero for numerics). If the fifth character is not
zero, then at least one of the four low order bits is
one and at least one of the correct output words
will be selected, giving the correct fill.
The structure of the logic tables and the algo-

rithm have been chosen so that both logic tables respond in parallel to the data and format function
call. The time in normalized units is one and the
required storage is 24N-22 words, where N is the
number of 6-bit packed numeric characters.
A Process Control Problem

Figures 14, 15, 16 and 17 illustrate an example
of operations that might be appropriate to a process
control problem. It is assumed that there is a manufacturing process which fabricates cryotron plates of
a repetitive structure. The direct cost of fabrication
is quite low, but· the cost of testing plates could be
quite large, especially if plates which are ultimately
rejected are fully tested since their test cost must be
amortized over the plates that are finally accepted.
The test process is divided into two parts: a final
cold test which determines whether or not the plate
is used in a system and a room temperature test
which foHows the fabrication and precedes the cold
test. The room temperature test is designed to reject

THE ASSOCIATIVE MEMORY STRUCTURE

at low cost a large percentage of the plates that
would ultimately be rejected. It is automated and
steps a set of contacts across the repeated cells of
the plate, performs some tests on parameters, computes the pass/fail components of a unit cell test
vector and transmits this vector to a computer.
There is a set of logic-storage modules, one for
each parameter of the test, which keep track of the
number of cells tested on the plate, the number of
failures and calculate for each parameter whether
the number of failures for the given number of tests
falls above a reject limit or below an accept limit of
a sequential test chart as shown in Fig. 14. If a parameter leads to rejection, plate is rejected and a

R

R

T'
4
Figure 14. Example of process control limit charts.

new one started in test. If all parameters lead to an
acceptance, the plate is passed on for cold test. If
no parameter has led to rejection, but not all parameters have reached a decision yet, the automatic
tester steps over to the next set of contacts and
performs a new test of the same plate. If an individual parameter rejects or accepts, its count is frozen
while the others go on.
The format of the logic-storage module for a
parameter is shown in Fig. 15. It consists of four
contiguous words. The modules may be separated
arbitrary distances but the components of the modules must be together. Each word has a common
label, AUTO TEST, and a 1 in MO, signifying
parameter test. M1 and M2 distinguish the individual words.
The second word accumulates the number of fail-

385

ures in its count field and compares this to its limit
field to see if the parameter indicates rejection. The
first word accumulates the total number of tests in
its count field and compares this to its limit field to
determine when to trigger both itself and the second
word to add the increment fields to the respective
limit fields. The fourth word compares failures to
an accept limit. The third word checks number of
tests to determine when to adjust the limits of itself
and the fourth word.
The key field identifies the parameter being examined by the module. A failure of a parameter is
communicated by driving a one in the key field. A
zero is driven if the parameter passes. The second
and fourth words will respond only to failures. The
first and third words will respond to any test. The
flag field is used in readout to identify whether the
rejection (0) limit or the acceptance (1) limit was
crossed.
The initialize algorithm clears markers 3-8 and
the limit field in an modules and then serially
transfers the initial value field to the limit field.
The count algorithm drives the vector of parameter pass/fail values into the key field and marks
responses with a 1 in M6, the trigger. M5, the
freeze bit, must be zero which ensures that modules
measuring parameters which have crossed a limit
will not do any further counting. The second and
third steps count up by one serially by bit but paraliel by word.
The compare algorithm uses M3 & M4 to indicate in each module whether a count was greater
than (lOin M3,M4), equalto (00 in M3,M4) or less
than (01 in M3,M4) its associated limit. This algorithm proceeds from least to most significant
bits. At any stage where the count and limit bits are
equal, M3 & M4 are unchanged. So at the end of
the cycle the value of M3 & M 4 corresponds to the
inequality value of the highest order unequal bits of
the count and limit.
The check-limits algorithm uses the results of
the compare to determine if any failure limits have
been crossed and if so, freezes those modules.
The adjust limits algorithm examines total test
count of unfrozen modules to see if these limits
have been crossed. If so, both the total test count
word and its associated failure count word are triggered to add the increment to the limit. Figure 16
shows the truth table of this addition in stages corresponding to steps 2, 3, and 4.

386

PROCEEDINGS---' FALL JOINT COMPUTER CONFERENCE,

Incre- Initial
Value MO
Count Limit ment
1
TUO
dTU
TU
XXX
t
1
KUO
dKU
XIX
KU
k
1
TLO
dTL
XXX
t
TL
1
KLO
dKL
KL
XIX
k

Flag Key
XXX

XOX
XXX

XIX

M1
0
0
1
1

1965

M2 M3 M4 MS M6 M7 M8 Label
AUTOTEST
0
AUTOTEST
1
AUTOTEST
0
AUTOTEST
1

I-NITIALIZE
1.
2.

S(l/MO), SAR, W(O/Limit, O/MJ--MS)
S(l/MO, 1/Initia1 Value bit j), SAR, W(l/Limit bit j)-repeat
till field exhausted.

COUNT
1.
2.
3.

S(l/MO, O/MS, test vector/Key), SAR, W(1/M6)
S(l/MO, O/MS, 1/M6, O/Count bit j), SAR, W(O/M6, l/Count bit j)
S(l/MO, O/MS, 1/M6) , SAR, W(O/Count bit j)
Repeat 2 & 3 for all Count bits.

COMPARE
1.
2.

S(l/MO, O/MS, l/Count bit j, O/Limit bit j), SAR, W(l/M3, 0/M4)
S(l/MO, O/MS, O/Count bit j, l/Limit bit j), SAR, W(O/M3, 1/M4)
Repeat 1 & 2 for all bits of Limit field, least to most significant.

CHECK LIMITS
S(l/MO, O/M1, 1/M2, O/MS, 10/M3M4), Sl(l/MO, 1/M1, 1/M2, O/MS, 01/M3M4),
SAR, ~(11/M3M4, l/MS)
SPW, SAR, W(l/MS)
~
S(O/Ml, l/MS), SAR, SNW, SAR, W(l/MS), SNW, SAR, W(l/MS)
S(l/Ml, l/MS) , SAR, SPW, SAR, W(l/MS), SPW, SAR, W(l/MS)

1.

2.
3.
4.

ADJUST LIMITS
S(l/MO, O/MS, O/M2, 10/M3M4), SAR, W(l/M6), SNW, SAR, W(l/M6)
S(l/MO, 1/M6, l/Increment hit j~ 0/M7), Sl(l/MO, 1/M6, O/Increment
bit j, 1/M7), SAR, W(l/M8, 0/M7)
S(l/MO, 1/M6, 1/M8, l/Limit bit j), SAR, W(0/M8, O/Limit bit j, 1/M7)
S(l/MO, 1/M6, 1/M8) , SAR, W(O/M8, l/Limit bit j)
Repeat 2, 3 & 4 for each bit of Increment Field
S(l/MO, 1/M6), SAR, W(0/M6)

1.

2.
3.

4.
S.

Figure 15. Response to parameter test vector.
a

b

c

SC

a'c'MS'

a"c"MS"

a"'c"'MS'"

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

00
10
10
01
10
01
01
11

000
001
001
010
1 00
101
101
110

000
001
001
010
100
010
010
110

0
1
1
0
1
0
0

1

0 0
0
0 0
1 0
0 0
1 0
1 0
1 0

°

S=a,C-c no change
S=a,C=c
S=a,C=c
S=a,C=c no change
S=a,C=c no change
S=a,C=c
S-a,C-c
S-a,C-c no change

Figure 16. Logic of simultaneous limit increment addition.

Figure 17 shows the stored logic table (one
word) and algorithm to check the sample. Step 1
reads the key and flag of· all reject/accept words

frozen because a limit was crossed. Initially, M7 is
zero and M8 is one. Step 2 will select the logic table if and only if all parameters have crossed the

THE ASSOCIATIVE MEMORY STRUCTURE
Label

&s.

~

Sample Test

111

111

CHECK SAMPLE

1.
2.

S(l/MO, 11M2, l/MS,11/M3M4) ,SAR, R(l/Key, l/Flag)

s(Sample Test/Label, Key readout/Key, Flag readout/Flag),
SAR, W(l/M7)

3.

s(sample Test/Label, O/M7.,
Key Mask), SAR, W(O/M8)

Flag readout/Key readout in

4.

S(Sample Test/Labe1h SAR, R(1/M7,M8),W(O/M7,1/M8)

Figure 17. Accept/reject sample evaluation.

accept limit. Step 3, searching over the key field
with the flag readout in the Contents register and
the key readout in the Mask and for 0 in M7, will
select if and only if not all parameters have crossed
a limit and that none that have crossed were rejections. The last step selects the logic table, reads M7
& M8 and initializes them. The automatic tester interprets the readout of 1 in M8 as a signal to step
the test and go on to the next plate; 0 in M8 as a
continue signal. The plate is passed for 1 in M7,
rejected for 0 in M7 if the test is stopped.
The logic of the example can be concatenated by
providing another set of modules with 0 in MO to
indicate process test. Each time a plate test is
stopped and the plate passed or failed, the final cumulative vector used in the check sample algorithm
can be driven into the process test modules to monitor the overall fabrication process to check if it is
doing well, so-so, or about to go out of control.
The key/flag criteria can involve combinations of
parameters as well as individual parameters themselves for more sophisticated measures of the performance of the fabrication process. The limit/increment logic of either the parameter or process test modules can be made more complex with
additional fields and/ or additional words in the
module (to adjust the increments of the limit fields
for example) and additional steps to allow more
complex sequential testing limit curves which might
be defined by second, third, etc., order difference
equations.
CONCLUSIONS
The Asspciative Memory Structure is a versatile
storage and processing building block for computers

387

and is not limited to the role of a search memory.
While a cellular approach inay be taken to alleviate
interconnection problems of batch fabricated devices, there is some advantage to departing from a
purely cellular system of identical elements in a uniform array. Hierarchy in communication and distributed control allow selective parallelism. Some
cells will respond to control information by determining whether or not a group of associated cells
will respond to a subsequent control sequence.
The small set of primitive information manipulation operations is quite powerful and much more
flexible than built in macro commands. Computer
functions can be composed with the primitives using the parallel sequential logic approach. The
batch fabrication technology is not required to be
able to implement very complex macro commands
and fewer plate or chip types need to be designed
and stocked.
ACKNOWLEDGMENT
The author wishes to acknowledge the contribution of John W. Bremer and Dwight W. Doss, coinventors of the cryotron associative memory structure.
REFERENCES

Companion Papers
B. T. McKeever, "The Associative Switching
Structure," IEEE Trans. on Electronic Computers,
vol. EC-15, to be published in 1966.
- - - , "The Associative Structure Computer,"
ibid.
NOTE: A more extensive set of references for all
three papers will appear in "The Associative Structure Computer."
Cryogenic Electronics Issue, Proc. IEEE, vol. 52,
Oct. 1964.
Integrated Electronics Issue, ibid., Dec. 1964.
Proc. Symposium on the Impact of Batch Fibrication on Future Computers, Los Angeles, Apr.
1965.
W. T. Comfort, "A Modified Hollard Machine"
Proc. FICC, Nov. 1963, pp. 481-488.
'
J. Sklansky, "General Synthesis of Tributary
Switching Networks," IEEE Trans. on Electronic
Computers, vol'. EC-12, pp. 464-469 (Oct.
1963).

388

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

R. C. Minnick, "Cutpoint Cellular Logic," ibid.,
vol. EC-13, pp. 685-698 (Dec. 1964).
D. L. Slotnick, W. C. Borck and R. C. McReynolds, "The SOLOMON Computer," Proc. FICC,
Dec. 1962, pp. 97-107.
R. Fuller and G. Estrin, "Algorithms for Content-Addressable Memory Organizations," Proc.
Pacific Computer Conference, Pasadena, Mar.
1963, pp. 118-130.
R. G. Ewing and P. M. Davies, "An Associative
Processor," Proc. FICe, Oct. 1964, pp. 147-158.

1965

B. A. Crane and J. A. Githens, "Bulk Processing
in Distributed Logic Memory," IEEE Trans. on
Electronic Computers, vol. EC-14, pp. 186-196
(Apr. 1965).
W. Shooman, "Parallel Computing with Vertical
Data," Proc. EICC, Dec. 1960, pp. 111-115.
J. Atkin and N. B. Marple, "Information Processing by Data Interrogation," IEEE Trans. on
Electronic Computers, vol. EC-11, pp. 181-187
(Apr. 1962).

COMPUTER EDITING, TYPESETTING AND IMAGE GENERATION
M. V. Mathews and Joan E. Miller
Bell Telephone Laboratories~ Incorporated
Murray Hill~ New Jersey

INTRODUCTION

Human engineering of both the programs and the
equipment was a prime design consideration and
led to objectives of:

The programs which we will describe were developed to provide a practical system for editing and
publishing text with a digital computer. The system
consists of an electric typewriter, a computer, a cathode ray tube output unit, and a camera. Text and
editorial instructions may be entered into the computer from the typewriter. The computer executes
the instructions and prepares a corrected, justified
text. The text may be written on the cathode ray
tube, photographed by the camera, and published by
standard photo-offset printing. Alternatively, it may
be written on the typewriter by the computer, or
printed on the computer printer.
There has been much recent interest in computer
editing programs. Among others, extensive work
has been done by M. P. Barnett at M.LT., by P. F.
Santarelli at the IBM Systems Development Laboratory in Poughkeepsie and at Project MAC at
M.I.T., by R. P. Rich at the Johns Hopkins Applied Physics Laboratory, and by C. R. T. Bacon at
the University of Pittsburgh. In addition, some machines are being developed to present graphic arts
quality images on cathode ray tubes such as the
Merganthaler-CBS Laboratories Linotron machine.
Oscilloscopes of lower quality are available as output devices for numerous computers.

1. Providing a typewriter as good and as simple as an ordinary secretary's machine. The
typewriter can be located in the office of
the user.
2. Providing a good upper and lower case type
font with flexibility for adding letters and
figures.
3. Allowing the intermixing of text and editorial instructions. Thus corrections may apply to a text while it is being written.
4. Providing a comfortable vocabulary of editing instructions.
When the editing program was written, facilities
at Bell Telephone Laboratories did not provide instantaneous real-time interaction between a typewriter and the computer on which editing was done.
Consequently, the program was written so as not to
require interaction. This decision strongly affected
the way in which lines in the text are located for
correction purposes. When interaction is available,
parts of the program may be modified.
The following section of this paper describes the
editing program, and the succeeding section the
389

390

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

typesetting and genration of images on the cathode
ray tube.
THE EDITING PROGRAM
Description

The purpose of this program is twofold: ( 1) to
allow for input and correction of typewritten material; and (2) to store material for future editing
and/ or processing.
The significance of such a system lies primarily
in point (2) for although typists and proofreaders
can· prepare manuscripts and typesetters can produce aesthetically pleasing copy, no one relishes the
problem of altering previously prepared material.
Consequently, the ability to store text in a form
that can be easily updated represents a great convenience. And if the material is stored in a computer, then it is amenable to other helpful forms of
processing such as alphabetizing or sorting.
Therefore, the aim of this project has been to develop a system of editing in which the user can provide input to the computer by a device which is familiar and easy to use (i.e., a typewriter), can easily correct the errors he makes while inputting, and
can easily modify in the future material he has produced in the past. Furthermore, the design of the
system is such that corrections to currently typed
material can be made interchangeably with corrections to preexisting material. The corrections themselves constitute current input and do not require a
second pass operation for their execution. It is felt
that this particular feature adds great flexibility and
power to the technique of computer editing.
Structure of System

The editing program is diagrammed in Fig. 1.
The manuscript is typed at an IBM Selectric correspondence typewriter and transmitted to the IBM
7094 computer. The data is in the form of 6-bit
characters, one for each. of the 44 typewriter keys
and one for each of several operations such as carriage. return, backspace, upper case shift, lower case
shift, etc. This input data consisting of both text
and instructions is pre-processed by the pre-edit
pass of the program. Case shift characters are removed from the data stream and case information is
added to each character. Read requests for material
stored on the permanent disk file of the 7094 are

Figure 1. Block diagram of editing program.

executed. All data is stored on scratch disk
(ITEMS) for examination by main edit pass.
The sequencing of characters is indicated by a
list of pointers which specifies for each character
the location of the character which follows. The instructions which call for modifications to the text
are therefore executed by resetting the appropriate
pointers. Pass 2 executes all such instructions.
The post edit pass is logically equivalent to the
main edit but is included as a separate pass to provide space for routines of the users' own design. In
pass 4 the characters are sequenced in their proper
order by following the pointers. The corrected text
is written on scratch disk CTEXT and transmitted
to its appropriate place in the users' permanent disk
file.
The fifth pass deals with the printing of the text.
A galley proof is prepared on microfilm, unless
otherwise specified, in order that the user may
know the state of the material which has been generated and stored in his permanent disk file. Final
copy may be requested by instruction and the format is dictated by instnlctions still present in the
body of the text.
Organization of Material

All typewritten material is subdivided into units
called items. This organization is determined by the
user with the restriction that an item be no larger
than 1,800 typewriter characters, which corresponds
approximately to one page of typing. Items are

COMPUTER EDITING, TYPESETTING AND IMAGE GENERATION

identified by user-assigned decimal number,s of up
to six integral places and at most two decimal
places. These numbers are typed at the beginning of
the item.
The next larger organizational unit of material is
the standard text. There can be at most 2,000 items
in one standard text. A standard text is identified
by a (at most) 24-typewriter-character name of the
user's choice.
Standard texts (an arbitrary number of them)
constitute standard files, which are identified by an
up to 6-BCD-character name. These files correspond to files of disk storage in the computer. An
author preparing an opus of volumes might use a
file for a volume, a standard text for a chapter, and
each item for a paragraph. Most applications, however, will probably involve one file of one standard
text only.
General Conventions

A single run of the editing program produces
one standard text. The first line of typing indicates
the name and destination (file) of the standard text
being generated. If this standard text is not to be
stored on permanent disk, as may be the case when
only a printed copy is desired, then the file should
be specified as O.
Editing instructions must be distinguished from
text. The presence of every instruction or control is
announced to the program by means of the left
square bracket. The typewriter provides this character in both lower and upper case and thus simplifies
the typing of instructions by eliminating extra case
shifts. Each instruction has its own code of some
single character and this code character must immediately follow the left square bracket. Instructions are terminated in general by a slash.
The text begins with the assignment of an item
number of up to six integral places and at most two
decimal places. Integers need not have decimal
points. The assignment of this number requires the
code of lower case i and therefore [ill labels the
characters that follow as item number one.
The privilege of backspacing has been preempted
by this system in order to provide an effective
means of making erasures. A sequence of backspaces will eliminate the sequence of previously
typed characters of equal length. The usual customs
on underlining and overtyping must be abandoned
inasmuch as any backspacing will destroy the input.

391

Provisions for underlining are made by an instruction but, at present, overtyping is not allowed.
As will be seen in the discussion of the instructions which follows there are special break characters such as the left square bracket and the slash
which have been preempted by the system. In order
to exempt these characters from their usual role
should they be desired in some other context, they
may be effectively placed in quotation marks or
"super quoted." An example will be discussed in the
illustration which follows.
Instructions

Those instructions which are used to edit the text
or control options in the program are referred to as
Class I instructions. They are identified by a code
which is an upper case character and are distinguished from Class II instructions, which specify
the output format. A list of instructions presently
available is given in Fig. 2. In the general form of
the instructions as shown in this list, www and xxx
are used to denote item numbers and yyy and zzz
are used to denote line numbers. These parameters
are considered to be right adjusted in fields marked
by commas or the slash. The character # or 0 may
be typed in most contexts to denote current item or
line. Furthermore, line numbers may be back-referenced by using minus signs if and only if the instruction refers to the item in which it is contained.
Example of Editing

Figure 3 is an unrealistic though illustrative example of an original text prepared at the typewriter
to demonstrate Class I instructions. The requisite
format of the first line is shown.
The first item is numbered 10. It is desired that
the content of this item be printed in a fixed format
and, hence, the first instruction is [F. The word
Objectives is underlined by using the instruction
[U #, # / carriage return ... underlining .. ./carriage
return typed on the same line. Note that the second
slash appears first but was, in fact, typed after the
underlining was complete. The normal mode of format is resumed after the instruction [J. It is intended
that the second line of item lObe shortened to "II.
Description" by use of the instruction [0 .... However, the line number is erroneously stated as 1.
(This difficulty will be remedied later.)
Item 12 contains several errors. A C-type instruction is used to eliminate the extra occurrence

392

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

CLASS I
[E xxx/

Erase item xxx.

[E xxx,yyy,zzz/

Erase line yyy of item xxx.

[E xxx,yyy,zzz/

Erase lines yyy through zzz of item xxx.

[I xxx,yyy/ .•• insertion ... /

Insert the text between the slashes
after line yyy of itemxxx.

[0 xxx,yyy/ •.. substitution .•. /

Overwrite line yyy of item xxx with
the text between the slashes.

[S xxx,yyy/ expression A (substitution) expression B/
[S xxx/ expression A (insertion)/
[C xxx,yyy/carriage return ••. /carriage return
Correct line yyy of item
xxx on a character by character basis.
[U xxx,yyy/carriage return .•. /carriage return
Underline specified
characters in line yyy of item xxx.
[R FILE, Text, N,www,xxx/

Read request.

[G FILE, Text,www,xxx/

Galley proof request.

[T FILE, Text,www,xxx/

Type final copy.

[F

Fixed format.

[J

Normal mode (justify).

[P

Paragraph (used in normal mode).

[X www,xxx/

Randomize the order of items www through
xxx.

[M www.xxx.n/

Multiproces8 items www through xxx using
routine PROC n.
CLASS II

[v n/
[h

[m

n/
a, b/

S~ace

horizontally n times.

Margins: a spaces on left, b spaces on right
Go to new page.

[p

[1

Space vertically n times

n/

[e (x,n) ••. (y,m)/

Type on every nth line
Equate character x to symbol number n, etc.
(to extend character set)
Figure 2. Instructions for the editing program.

of the characters "t ype" and to change x to c. two
lines back from the instruction. The importance of
this type of instruction is that the modifications can
be made at the location of the error. Mter the first
slash and carriage return, the platen is rolled back
two lines, and the space bar used to find the proper
position. Then the erroneous characters are deleted
by typing minus signs~ are ignored by spacing, or
modified by overtyping. The second slash and carriage return terminates this instruction and typing

resumes. The instructions [S# / and p (r) / at the
end of the item inserts the missing r in the word
"poofreaders". Note that a line number is not mandatory in the S instruction, and when it is missing,
the search for the first occurrence of expression A
begins with the first line of the specified item.
Item 14 gets off to a false start and is erased by
[E#/. The erasing in this case goes only as far as
the slash of this instruction and does not wipe out
the material which follows in this item.

COMPUTER EDITING, TYPESETTING AND IMAGE GENERATION
(MEMO) (DESCRIPTION)
[i lO/[F
II.

Description of System

Objectivesl [U#,#/
The purpose of this system is three-fold:
(1) to allow for input and correction of typewritten text;
(2) store material for fu:hure editing and/or processing;
(3) to provide high quality typographical output.
[0#,1/11.

Description/

[il2/[JThe significance of such a system lies primarily in point
two for although typists and poofreaders can prepare manuscripts
and t-YJ:le-typesetters

xan produce aesthetically pleasing copy,

no one relishes the task of aleering previously prepared material.

/

[C 12, -2/

Consequently, the ability to store text in a form that can
be easily updated represents a great convenience.

Therefore,

the aim of this project has been to develop a system of
edi ting in which the user can

prov~de

input to a computer

by a device which is familiar and easy to use.

[S#/and p(r)/

[i 14/Furthermore, the [E#/The corrections themselves
constitute input.
[i9.5

[S12,2/point (@"(2)" )for/

EIO,8/[010,2/II.

Description/

ri 11.5 [S12,8/venience.([P

) There/

[i 20 [R MEMO, DESCRIPTION, -1, 6,8
[i 25 [RMEMO, DESCRIPTION, 100, 28.5/
[i 30 [R MEMO,MANUAL,<),O,O/

393

They specify the file name, the text name of the desired items, and up to three parameters, which specify how and what items are to be read. The first
parameter indicates how the desired items are to be
numbered. A negative value indicates that the numbering should start with number of the item in
which this read statement occurs, a value of zero
indicates that the item should be given the number
it already possesses, and a positive value indicates
that the new item should be given a number equal
to its original number incremented by the value of
this first parameter. This last technique of numbering is useful when merging items from several texts
into a new one. The second and third parameters
indicate which items are to be read. If, however,
the third one is omitted, only one item will be recovered, and if both of these parameters are zero,
all items in the text will be recovered. In the example of Fig. 3, item 20 calls for the items from text
DESCRIPTI0N whose numbers range through values 6 to 8. They will be numbered sequentially 20,
21, . . . under the assumption that it is known that
there are no more than five items since the next
read request is in item 25.

Figure 3. Example of input text for editing.

Corrections to Instructions
The next instruction, which begins [S12,2/, gives
an example of super quoting. It is intended that
there be a substitution of (2) in place of the word
two in the second line of item 12. However, this
substitution involves parentheses which will interfere
with the interpretation of the instruction. Therefore,
the three characters (, 2, and) need to be super
quoted. For this purpose a character other than
(, 2, or), for example, the " is chosen to surround
the phrase and the surrounded phrase is preceded by
@. The @ and the two occurrences of " in the resulting string @ " (2)" will not appear in the text, but
they will cause the PRE EDIT program to flag the
super quoted characters with an extra bit thus preventing the MAIN EDIT from making its usual
interpretation. The printing programs, however, will
ignore the extra bit and will treat these characters
properly.
It has been pointed out that an important aspect
of this editing system is that the material is stored
on the disk of the computer for future modification
and processing. The provision for requesting preexisting material, which is to be updated or quoted, is
made by means of a read instruction. These read
statements must be made as items in themselves.

Corrections to instructions are handled in several
ways. First of all, the backspace-retype method,
which is effective for all errors, is the one and only
means for correcting errors in the first line or read
statements. This restriction is due to the fact that
these statements are interpreted in the PRE EDIT
and do not enjoy the benefits of the editing facilities. Several instances of apparent overtyping may
be noted in Fig. 3. They are, in fact, cases of erasure and retyping. Errors can and will be made in
the typing of other instructions, and these mistakes
may not be discovered until some time later after
which the backspace-retype means of correction is
no longer practical. Corrections to Class I instructions (those designated by an upper case code)
must be made ahead of the erroneous instruction.
Facility for allowing instruction A to be executed
in advance of instruction B is provided by placing
instruction A in an item whose number is· less than
that of the item containing instruction B. The data
is scanned in order of increasing item number, and
therefore, the instructions will be encountered in
their proper order. The decimal numbering system
of the items allows for the prenumbering of items.

394

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

In this way corrections are effectively made on the
future as well as on the past.
The mistake made in the overwrite instruction of
item 10 (Fig. 3) is corrected by item 9.5. Here the
old instruction is erased and the proper form given.

print pass after the editing has been completed.
Hence, these instructions can be "wired in or out"
at any time in the editing program by use of the
correction instructions. The S type is particularly
useful for this purpose.
Figure 4 shows the galley of the edited text of
Fig. 3, and Fig. 5 is the final copy as produced by
the output program.

Paragraphing

Paragraphing must be handled by instruction
when typing in the normal mode since the program
is concerned about the associated blanks indicating
indentation. A desired paragraph is indicated by
the in&truction [P which mayor may not be followed by a carriage return. In either case the blanks
which follow will be regarded as the indentation.
Should the user decide upon a paragraph as an afterthought, he may "wire in" the instruction. For
example, item 11.5 of Fig. 3 shows [P and five
blanks being inserted after the word convenience in
item 12.
Changes which control format of output, i.e.,
corrections to Class II instructions, offer no problems as to when they are inserted relative to their
proper position since their execution occurs in the
FILE- MEMO

1965

OSCILLOSCOPE WITH DIGITAL CONTROL
FOR TYPESETTING AND GRAPHIC ARTS
General Description

This section describes a system for the digital
control of a high-quality oscilloscope for the purpose of generating graphic arts quality images such
as are needed for printing text and line drawings. In
general the images will be photographed and the
resulting pictures reproduced by the standard methods of offset printing. The input information which
specifies the image will come from a digital magnetic tape or a computer. On the input, the image is
described entirely in numerical form in the manner

STANDARD TEXT • DESCRIPTION····_··_···

07/12/65 21:».12

10.00 [F

IL Desetiption
Objectivel
The purpoae of thil Iyltem iI three-fold:
(1) to allow for input and conection of typewritten text:
••••••••• 1 •••••••••••••••••••••••••••••••••

"

•••••••••••••

(!) Itore material for futul'e editing anel/or Pfoeeainc:
(S) to provide high quality typost"aphica1 output.
••••••••••••••••••• t •••••••••••••••••••••••••••••

12.00 [JThe lignificance of luch a Iyltem lia primarily in point (2) for

................................................................. .
an~ proofl'eaden can prepare manuxriptl and typaetten can pl'ociuce
.......................................................................................
aesthetically p1ealing copy. no one l'elilha the tuk of altering p1'evioUl1y p1'epl1'eci
.......................................................................................
'"

although typiltl

material Conaequently. the ability to 1t01'e text in a form that can be ealily updated
•••

4

••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••

representl a great convenience.[P
,

................................ .

Therefore. the aim of thil p1'Oject hu been to develop a l)'Item of editing in which
..........................................................................................
the

UIef

can p1'ovide input to a computer by a device which iI familiar and euy to uae.

14.00 The C01Tectionl themlelva conltitute input.

Figure 4. Galley proof.

COMPUTER EDITING, TYPESETTING AND IMAGE GENERATION

395

IL Description
Objectives
The purpose of thissyatem is three-fold:
(1) to allow for input and correction of typewritten text:
(2) store material f('r future editing and/or proceaing:
(S) to provide high quality typographical output.
The significance of such a syatem lies primarily in point (2) for although typiatl and proofreaden
can prepare manuacriptl and typesetters can produce aesthetically pleating copy, no one relishel the
talk of altering previously prepared material Consequently, the ability to ItOre text in a form that
can be easily updated reprelentl a great convenience.
Therefore. the aim of this project has been to develop a system of editin, in which the UIet
can provide input to a computer by a device which is familiar and easy to \lie. The COffectiOIlI
themaelvel conltitute input.
Figure 5. Justified text.

to be discussed below. The motion of the beam of
the scope is completely determined by the numerical data. The intensity and off-on times of the beam
are similarly controlled.
A block diagram of the system is shown in Fig.
6. The general mode of operation is as follows:
Data, in numerical form, which specifies the next
SCOPE AND
ANALOGUE
DEFLECTION
EQUIPMENT
DIGITAL
MAGNETIC
TAPE OR
COMPUTER

DIGITAL
CONTROL
EQUIPMENT

DIGITAL-TOANALOGUE
CONVERSION
EQUIPMENT

~

printed text. The film is then advanced to provide a
fresh film for the next page.

Preliminary Experiments

A set of preliminary experiments has been carried out using a Stromberg-Carlson 4020 Microfilm
Printer and an IBM 7094 computer. The SC 4020
contains a scope and camera of sufficient quality to
test the feasibility of producing printing and drawings. A sample alphabet produced on microfilm on
the SC 4020 and reproduced photographically is
shown in Fig. 7. Here each of the letters in the bottom 6 lines was produced by a number of short vecFile: FONT Stancla,. Reco,cl: BASKERVILLE III

Figure 6. Block diagram of image-generating equipment.

letter or diagram to be generated is read from the
digital magnetic tape or computer. The digital control equipment then determines the sequence of
movements of the scope beam to produce the image. Typically, many (10 to several hundred) beam
movements will be needed to produce a single character. Digital signals from the digital control unit
are passed through digital-to-analog converters to
obtain the voltages to be applied to the x and y
scope deflections and to the beam brightness and
off-on controls. The digital control also advances
the film in the camera at appropriate times. The
camera film is stationary and the shutter is left
open until a full scope face of material is exposed.
This amount will usually Gorrespond to a page of

GALLEY

Oaaractet. in the font

A BCDEFG HIJIT LM NOPQRSTU V W X Ylo
abc4ef.hijkl .. nopqr.tuywx,a __
1r.'.Ii.~I()

..

::···()~/I.

11154117 •• 01··+-_

Cij = ar + ltij
A q;.:'l brown fox ..... oyer the 111, clOS.
Fill
box witII ten ...... jup

In,

Figure 7. Example of type font.

tors, an average of about 16 vectors being required
for each letter. In this way a highly readable output
is obtained with both upper and lower case letters.
Furthermore, an unlimited number of new fonts can
be introduced simply by reading a new set of vectors which describe the letters into the IBM 7094.
Also graphs and line drawings can be treated just as
any other character.

396

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

The quality of the letters produced with vectors
is not as good as the usual printing. Readability
probably compares with an ordinary typewriter.
However, the SC 4020 scope is far from the best
available, and better equipment should greatly im~
prove the quality.
Estimates of Resolution Requirements

The SC 4020 can plot points, dots (slightly larger than points), or draw vectors. The points and
dots can be placed at any position on a 1024 x
1024 raster. The vectors can start at any raster
point and extend up to 64 grid spaces in either or
both x and y directions. Measurements on the image of the SC 4020 indicate resolutions of
Point .... 2.6 grid spaces diameter in 1024 raster
Dot ..... 2.8 grid spaces diameter in 1024 raster
Vector ... 2.3 grid spaces width in 1024 raster
The letters shown in Fig. 7 were produced on a matrix 16 raster points high and an average of 10 raster points wide. Consequently the letter resolution
can be defined as 4.3 vector widths wide and 7 vector widths high. This resolution is sufficient· for a
quality whose readability is probably comparable to
typewriting (although we have made no tests of this
point) . However, the quality is substantially less
than that of good printing. We estimate that firstrate printing could be achieved by tripling the SC
4020 resolution and producing the letters on a 21 X
13 resolution unit grid. On the SC 4020 this would
correspond to a 49 X 30 raster point grid using the
vector mode or a 59 X 36 grid if the dot were used.
In addition to resolution compared to letter size
another factor is very important. This is quantizing
or the comparison of raster space to dot diameter.
In the vector mode the ratio is
1 Raster Space
= 0.43
1 Vector Width

--..,~--~-

This ratio is too large for some purposes. In particular, it would be nice to be able to change the size
of a letter simply by multiplying the lengths of all
involved vectors. Failure of attempts to change size
indicate that a quantizing ratio of 0.43 is much too
large to allow this scaling, and hence a smaller ratio
is desirable. The exact ratio needed may also depend on· the resolution raster used for the letter. We
estimate that the ratio should be no larger than
0.25.

1965

A High-Quality Scope

The SC 4020 scope has a basic resolution of at
best 2.3 parts in 1,024. The scope has a built-in
character mask and was not designed for ultimate
resolution. Better scopes are now available. The
best specifications quoted by scope manufacturers
indicate beam widths of 0.0005" to 0.001" are
available in 5" to 10" diameter scopes. Assuming
that a 5" usable deflection can be obtained with a
beam width of 0.001", then a basic resolution of
1 part in 5,000 can be achieved. This is 11 times
better than the SC 4020 and should produce excellent graphics if it is properly used.
Proposed Raster and Resolution for
Quality Printing

As a result of the preliminary experiments described above, and the specifications of currently
available scopes, specifications for a high-quality
graphics system can be set down. Scheme #1 consists of a raster of 32,768 points across a tube with
a resolution of 1 part in 5,000, and the letters being
generated on a 140 X 85 matrix of raster points.
This would give a 21 X 13 matrix of resolution circles for each letter. The quantizing ratio would be
5,000/32,768 = 0.15, which should be adequate for
smooth size multiplication.
A simulation was carried out on the SC 4020 in
which letters were generated from points on a
64 X 38 raster giving a 25 X 15 matrix of resolution circles. The results shown on Fig. 8 indicate
quite acceptable printing quality.

An electronic system drew,
set in words, sentences, and
justified columns the letters you
are now reading.
th~n

Figure 8. Example of better quality type.

Image Formation From PATCH's

In the work previously described, which has
moderate resolution, images were formed from the
sum of short vectors or from the sum of dots. The
vector width or dot diameter is the resolution of the
scope. With high resolution scopes, the beain is so
small that it is no longer practical to use a single
beam image as the basic area unit. Instead, special

COMPUTER EDITING, TYPESETTING AND IMAGE GENERATION

397

deflection equipment must be added to the scope to
cause the beam to sweep over a basic area unit or
PATCH (Parameterized Area To Construct Holograph). All images are constructed as the sum of a
number of PATCH's. In this way the number of digits required to describe the image is reduced to a
reasonable number, and the speed with which the
image is generated is increased.
PATCH's must meet certain requirements. They
must:

tical sub-areas possessed by several letters. Thus the
loops on the "b," "p," "d," and "g" may be identical (after suitable rotations) i.n some fonts. If so,
then these areas need be described only once in
terms of PATCH's, and suitable equipment devised
to repeatedly call for these standard areas. The concept is similar to the use of subroutines in computer programs.

1. Fit together without leaving interior spaces.
Circles would be unsuitable by this criteria.
2. Provide a good approximation to an image
with a small number of areas.
3. Be describable with a reasonable number of
numerical parameters.
4. Be generatable with reasonably simple analog equipment.
5. Be enlargeable or reducible to allow changes
in font size.

The general philosophy behind the development
of the editing program has been to provide a human-engineered facility for producing text in machine readable form so that a computer can be used
for editing, sorting, and printing. It is hoped that
timesaving in composing will be effected by eliminating much proofreading time inherent in a system
involving human copying. The ability to modify
and republish existing material is probably the most
valuable feature in the system.
It is planned to first use the program for texts
which must be issued in many slightly different editions or which must be frequently modified. Certain
instructional programs and literature describing
computers are prime examples.
The image generation programs have not yet
been tested with the best available scopes. However,
the experiments with the SC 4020, the specifications of the best scopes, and the currently available
digital equipment make it appear possible to build
a high-quality, high-speed, graphic arts display device. The unit can produce on a single scope face
high quality printing with as much' as 200 lines of
350 letters each. Such a scope face would contain
more than an entire page of newsprint. Letters
could be produced at speeds of 500 to 5000 letters/second. These speeds are 10 to 1,000 times
faster than existing photographic or hot metal typesetting equipment. Furthermore, since the image is
described in complete generality digitally, line
drawings, mathematical equations, musical scores,
and an unlimited number of type fonts can be produced by the same, completely standard, means.
Gutenberg invented printing with movable type
in the 15th century, thus superseding handdrawn
letters. We are now ready to replace movable type
with drawn letters. The pen is in the hand of a
computer. Altogether, we .believe the computer is
now ready to provide great assistance to human
written communication.

An area which meets these requirements is shown
in Fig. 9a. The area is bounded by straight lines at
its top and bottom and second order curves at its
left and right edges. Adjacent PATCH's can be
stacked on their straight sides. Simple circuitry has
been designed to generate the PATCH. If desirable
the PATCH can be rotated 90° to provide vertical
straight sides. Rectangles and trapezoids are special
cases of this area. Eight parameters are required to
describe a PATCH; width-a, height-h, curvature
and slope at left and right bounds-Cl, Sl, C l , Sl,
and the coordinates of one comer-Xo, Yo.
A sketch of a generation for the lower case letter
"r" is shown in Fig. 9b. Nine PATCH's are required. Some PATCH's have been rotated 90° as
shown.
Preliminary experiments indicate an average of
10 PATCH's is required for each good quality letter. Thus a font of 100 leters would require 8,000
numbers for its description. This number is substantial, but not too large for currently available
computer memories.
The letters on Fig. 8 were produced with
PATCH's.
Use of Sub-Areas

In order to reduce computer memory requirements, it may be possible to take advantage of iden-

CONCLUSIONS

398

PROCEEDINGS -

1965

FALL JOINT COMPUTER CONFERENCE,

ZIG-ZAG SWEEP
TO FILL IN AREA

S"

c,

h

(a)

PATCH

(b)

FORMATION OF LOWER CASE
BY PATCHS
Figure 9. Generation of images from PATCH's.

II

r

II

THE LEFT HAND O'F SCHOLARSHIP: COMPUTER EXPERIMENTS WITH
RECORDED TEXT AS A COMMUNICATION MEDIA
Glenn E. Roudabush,
Charles R. T. Bacon,
R. Bruce Briggs, James A. Fierst, and
Dale W. Isner
The University of Pittsburgh
Pittsburgh, Pennsylvania
and
Hiroshi A. Noguni
The RAND Corporation
Santa Monica, California

cations: the products of this activity made public.
But these two sides of scholarship are closely related. What to one scholar is a publication, to another
is information. Every scholar stands both to the right
and to the left of every other one.
In our text processing work at the University of
Pittsburgh, we look upon our computers and our
developing system of programs as a tool designed to
extend the abilities of the scholar, on the one hand
to collect, sort, and understand information, and on
the· other to disseminate to others the information
that he generates. In other projects and for most of
the users at our Center, our computers and systems
of programs are seen as a tool to extend the ability
to process and analyze data. These systems are, of
course, well developed. In analyzing data, one's
concern is to reduce, to simplify, and to summarize,
preserving only the most significant aspects of the
data. While in processing information, we wish to
preserve every jot and tittle, allowing no character-

To paint a broad though much simplified picture,
let us suppose at the outset that scholarship begins
with the collection of facts. These facts are of two
distinct kinds. The first are observations and they
consist, for example, of the results of controlled experiments or observations for field work in the case
of science or, perhaps, they are derived from the
study of historical documents in the case of history,
and so on. The second kind of facts are the reported
observations, descriptions of phenomena or events,
or the theories provided by contemporary scholars.
In aggregate, let us refer to the first kind of facts as
"data" and the second as "information." From the
confluence of these two kinds of facts in the mind
of the scholar, new descriptions and theories are
born. When he makes these public, then new information is generated.
Scholarship, strictly conceived, is this activity in
the mind of the scholar. On its right hand are
sources: data and information. On its left are publi399

400

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

istic of any significance to go unrecorded or untransmitted. Finally, in the research we ourselves do
that utilizes natural language text, we come full circle and again use our systems as data processors
and analyzers, treating the information we have collected as data.
Figure 1 shows schematically the overall design
of our text processing system. Four kinds of input

Printer's
Tapes toMagnetic Tapes

I-----~

Cards to
Magnetic
Tape

Paper Tape
to Magnetic
Tape

Conversion to
Standard Magnetic Tape

1---------- -1

I
1

I
I
I
1

I
I

In-House
Analysis

IR Research
Auto-Abstracting
Content Analysis
etc.

Figure 1. Block diagram of the general text processing
system.

are shown. The text on magnetic tape in any arbitrary format may be material obtained from other
centers or from any source that produces text on
tape. One day this source may include material read
by optical character recognition equipment. The
printer's control tapes are paper tapes obtained
from printers and publishers which were originally
used to control some kind of typesetting equipment.
We have locally constructed a paper tape reader that
will accept 5,6,8, 15, and 31-channel paper tape
and, through an IBM 1401 computer, write magnetic tape. This work was completed under a Depart-

1965

ment of Defense Advanced Research Projects Agency grant and has been reported elsewhere.1,2 The
text punched on cards or on Flexowriter-type paper
tape would normally represent material prepared at
our Center.
The block labeled "conversion to standard magnetic tape" represents the encoding of all forms of
natural language text into a particular format according to a schema devised by Martin Kay and
Ted Ziehe of the Rand Linguistics Research Group.
A relatively complete, but still preliminary description of this format has been published as a Rand
Memo. 3 The use of magnetic tape for storage of text
and the use of this standard format are prominent
in our system and more will be said about this in a
moment.
Some source text in exceptionally good condition
may, after encoding in this standard form, be ready
for distribution to other centers requesting it or for
use in our own research. Characteristically, however, some additional processing will be required
and this is represented in the block labeled "utility." At the bottom of this figure, our use of text as
data is represented. Under "in-house analysis" we
have listed information retrieval research, auto-abstracting, and content analysis as examples of this
kind of work.
The series of blocks down the right side of Fig. 1
show the normal sequence of operations for photocomposition. Material to be photocomposed will, in
most cases, be specifically keyboarded for that purpose. This material will be under good control from
the beginning and can go directly into the typesetting system unless it will be used for other purposes
as well. Sorting, editing, and other processing will
generally not be required so that the conversion to
standard format can be bypassed. Both kinds of input to the typesetting system are allowed. An expanded block diagram of the typesetting system itself will be shown in a later figure.
Our system depends to a large extent on the efficient processing of large amounts of natural language text on magnetic tape and this aspect of our
system will be described in somewhat greater detail.
Magnetic tape is, of course, an economic storage
medium and is easily shipped between geographically separated centers. Encoding all text in one
standard format becomes important when many different kinds of text from many different sources
must be processed and shared. When standardized

THE LEFT HAND OF SCHOLARSHIP

input can be expected, a smaller number of general
programs can be written and a useful library can
begin to be accumulated. The standard adopted
must be flexible enough to handle any material one
may encounter. The Rand format seems to fill all of
our current and anticipated requirements and we
have adopted it for our system.
On seven-channel magnetic tape, the minimum
unit is a six-bit pattern plus a parity bit. In a oneto-one character representation, only 64 unique
characters can be defined. In order to extend the
number of different characters that can be represented on tape, either more than one six-bit pattern
can be assigned to each character to be represented
or else, as in the Rand standard format, some of the
available 64 patterns can be used to change the
meaning of the patterns that follow them on tape.
These mode change patterns or characters are of
two kinds: "flags" and "shifts." The flags change
the interpret9tion of succeeding patterns to a new
alphabet, while the shifts retain the same alphabet,
but mediate changes to, for example, upper case,
italics, larger type size, and so on.
Fifteen of the available 64 patterns are permanently assigned as alphabet flags in the Rand system. These 15 patterns along with the blank (octal
60) and a filler character (octal 77) are not a part
of any alphabet and their interpretation never
changes. There are, then, 47 patterns which can be
assigned meanings in each of the 15 alphabets. In
each of the 15 alphabets, some of the available 47
patterns will be assigned mode change functions as
shift characters. In the Roman alphabet, for example, nine patterns are used in this way. The remaining 38 patterns can accommodate the 26 letters, 10
diacritic marks, and the apostrophe with one pattern left unassigned. Notice that separate alphabets
must be used for punctuation, the numerals, and
other symbols occurring frequently in the English
text.
This encoding system gives a flexible representation of the micro-characteristics of text. Larger
units of text, however, have a hierarchical organization which also requires representation. This is accomplished in the Rand system by the "catalog"
format. The fundamental unit in this system is the
datum, which can be thought of as a manipulable
unit of information. A datum may be a text entry
consisting of one physical line of text if from a previously printed source, or one sentence, or one word

401

if that is convenient, or it may be a title or a caption from an illustration, or an annotation or description of another datum added at a later time.
Each datum belongs to a particular class and at the
beginning of each reel of tape following a label record, a map of the corpus is given describing the various classes of material contained in" the file. Each
datum is coordinated with this map and its proper
identification assured by a system of control and
label words accompanying every datum. A representation of the Rand encoding system will be shown
later in our second typesetting example.
We in Pittsburgh became interested in automatic
photocomposition when, in October of 1964, we
acquired a Photon S-560 photocomposition machine
from the National Institutes of Health. This machine had previously been used by Michael Barnett
at the Massachusetts Institute of Technology under
an NIH grant. The Photon is an electromechanical
device driven by punched paper tape. It consists essentially of a movable glass disk with 1400 characters etched on it and a lens system for projecting
these characters onto roll film. The disk can accommodate 16 different type fonts arranged in eight
concentric circles or levels around the disk. The paper tape is punched with double character codes, the
first giving the character position within disk level
and the second giving the escapement for that character. There are additional codes for advancing the
film, positioning the film carriage horizontally, affecting lens shifts for size control, and effecting
shifts to new disk levels for font changes.
When we received the Photon, we also acquired
the PC6 system of automatic photocomposition
programs developed under the direction of Barnett
while he was at M.I.T.4-s The PC6 system is typified by the TYPRINT program which requires text
containing fixed typesetting control codes as input.
These codes are set off from the text by square
brackets, which are reserved, and have fixed meanings as shown in the following examples:
[NP ] New Paragraph
[DL6] Shift to Disk Level 6 (Highland type face)
[VL2] Leave 2 Blank Lines
In using this system, we soon found that the insertion of fixed codes can be laborious, that changes in
format require changes throughout the text, and
that many desirable formats are impossible to
achieve. We felt that a more flexible and more gen-

402

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

erally useful system of programs could be written.
We still believe, however, that the PC system was
a successful first step toward automatic photocomposition and, in general, the typesetting system we
have developed is an outgrowth of our experiences
with it.
The input to our system is either magnetic tape
in an arbitrary format produced from paper tape
punched specifically for typesetting or else magnetic
tape in the Rand standard format. The output is
again paper tape that will drive the Photon. A schematic diagram of this system is shown in Fig. 2. In
this figure, the two forms of magnetic tape iJ).put

Magnetic
Tape to
Photon Code

Recycle

Page
Formatting
Program

Optional
Editing
by Scope

Indexing
Program

Magnetic
Tape to
Paper Tape

Figure 2. Block diagram of the typesetting system.

are shown at the top. The typesetting program is
shown as two separable functions. The first· part,
which translates text into the double character Photon code, is relatively independent of the second
part, but is quite dependent on the particular photocomposition device being used, that is, on the Photon. This part would be largely rewritten if a new
piece of equipment were obtained. It is, however, a
rather simple and straightforward program. The
second part, labeled the "page formatting program,"

1965

represents a real departure from the PC6 system
and other typesetting. systems we have seen. In· this
program, a full page of text is set before outputting
is begun.
The page formatting program shows two forms of
output. The first is a magnetic tape which contains
Photon input that will be converted to paper tape.
The other form of output labeled the "history tape,"
is a magnetic tape containing the original text characters with their associated Photon codes, all of the
material added by the page formatting program,
page and line numbers, and sufficient parametric
information to reset the material exactly as it was
originally done. This tape can be recycled through
the page formatting program with corrections or
additions to the text or simply with changed parameters if the format is to be changed. Since page
numbers, tables, captions for figures, titles and subtitles, and so on are all in their proper place on this
tape, it can be used as input to a program that produces indices and tables of contents. Finally as
shown, this tape might simply be stored for a period of time and then recycled when a new edition is
to be set.
This history tape is an important by-product of
computerized typesetting and may well be a critical
factor in making the adoption of an automatic system economically feasible. This tape is essentially
an exact copy of the printed material, less illustrations which cannot be handled in our system, and is
a compact, machine-readable counterpart of the
standing .type that occupies space in some print
shops and warehouses. Any material in this file can
be simply addressed by page and line number from
the corresponding printed document and changes
made. If a change is made that affects the remainder of the file, for example an insertion that affects
the pagination, all of the file will automatically be
corrected.
In designing this system, we came to the conclusion that typesetting control codes in the text to be
set are necessary if any format flexibility is to be
obtained. They, therefore, appear minimally in our
system. We have tried at the same time to ease the
burden of keyboarding these codes and of changing
their meaning in pre-prepared text by making them
entirely arbitrary. The text-dependent codes can be
though of simply as markers. The actions to be
taken when particular codes are encountered are
separately specified as parameters to the system.

403

THE LEFT HAND OF SCHOLARSHIP

These parameters can be inserted anywhere in the
text ahead of the markers to which they refer, or
they can be punched on parameter cards. If they are
keyboarded with the text, they are normally marked
off by dollar signs or some other specified reserved
symbol. The form of the printd output can be completely changed by changing these parameters with
no re-editing of the text itself.
In our system, we wished to include the ability to
control as much as possible the layout and final
form of the pages in the manuscript. We felt that
the deficiencies of other systems in this respect
stemmed from their line-by-line typesetting. The
attempt to visualize a page by as yet undefined
lines is difficult and usually leads to a number of
unnecessary trial runs. To ease this difficulty on the
programming level, we set full pages. On the conceptual level, we conceive of a page as a collection
of subpages or "boxes." A box is a string of fixed
text delimited by two markers. The material within
a box can be set independently of other material as
though it were itself a page and then the box of
fixed material placed in its proper position on the
page. The box system is recursive so that boxes
may be defined within boxes and for most functions, overlapping is allowed.
The parameters used to control the system are of
three types: (1) general parameters, (2) text boundary parameters, and (3) box parameters. A list of
the general parameters is shown in Fig. 3.
Most of these parameters control the general appearance of the printed output. They include the
specification of page size, number of columns on
the page, type face, point size, and so on. The parameters specifying running page headers include a
provision for incorporating page numbers that are
automatically incremented. The last two parameters
are provided to make the keyboarding somewhat
simpler. The DLIM code allows the specification of
any character to mark off parameters when these
are included in the text in place of the preset dollar
sign. The DEL code allows any character to be
specified as a deletion code. It causes a character
over which it is typed to disappear from the input
string. Only those parameters that are to be different from their preset values need be specified.
The following list of general parameters:
$ PSIZ(8. 5, 11), TFAC(SCOTCH) , TSIZ(10),
HEAD(Page /1/), COL(3.5, 1.5, 3.5) $
would specify 8 Y2 by 11 inch pages to be set in

SYr180L

MEANING

NOTES

PSIZ(x,x)

Page SIZe

COL(x,x,x ••• )

COLumns

Page size is width
by height.
Column widths and
margins alternate.
Reserved words such
as center,spread,etc.
are used to indicate
action desired.
n, i, b,B are names
of type fonts.
Used to indicate
italic or bold type.
Type size is given
in points.
Background size is
also in poi:->ts.
Tab, setting measured
from left margin.
Minimum distance
between words.
Ill3.ximum distance
between words.
Headers may be any
string of text, i t
will be set on both
page s. LHEAD and
RHEAD are set on respective pages only.
Used to surround instructions in text.
Remove s unwanted c haracters when backspacing.

JUSV( s)

JUSt ifica t ion-Vert ical

JUSH(s)

JUStification-Horizontal

TFAC(n,i,b,B)

Type FACe

FONT (f)

FONI'

TSIZ(p)

Type SIZe

BGND(P)

Back GrouND size

TAB(x,x,x •.• )

TAB

M'wS(p,p)

Minimum Word Spacing

XHS(p,p)

maXimum Word Spacing

HEAD(t)

HEADer

LHEAD (t )

Le ft HEADer

RHEAD (t)

Right HEADer

DLIM( c)

DeLIMiter

DEL(c)

D~Letion character

x is a dimension expressed in inches.
P is a dimension expressed in points.
t is any string of text and may include any boundary or box
markers.
c is any keyboardable character and should be one which is
not norr.,ally used in the text.
n, i, b,3 are the names of type faces available. They determine
which type face \n..",..",., .... ;" ... +.;n.... +roo C'hnu7C' +1,0
.... oV+ ,,, ... 11rl
u~'"" \..1...1.'-" ,""VJ..1..l..J..I..I.U.l..I..I..","".l.V.I...l. \..J.. ..... '" ..:J.I..I.V l'Y
"'.I..I.V ..L.&.V~:lr." 'Y L4-..L"'~
LJ

options (Fig. 7e).
To generate a string of characters for inclusion in
the notebook, a matrix of alphanumeric characters
and an accumulator are displayed simultaneously.
The user selects characters by pointing the light pencil at them in sequence. His choices are recorded in
the accumulator and errors can be canceled by a
suitable light pencil command. When the appropriate
character string has been generated, the command
PROCESS moves the display to the next option
(Figs. 7f and 8a).

played, and' executed by the user who need know
nothing more about the communication language
than is necessary to point out his desires. By using
the tree to review the catalog of currently available
file names, object names within files, and property
names within files, the user is able to browse
through the data structure as well as to familiarize
himself with the range of options and implications
available to him.
The sophisticated user is not restricted to this
mode of communication if his knowledge of the

AESOP: PROTOTYPE FOR ON-LINE USER CONTROL

a

443

c

b

f
Figure 7.

Steps in the on-line construction of a file modification command as described in detail in the
text.

system exceeds that implied by the look, choose,
and point philosophy. Users who know the syntax
and vocabulary of the system may directly compose
on the on-line typewriter any message that can be
generated by means. of the light pencil and communication tree. In fact, at any time in the evolution of the AESOP prototype, the typewriter user
has a more extensive language, portions of which, in
sequence, are transferred to the tree as this proves
useful. Currently, requests to print hard-copy, to
erase or to transfer portions of the notebook into

other portions are accomplished only by means of the
typewriter. System error messages are primarily
provided on the typewriter.
PROCEDURE GENERATION
The user can also process the data of the system,
either by executing or modifying established routines or by constructing new routines using his light
pencil and CRT display. In order to do this, he
calls up an on-line algorithm construction display

444

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

a

b

d

e
Figure 8.

1965

c

f

Figure 7 continued.

called OAK-TREET. The display appears as a
tree with one branch displaying commands which
can be light penciled to build and execute a program. A second branch displays some basic classes
of operators and operands or previously established
functions to be used as parts of this program. A
workspace within which to build a tree representation of the desired procedure exists as another
branch (Fig. 9a).
Each time a user light pencils a command, it appears in the upper right-hand corner of the display

(Fig. 9b). When he light pencils a class of operators, the specific operators within that class are displayed on a separate branch of the tree (Fig. 9c).
When he light pencils one of these specific operators, it also appears in the upper right-hand corner
of the display (Fig. 9d). Once a command and an
operator are so displayed, he can then light pencil
any portion of a tree in the workspace and the command will be executed, using the operator in question, at that specific location in the workspace
(Fig. ge). In this general fashion, the user builds,

AESOP: PROTOTYPE FOR ON-LINE USER CONTROL

e
Figure 9.

f
Steps in the on-line construction of a primitive
procedure to mUltiply 4 by 5.

445

446

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

stores, retrieves, modifies, links, and in other ways
develops a catalog of logical and mathematical
expressions for use with his data base.
Numbers are generated by means of a special display of a tree of numerical characters which can be
added in an accumulator by light pencil selection.
These numerical strings are then transferred to the
upper right-hand accumulator in the OAKTREET display for further use.
The OAK-TREET capability operates in two
modes C. The/first displays the commands, operators
and workspace simultaneously. This mode may
crowd the workspace but the display logic drops
portions of the workspace tree off the display face,
leaving branch markers to indicate what parts are
gone whenever the workspace density exceeds a critical value. The second mode is used for inspection.
It turns the entire display face over to the workspace tree. In this mode, any point on the construction can be brought to the top of the display by
means of the light pencil in order to expose more of
the details of the tree below that point.

1965

As an example of the use of the OAK-TREET
feature consider Figs. 10, 11· and 12. A user interested in .a gross estimate of fuel consumption as a
function of distance for a high performance aircraft
in level flight might build the following planning procedure. Using the command REPLACE and a previously stored subroutine with the name JT1, he puts
this routine into the workspace by pointing the/ light
pencil at the node immediately below the/ word
WORKSPACE (Fig. lOa). The previously defined
routine JT1
., is then displayed at that point in the
workspace. In this example, the routine is a gross
ca1culation of fuel consumption and is called POLLBS. It involves multiplying the fuel consumption
rate by the ratio of the distance flown over the average speed of the aircraft. The user may substitute
parameters into this procedure (see Fig. lOb) and
then call for it to be executed by pointing the light
pencil at the command EVALUATE. The result of
the calculation will be printed by the on-line typewriter.

Figure 10. On-line retrieval of aprestored routine and insertion of parameters.

To set up a more complex expression for evaluation, the user· now changes the distance flown to the
variable C multiplied by 100. He does this by replacing 800 with the arithmetic operator X (multiply), then setting the branches to C and the number
100. Both are done with the command REPLACE
(see Fig. 11 a). The user now temporarily stores this
modified routine under the arbitrary name GUS. He
then uses the workspace to establish a new variable D

set to the value of the routine stored under the name
GUS. He does this by putting the logical operator =
immediately under the word WORKSPACE (thereby
erasing everything else) and then adding under it the
variable D and the expression stored under the name
GUS (see Fig. lIb).
This new expression is now stored temporarily
under the name JOE. A conditional expression is then
built in the workspace by putting the logical operator

AESOP: PROTOTYPE FOR ON-LINE USER CONTROL

a

447

b

Figure 11. On-line modification of a procedure, storage and
use as a subprocedure.

IF-THEN-ELSE immediately_ below the word
WORKSPACE. The user then introduces the logical
operator TYPE on both terminal branches of the
conditional to indicate that both results of the conditional test should be typedby the on-line typewriter.
He then adds the variable D to the true branch, and
the same'plus a marker of four dots to the false
branch (see Fig. 12a).
The conditional test is set as a comparison to be
made by the operator LEQ meaning less than or equal
to. The comparison is to be made between the value
of D and the number 400 (see Fig. 12b). This portion of the routine is now stored under an· arbitrary
name ED and a next routine is constructed in order
to execute the previously defined routines.
This next routine involves the use of the operator
DO. It is used to first find the value of D and then
perform the conditional test. This is accomplished
by putting the routine previously stored under the
name JOE as a first branch for DO and then using
the command REPLACE, inserting the routine previously stored under name ED (see Fig. 12c). This
DO procedure is now stored under the name SAM
and a next. higher order routine is built.
This next routine involves the operator FOR which
is used to run through a sequence of values for a
given variable. The variable in this case is the C
which was previously used as the variable for distance
in the fuel calculation. C will be set to values from 1
to 10. The previously defined DO expression, stored
under the name SAM, is then added to be evaluated
for these values of the variable C (see Fig. 12d).

The system can be shifted to the second or inspection mode and the complete routine can be expanded for viewing of any part of the tree (see· Fig.
12e). The light pencil is used to bring any portion
of the tree to the top center (see Fig. 12f).
When the command.EVALUATE.is executed, the
typewriter prints the results of the fuel calculation
from 100 to 1000 miles in increments of 100 miles
followed by the indication of four dots when the fuel
requirement exceeds 400.
The total routine can now be stored as a permanent p::trt of the data base and later used in its entirety. The routine can also be returned to the
workspace for modification or to detach subroutines for other purposes. As long as the total routine remains filed in the data base, it is '. available
for inspection and application on-line.
As complex or extensive routines are constructed,
it beco:nes increasingly undesirable to display the
total structure to the operational user of the routine. In such ca,ses only the name of the routine and
the names of the insertable parameters need be displayed in the OAK~TREET workspace. The appropriate values for these parameters can then be
inserted by the user and the named routine evaluated on call. (See Figure 13 for example.)
In this example a routine called STATUS requires
the insertion of a destination code (AREA), the
type of aircraft(AC-TYPE), and number of aircraft
(NO-AC) to be flown to that destination, and the
number of originating airfields to be checked for the
availability of these aircraft (NO-AF). The routine

448

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1965

a

e

d

f

Figure 12. Steps in the on-line construction of a complex
procedure using previously on-line defi~ed and
stored subprocedures. Expansion for inspection
in (e) and (f). See text for a detailed description
nf

th .. nrnf'..i!nr..

- .............. -

t"' ... - - - - -... - .

then locates up to this number of originating airfields
with sufficient aircraft available, in order of increasing distance from the destination. It lists the airfields,
the number of aircraft available, the organizational
designation of the aircraft, the distance and time required to reach the destination.
The detailed structure of user routines such as
STATUS is examined and debugged in another display environment called DEBUG. (See Fig. 14.) In
the DEBUG function, the structure of the routine is

displayed as the second leftmost limb of a tree along
with a set of commands which permit the programmer to examine any selected portion of the routine
in question and then modify and redefine it.
A routine is brought to the top of the second
leftmost limb of the DEBUG tree by an on-line
typewriter command DEBUG (name). Any subtree
of that routine is then moved to the top of that
limb by pointing the light pencil at the node on top
of the substructure in question. The structure can

AESOP: PROTOTYPE FOR ON-LINE USER CONTROL

a

449

b
')FH:.Jl
11 F8(~ ~':71ITrs
flISTM:CE '120 f!'!
l\nAOM:
13 F86 ~'dfITr-S
OIST,'UlCF. 320 ~,,1

Tt:lr ./0. 'IP!

c
Figure 13. The use of OAK-TREET for parameter insertion
in fixed procedures.

also be displayed, in whole or in part, by itself, in
either a multinode or single node state.
By light pencil, using the command·OAK, the substructure displayed on the second leftmost branch of
the DEBUG tree is moved into the workspace of
OAK-TREET. In this position· it can be modified
using the standard OAK-TREET capabilities. The
modified structure is then moved back to the second
leftmost limb of the DEBUG environment by light
penciling the OAK-TREET command KEYBOARD.
The modified structure replaces the previous structure in the system by light penciling the redefinition
command DEFTR. The revised and redefined function can then be evaluated using the command TEST.
This procedure for on-line program development
and revision applies to all of the user and system
functions constructed in and interpreted by the
AESOP list processor, TREET (see the Appendix
for details). For example, it is possible to DEBUG
(FACTORIAL) as in Fig. 14(a), (b), (c) and (d)
or DEBUG (STATUS) as in (e) and (f). It is also
possible, for example, to DEBUG (OAK) or DEBUG (DEBUG).
In previous examples, data used in the execution

of a user's routine were inserted by means of the
user's light pencil. The results of executing the routine were printed by the on-line typewriter. However, it is also possible to have the routine call for
data directly out of the computer-based notebook
and then place the results of its execution in the
notebook. In effect, the TREET processor can be
considered one of the on-line users of the notebook-based file. The TREET processor retrieves
data from the notebook using any of the system retrieval capabilities available to the other on-line
users of the notebook. It stores data in the notebook using· the same range of storage capabilities
available to human users of the system. It uses the
same communication language.
For example, in Fig. 15, the file BLANK is organized as a scratchpad for keeping track of the input and output data derived from the evaluation of
the STATUS 1 routine. The routine STATUS 1 differs from STATUS (see Fig. 13) mainly in its use
of the notebook for its data base. Working headings
are established in BLANK for COLI through
COL4 to fix the column locations for input to
STATUS 1. Column headings are established in

450

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

1" 'Vj

TA~
·l~f\~~

A~l\1\
T " 1~ /\t\
UYT~D
"!\ A

"

~

uCI~ ~

i""

"~~

I

'rnT

a

b

c

d

e

f

Figure 14. Steps in the generation or modification of an interpreted system or user procedure. See text for
details.

1965

AESOP: PROTOTYPE FOR ON-LINE USER CONTROL

b
~uS1
CO'I',(HOS
RrPLACr

CLr

S

ARlTH2

[l

T
TACTi CAL

1

rVALuur

LOGIC2

OAMAGr

['

1

J

K[y'OA~O

HAMtS2

OAMAGt,

[

1

J

STo~r

NUM.t~'

STATUS

[

AOD-~T

\

[~AI[

1

VA~IA'~ts

ACr
WOR"r
ST nuS!

~

'Ou~Ct-LH

onT-LH

1
STATUII

1
0

'

1

Y
os
c

d

e
Figure 15. Steps in the use of the notebook for data input
to and data output from user procedures. See
text for details.

451

452

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

then select those for transfer into permanent organization files and/or reports.

COL6 through COL10 for recording outputs from
STATUS 1. STATUS 1 is constructed to include a
data call on the file BLANK in order to list input
data from COLI through COL4, as shown in Fig.
15 ( a). It also includes a data change order to insert
output data in COL6 through COL10 as in Fig.
15 (b) . Source and destination line numbers are
supplied by the on-line user in OAK-TREET, as
in Fig. 15 ( c ). Input data qre then either generated
on-line or transferred from other portions of the
notebook into BLANK, as in Fig. 15 ( d); the appropriate line numbers are inserted into STATUS 1,
as in Fig. 15 (e); and the execution of the STATUS 1 routine updates the notebook as in Fig.
15 (f).
Using this type of on-line capability, in conjunction with capabilities for moving data from one
location in the notebook to another, the human user
of AESOP can execute routines, store resulting data
in temporary notebook files, review these results, and

I--

TREET
LIST
PROCESSOR

I--

I/O
EXECUTIVE
PROGRAM

DISPLAY
CONSOLES

APPENDIX
Aesop Software Structure

The Aesop prototype is an evolutionary experimental system. As such it is incremental in growth.
To facilitate this growth an attempt has been made
to make the system modular as much as seemed
practical. There are certain elementary system functions such as data retrieval, data updating and data
display. At another level there are additional functions that are preprocessors or switching routines for
the elementary functions. As an example there is a
COpy action that will copy data from one system
file into another. It does this by using the data retrieval and then the data updating routines in
succession. Fig. 16 outlines the functional organization of the system.

~

I----~

LP
INPUT
EXECUTIVE

PUSHBUTTON
INPUTS

1965

~

-

TREE

I-L....e

PROCESSING

TREE
DISPLAY

re

r-ei

TYPEWRITER INPUTS

~

I
COPY
SWAP
ETC

TYPEWRITER
OUTPUTS

FILE AND
OBJECT
DISPLAYS

LIST
~ CHANGE

RENAME

...... RETRIEVAL
PROGRAM

~

Figure 16. Simplified schematic of the AESOP A/I software
interrelations.

The total system occupies about 35,000 computer
words. The remainder of the computer core memory is used as free storage space for list structures.
The two prime considerations in the construction of
the system were:
1. Ease of extension to permit the system to
grow as new capabilities are added to it.

2. Speed of operation to give the operator
fast response to all of his inputs.
Economy of storage has not been a prime consideration. All of the system data base is stored in the
disk unit.
TREET is a general-purpose list processing
system* written for the IBM 7030 computer at the

AESOP: PROTOTYPE FOR ON-LINE USER CONTROL

MITRE Corporation. All programs in TREET are
coded as functions. A function normally has a
unique value (which may be an arbitrarily complex
list structure), a unique name, and operates with
zero or more arguments. A function may or may
not have an effect on the system. Some functions
are used for their effect, some for their value, and
some for both. The OAK-TREET function as it
appears to the operator has commands, data classes
and data which can be used for procedure construction.
What follows is a simplified explanation of the
principal nodes of the limbs of the OAK-TREET
tree. OAK-TREET is constructed in TREET and
OAK-TREET expressions are evaluated by the
interpretive list processor.
OAK-TREET
COMMANDS
REPLACE - The effect of this command is to
place in the workspace, at the point indicated
by the light pencil, the expression, symbol, or
structure indicated by its argument.
EVALUATE - When this command is signalled by the light pencil the expression in the
workspace is evaluated.
KEYBOARD - When this command is signalled by the light pencil, the system will expect
the next command to come from the on-line
typewriter.
STORE - A copy of the expression which" is
indicated by the light pencil is maintained in
the system under the name of the· argument.
ADD-R T - The expression indicated by the
first argu~ent of this command will be added to
the workspace with the same parent as the node
indicated by the light pencil.
*See E. C." Haines, "The TREET List Processing Language." SR-133, The MITRE Corporation (April 1965).

ERASE - Removes the node (and all nodes
dependent upon it) indicated by the light pencil
from the workspace.
DATA
ARITH2 - Arithmetic Operators.
+ - Computes the sum of its arguments.
- - Computes the difference of its arguments.

x-

453

Computes the product of its arguments.
DIV - Computes the quotient of its arguments.
SUMMATION - Sums an expression while
a variable goes from some number to another in increments of one.
FACTORIAL - Computes the factorial of
its argument.
EXPONENT - Raises its first argument to
the power indicated by its second argument.
EQUALS - A predicate which checks for
equality of its two arguments.
LEQ - A predicate which is true if its first
argument is less than or equal to its second argument.
L T - A predicate which is true if its first
argument is less than its second argument.
LOGIC2 - Logical Operators.
TYPE - Types out the value of its arguments on the typewriter.
DO - A convenient way of grouping several
expressions under one node.
EVAL - Evaluates its argument which must
be an expression in Cambridge Polish
notation.
CONS - Computes the list of its second
argument augmented by its first argument.
MEM 1 - Computes the first member of its
argument which must be a list.
REM 1 - Computes the list of its argument
with its first member removed.
AND - Logical Intersection. Value is TRUE
if both arguments are not NIL.
OR - Logical union. Value is TRUE if
either (or both) argument is not NIL;
NIL otherwise.
NOT - Logical negation. Value is TRUE if
its argument is NIL.
A TOM - A predicate which asks whether
its argument is atomic.
EQUALS - A predicate which checks for
equality of its two arguments.
PROG2 - Has as its value its second argument. It is useful for attaching a different
value to a computation.
WHILE - Evaluates its second argument
while its first argument is (evaluates to)
true.

454

PROCEEDINGS -FALL JOINT COMPUTER CONFERENCE,

IF-THEN - IF (al THEN a2) The value
of this expression is the value of a2 if a1
evaluates to true; NIL otherwise.
IF-TH-ELSE - IF (a1 THEN a2 ELSE a3)
The value of this expression is the value
of a2 or a3 depending on whether a1 is
true or false.
FOR - Provides a convenient way to execute an expression (its fourth argument)
for a numerical range (between the values
of its second and third arguments) of a
variable (its first argument).
= - This is the assignment operator. It sets
its first argument (which must be a variable) to the value of its second argument.
Q - Quotes its argument.
ADL - The second argument of ADL must
be a variable which evaluates to a list.
ADL sets that variable to CONS (EVAL( argl) arg2) thus effectively adding something to a list.
CHOP - The single argument of CHOP
must be a variable which evaluates to a
list. The value of CHOP is the first member of that list. The variable is set to the
remainder of the list.
FNA - The value of FNA is the value of
its argument considered as a function applied to no arguments. Its only purpose
is to represent a function of no arguments
in tree structure.
NAME - The value of NAME is the value
of its first argument. The second argument
is ignored. Name is used to label an
expression.
NAMES
This is a set of undefined symbols which may
be used as the name under which a routine is
stored for later use.
NUMBERS
This calls up a function which nerrnits any
integer to be constructed by pointing the light
pencil to its digits in sequence.
VARIABLES
This is a set of variables which can be used
in an expression in the workspace.
DEBUG
DEBUG is a function which allows other functions to be displayed and changed on-line. It
works with any interpreted function but cannot dis-

1965

play a machine language coded function. Most of
the work of debugging a function is done within
DEBUG using the light penciL In the DEBUG display are five branches -from left to right, (1) COMMANDS, (2) name of the function to be examined,
(3) type of. function, (4) ARGS, and (5) PVARS.
VIEW ACTIONS

If any node other than one in COMMANDS limb
is light penciled, then the multiple rooted subtree
headed by that node replaces the tree structure in
the second leftmost branch to the right of the
COMMANDS branch. This feature allows one to
view all of a function that is otherwise too large to
fit on the display, to concentrate attention on a particular substructure of a function, or to select which
part of the tree will be taken into OAK-TREET
for modification.
COMMANDS
RESTORB - This restores the display to its
original· position thereby cancelling all previous
view actions.
BACKUP - This command cancels the last
previous view action (if any have been performed since the last RESTORE).
OAK - The tree on the second leftmost branch
of DEBUG, to the right of the COMMANDS
branch, is placed in the workspace of OAKTREET and the OAK-TREET function is entered. Changes to the tree may be made as
desired. DEBUG is then reentered with this
modified structure by light penciling the command KEYBOARD in OAK-TREET.
KEYBOARD - This command returns control to the on-line typewriter keyboard. If the
control has been returned to the on-line typewriter, the DEBUG function may be reentered
without starting over again by typing R ( ) .
Changes may also be made using keyboard tree
changing functions.
DEFTR - DEFTR redefines the function according to the present (modified) configuration
of the tree. (Changes made to the displayed
version are not reflected in the function itself
until this is done.)
TEST - This command initiates the processing
for execution of the function displayed. The
value of the function is printed by the on-line
typewriter.

AESOP: PROTOTYPE FOR ON-LINE USER CONTROL

BRANCH TWO
On the second leftmost branch appears the name
of the function being examined, and under it a list
of statements and location symbols. Location symbols are represented by a node containing that
symbol. Statements are represented by trees in the
same fashion as in OAK.
TYPE
The function type is normally regular type R.
Type F indicates that the arguments of the function
should not be evaluated prior to evaluating the
function itself. Type U functions allow an arbitrary
number of arguments to be specified; the arguments

455

are collected in a single list and given to the function
as one argument. A type FU function is the combination of types F and U.
ARGS
The list of
will be set as
function when
of the symbols

arguments specifies which symbols
the values of the arguments of the
it is called. The old values (if any)
are automatically saved and restored.

PVARS
The value of an argument in the program variables
list is automatically saved and restored by the
function.

STRUCTURING PROGRAMS FOR MULTIPROGRAM
TIME-SHARING ON-LINE APPLICATIONS*
Kenneth Lock
California Institute of Technology
Pasadena, California

may extend the vocabulary by declarative statements and communicate with the machine in the
extended vocabulary. Due to frequent message exchanges between the man and the machine during
on-line computing, the machine representation of
users' programs must be easy to modify at the
source language level. The technological trend towards large random access memory suggests the retention of several users' programs in core simultaneously, hence mutual memory protection must be
ensured.
This paper describes a scheme of structuring the
users' ALGOL programs in accordance with the syntactical unit of a statement. The scheme enables the
. user to make modifications to his source language
program at the statement level without recompiling
the complete program. The same structure is used
to provide the logic sequence of executing statements and to ensure memory protection among users. The next section describes the operating environment of on-line computing which justifies the
scheme presented in this paper. The following section reviews the recursive definition of a statement in
ALGOL as a syntactical unit which is used as the
unit of communication from the user to the machine as well as the building block of the program
structure in the machine. The next to the last section

INTRODUCTION
The modern art of computation has developed
from plugboard programming through the stored
machine instruction programs controlled by the
users on the consoles, then to problem-oriented symbolic programs computed in the batch mode, towards the on-line computing during which the
users have a large amount of control over their programs. The lower cost per computation and flexibilities of a large capacity high-speed computer naturally lead us to consider the provision of on-line
computing service to several users on a single
high-performance machine in a time-sharing
mode, rather than several smaller machines, one for
each individual. To maximize the efficiency of a
man-machine team working in an on-line computing mode, it is desirable to let the man choose
the language-say English-for communication and
to let the machine do the translation. This idealistic
goal is not impossible, but is currently impractical.
A good compromise is to select as the user language
a formal language such as ALGOL, FORTRAN or
LISP which has a set of explicit syntactical rules
and a small set of basic vocabulary. The user then
*The study is partly supported by National Science Foundation Grant GP4264.

457

458

PROCEEDINGS -

FALL JOINT COMPUTER CONFERENCE,

describes the statement-oriented program structure, and the final section shows the role played by
the program structure for multiprogram timeshared on-line computations.
THE ENVIRONMENT IN ON-LINE COMPUTATIONS

e

There are two modes in on-line computation:
constructing the program, and executing the program. Since the programmer is constructing the
program on-line piece by piece, it is desirable to
specify a minimum number of rules-either things
the programmer is not allowed to do, or actions the
programmer may take. In either case the programmer will not be ,burdened with remembering many
rules. When executing the program on-line, the
user must be able to exercise controls to start and
stop the computation at will. The construction of a
machine code program on an operator's console imposes a very simple rule on program modification,
namely that any single instruction may be independently changed. The execution of a program on
an operator's console provides complete. control at
the machine instruction level, namely that the program may be started or' stopped at any specific instruction, or that the program may be stepped
through. However, the direct use of an operator's
console for on-line computing was discarded on
account of the weakness in using a machine code
language for program construction and the wastefulness of computer time due to human intervention.
The introduction of high-level programming languages and batch operation eliminated the above
shortcomings and at the same time ruled out the features of on-line computation.
From the above analysis, we can say that an acceptable on-line computing system must offer each·
user an input/output device. From this device, he
may construct his program piece by piece in a
high-level programming language, in which a
statement is the building block. When executing the
program, he may control the .sequence by starting,
stopping or stepping through his program at the
statement level. For economy, the system must be
time-shared among several users to minimize system idle time. From a user's point of view, he enjoys the advantages of an operator's console and a
high-level .programming language. In this environment, the following are taken as the design specifications:

1965

1. The programming language must be easy to
learn and powerful in expressing algorithms. The
syntax of the language must allow easy extension to
cope with applications such as symbol manipulations. I ALGOL 60 2 is considered as a promising
language.
2. The source language program should not be
completely compiled into a single machine code
program such that local changes in source program
only require local modifications to its machine representation. An incremental compiler is required.
3. The communication between the user and the
machine should be machine independent. For example, the user may ask for the values of variables by
specifying their symbolic names, rather than the actuallocations in memory.
4. Several users on-line should time share the
processor, and all users' programs and data should
be retained in core whenever possible, to minimize
swapping.
5. A statement is taken as the basic unit of processing such that the user may start or stop his program at specified statements or may execute his
program one statement at a time in. a "step" mode.
A STATEMENT IN ALGOL
Since the publication of the "Revised Report on
the Algorithmic Language ALGOL 60,"2 suggestions 3
have been made to generalize it. The following generalization of the definition of a statement is introduced here to give a simpler syntax and render it
more suitable for on-line computations.
 :: = 
:: = · I 

Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19
Producer                        : Adobe Acrobat 9.0 Paper Capture Plug-in
Modify Date                     : 2008:11:17 06:46:12-08:00
Create Date                     : 2008:11:17 06:46:12-08:00
Metadata Date                   : 2008:11:17 06:46:12-08:00
Format                          : application/pdf
Document ID                     : uuid:badc6a2c-1854-4bc0-93fd-e10e3cb89a5f
Instance ID                     : uuid:f8ed0245-a677-48ad-bf1a-2a48197adc6b
Page Layout                     : SinglePage
Page Mode                       : UseOutlines
Page Count                      : 1119
EXIF Metadata provided by EXIF.tools

Navigation menu