CINDY A. COHN, ESQ.; SBN 145997
McGLASHAN & SARRAIL
Professional Corporation					
177 Bovet Road, Sixth Floor				
San Mateo, CA  94402
Tel: (415) 341-2585
Fax: (415) 341-1395

LEE TIEN, ESQ.; SBN 148216
1452 Curtis Street
Berkeley, CA 94702
Tel: (510) 525-0817

Attorneys for Plaintiff
Daniel J. Bernstein


IN THE UNITED STATES DISTRICT COURT

FOR THE NORTHERN DISTRICT OF CALIFORNIA


DANIEL J. BERNSTEIN                     )
                                        )  C 95-00582 MHP
                        Plaintiff,      )
                                        )  DECLARATION OF
v.					)  DR. ANDREW W. APPEL
                                        )
                                        )
UNITED STATES DEPARTMENT OF             )
 STATE et al.,                          )
                                        )
           Defendants.                  )
                                        )
                                        )


	I, Dr. Andrew W. Appel, hereby declare:  

	1.  	I am currently a professor of computer science at
Princeton University.  I teach courses in compilers, programming
languages, and software engineering. My research is in efficient
compilation of functional programming languages, particularly the language
"ML."
	2.  	I received the Ph.D. in Computer Science from
Carnegie-Mellon University in 1985.  I have been at Princeton University
since 1986; as Assistant Professor (1986-92), Associate Professor
(1992-95), and Professor (since 1995).  I am the Editor in Chief of ACM
Transactions on Programming Languages and Systems, the major journal in
the field of programming languages.  My work as the implementor of the
"Standard ML of New Jersey" compiler is well known.  Standard ML of New
Jersey is research software that has been distributed widely, without
charge, on the Internet since 1988.  It is now in use at over 100
universities and industrial research and development laboratories.
	3.	Publication of ideas is a fundamental part of the academic
world. Publication of ideas is emphasized in academia because it is vital
to the scientific method.  This, on a basic level, means that if you have
an idea, you toss it out into the "marketplace of ideas" and your peers
and others evaluate it, test it and discuss it.  This is how we determine
which ideas are good and which are faulty.  
	4.	For example, I mention two journal papers:
	 	 a.  "Efficient Computation of LALR(1) look-ahead sets."
F. L. DeRemer and T. Pennello, ACM Transactions on  Programming Languages
and Systems, October 1982.  
This article explains a faster computer algorithm for a certain  task,
whose utility was justified by a (claimed) relationship  between two
classes of programming language grammars.
	  	 b.  "On the (non-)Relationship between SLR(1) and
NQLALR(1) Grammars."  M. E. Bermudez and K. M.  Schimpf, ACM Transactions
on Programming Languages and Systems, April 1988.  This article  published
nearly six years later, described itself as follows:
"A popular but "not-quite" correct technique for computing  LALR(1)
look-ahead sets has been formalized by DeRemer and Pennello and dubbed
NQLALR(1).  They also claim that 
the class of SLR(1) grammars is a subset of the class of NQLALR(1)
grammars.  We prove here that no such relationship exists between those
two classes.  We do so with a counterexample that, ironically, appeared in
DeRemer and Pennello's own paper."
	5.  	Clearly, DeRemer and Penello's idea was not as good or
useful as they thought, since Bernudez and Schimpf were able to
demonstrate its flaws.  On the other hand, scientific journals are full of
good papers that do advance the state of the art.  The way they do so is
by reaching their readers, and encouraging the readers to review, test and
improve on the ideas.
	6.  	For anyone whose ideas include or involve computer code,
this publication process as part of the scientific method includes
publication of that code.  This is not only computer scientists, but
mathematicians, scientists, economists and others whose ideas are
described or demonstrated with the help of computer code.  Descriptions
limited to English or mathematics are not sufficient to appropriately
describe many things.  They are certainly not sufficient to allow someone
else to test many ideas without significant, unnecessary work.  Such
testing is required for both the scientific method and academic
advancement.
  	7.	For example, early in my career (1986) I became convinced
that a certain kind of programming language, called "functional", would be
useful for a wide variety of applications.  Up to that point, functional
languages were considered useful only in very specialized applications,
and systems that used functional languages were invariably extremely slow
(these two points are related, since many uses of computers require
speed).  
	8.	I focused my research on the speedy implementation of the
functional language ML, implemented in my "Standard ML of New Jersey"
software system.  In 1987 I published a preliminary paper (with a
colleague) describing the system.  Also in 1987, I began making the
software available, for free, to anyone who wanted to use it.  Originally
this was done by sending magnetic tapes through parcel post.
	9.  	By 1988 we realized that we could make our software
available on the Internet to anyone who wanted to "fetch" it.  We did so
in order to allow others to test and review it.  By 1990 there were over
70 academic and industrial institutions using the software, and by 1994
over 100.  It would have been very difficult to sustain this wide a
distribution using magnetic tapes, since we were not charging money for
the software.
	10.	From 1987 to the present I have published a series of
papers describing the scientific ideas and methods underlying the
software.  Any academic scientist is expected to describe his innovations
in a form where fellow scientists and the world at large can learn from
them.  However, in the "marketplace of ideas" there are many competitors,
and the scientist often has a hard time being heard.  When I published my
papers, I think that people took them seriously because they knew the
software worked well.  
	11. 	Distributing computer code on the Internet enables not
only the evaluation of ideas, but also their incremental improvement.  For
example, a compiler for the programming language is typically a large
software system, often containing hundreds of "modules," where each module
represents one or more scientific ideas and days or weeks of
implementation effort.  My "Standard ML of New Jersey" compiler, for
example, has 422 modules and represents tens of man-years of effort.  
	12.	A typical scientific idea or innovation usually involves
just a small set of these modules.  If a scientist wants to test his new
idea, involving one module, he will still have to implement all the other
modules just to demonstrate that his idea works.  By distributing the
software, I make it possible for a scientist to replace just one module
with an innovative one, and use the other modules that I provide.  
	13.  There have been several occasions since 1988 where computer
scientists at other institutions have fetched the Standard ML of New
Jersey software on the Internet, made modifications to it, and published
scientific papers describing their improvements.  The lack of freely
distributed software would constitute a significant "barrier to entry" to
scientists wanting to test innovations.
	14.	Making computer code available on the Internet is an
important avenue for academic advancement.  My own career would have been
hurt significantly if I had not been able to distribute working computer
programs.
	15.	I also put course materials up on the Internet for student
access.  Several of Princeton's computer science courses have "Web Pages",
at the address http://www.cs.princeton.edu/courses.  Attached hereto as
Exhibit "A" is a copy of this web page as of March 1, 1996.  By "clicking"
on the underlined items with a mouse you can visit the particular site for
each class.  The sites contain course readings, homework assignments and
student input, all of which can contain computer code.
	16.	I often suggest to students that they post their projects
on the Internet for peer and professor evaluation.  This allows the
students to begin competing early in the "marketplace of ideas", at a
stage where their ideas might not be "finished" enough for publication in
a scientific journal.  Journals can be very slow in publishing papers, and
the students only have a short time before they'll be on the job market.
When they apply for jobs, it is very important that the academic community
already knows of their results and has begun to make judgements of them.
	17.	Cryptography is an area of applied mathematics, just as
many areas of computer science are.  It is not, as the government implies,
merely a "product" or a "thing" to be used for commercial purposes; it is
an academic discipline which is dynamic.  This science may also produce
useful things for people, as with many sciences, but it changes and grows
with new research and insights gained from the academic process.   The
further development of this discipline requires that cryptographers be
able to share their ideas, including the sharing of their computer code.
	I declare under penalty of perjury that the foregoing is true and
correct.

Date:____________________
____________________________

ANDREW W. APPEL