1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
|
%=============================================================================
% T U G B O A T . T E X
%=============================================================================
%========================================================================
% A TeX file for the paper on APL-TeX (new version, not published)
%
% A.Hohti/O.Kanerva (University of Helsinki) April 1987
%========================================================================
%
%
% Version of August 26, 1987 at 15:00
%
%
%========================================================================
\input aplstyle % the file containing the APL definitions
%========================================================================
%
%
\magnification=\magstep1 % for weak eyes!
%
%
%========================================================================
\font\bigbf=ambx10 % for titles
\font\sltt=amsltt10 % for file contents inside text
\font\manual=manfnt at 10pt % for major METAFONT logo
\font\minual=manfnt at 9pt % for minor METAFONT logo
\input ninesize % abstract, references
%========================================================================
%
\def\METAFONT{{\manual META}\-{\manual FONT}}
\def\metafont{{\minual META}\-{\minual FONT}}
%
%========================================================================
% stylistic definitions
\def\section#1{\vskip0pt plus .1\vsize
\penalty-250\vskip0pt plus-.1\vsize\bigskip
\noindent{\bf #1.\ }\nobreak\message{#1}}
\def\abstract#1{\bigskip\centerline{\hbox{
\vbox{\hsize=4.75truein{\ninepoint \noindent ABSTRACT.\enspace#1}}}}}
\def\APL{{\sl APL}}
% this definition is from the TeXbook, Ex. 21.3 :
\def\boxit#1{\vbox{\hrule \hbox{\vrule \kern2pt
\vbox{\kern2pt#1\kern2pt}\kern2pt\vrule}\hrule}}
% A macro for making references and blocks.
%
\newdimen\refindent\newdimen\plusindent
\newdimen\refskip\newdimen\tempindent
\newdimen\extraindent
\newcount\refcount
%
% \refskip has to be set by the user! Otherwise \parindent is
% used, in accordance with \item.
%
\refcount=0
\def\ref#1:#2.-#3\par{\ninepoint % switch to nine point fonts
\advance\refcount by 1
\setbox0=\hbox{[\number\refcount]}\refindent=\wd0
\plusindent=\refskip\extraindent=\refskip
\advance\plusindent by -\refindent\tempindent=\parindent %
\parindent=0pt\par\hangindent\extraindent %
[\number\refcount]\hskip\plusindent #1:{\sl#2},#3
\parindent=\tempindent}
%
\refskip=\parindent
%
%========================================================================
% HEADER
\null
\vskip2truecm
%
\centerline{\bigbf GENERATING AN \APL\ FONT}
%
\vskip.75truecm
%
\centerline{\sl Aarno Hohti and Okko Kanerva}
%
\vskip.5truecm
%
\centerline{\sl University of Helsinki}
\vskip.5truecm
\abstract{The \APL\ language is well known for its peculiar
symbols which have inhibited the use of this language
in many programming environments. Making \APL\
documents of good quality has been difficult and
expensive. We describe here a simple way how to
use \metafont\ to generate an \APL\ font for \TeX\
by using existing font definitions as far as possible.}
\vskip.5truecm
%========================================================================
%
\section{Introduction}
This note describes an interesting exercise in using
\METAFONT\ to produce new typefaces by combining letters
from standard fonts. As we know, the \APL\ language [6] of
Kenneth Iverson has never gained the popularity it deserves
which is largely due to its strange symbol set. Indeed,
true \APL\ users require a special keyboard to support
the nonstandard but powerful operator symbols. Moreover,
putting \APL\ into print has always been a problem, and
modern low cost computerized typesetting programs do
not usually support \APL\ style. \TeX\ can be used to
produce high quality printouts for technical text,
and it would be desirable to have a possibility to
mix in \APL\ code. The companion program of
\TeX ---\METAFONT ---provides a full means for a simple generation
of an \APL\ font for \TeX, and the purpose of this
note is to inform other people about the result we
have obtained at the University of Helsinki. Let us note
that there are at least three other \APL\ fonts available
for small computer environments. Indeed, the newsletter
\APL\ {\it Quote Quad\/}\footnote{*}{{\ninepoint Newsletter of SIGAPL,
the Special Interest Group for \APL. {\it Quote Quad\/} has the same
status in the world of \APL\ as TUGboat in \TeX{nical} world.}}
is produced by using TROFF, and there
exists a Postscript \APL\ font for the Apple Laserwriter [5] and
another font for the TEXT typesetting system [2].
Consider the following usual kind of function definition in \APL:
\choosett{apl}
\begintt
@DLS_SUMSQ N;I
[1] S_I_0
[2] @GO(N<I_I+1)/0
[3] S_S+I*2
[4] @GO2
[5] @DL
\endtt
\choosett{sltt}% %@@@@
How to write in this code, providing that we have a suitable
font? The \APL\ font should represent the screen
output style of \APL\ code and obey the same laws of spacing.
Hence, it should be a typewriter-like typeface with fixed
spacing; the same approach for representing \TeX\ input was
adopted by Knuth in the {\TeX}book.
The {\it verbatim\/} macros have often been used for importing
screen or paper outputs into \TeX\ documents; some people
misuse them for an easy construction of tables etc. In
{\sltt verbatim}, the typewriter mode is entered by the control
sequence @\begintt@---that mode is ended by
@\endtt@. In the same vein, we could enter
the \APL\ mode by the control sequence @\beginapl@,
and to end it by @\endapl@. However, it is more convenient to
augment {\sltt verbatim\/} with {\sltt aplstyle\/} so that
it can be used with several different typewriter-like fonts.
(The {\it verbatim\/} macros can be found in the {\TeX}book,
p.\ 421.) Since {\sltt\char'100\/}
(the {\it at sign}) is used as the escape character inside {\it verbatim\/}
mode, our \TeX\ code might (and in fact does) look as follows:
\def\endsym{\char'134{endtt}} % just for using \endtt after \begintt
% without actually ending anything
\choosett{tentt}
\begintt
\choosett{apl}
\begintt
@@DLS_SUMSQ N;I
[1] S_I_0
[2] @@GO(N<I_I+1)/0
[3] S_S+I*2
[4] @@GO2
[5] @@DL
@endsym
\endtt
\choosett{sltt}% %@@@@
The control sequences @\DL@ and @\GO@ are not chosen arbitrarily
but follow the conventions used in Digital's VAX \APL\ interpreter [1].
As terminals usually do not support the \APL\ character set, an
alternative representation by two-letter mnemonics is provided by the
interpreter. For the most part we have adopted these mnemonics also for our
\APL\ font. Hence, as an additional bonus the user should find it
easy to combine his or her \APL\ code with normal \TeX\ code. Thus,
it is not necessary for a VAX \APL\ user to retype the definitions
of \APL\ functions in order to be able to use them in documents.
He or she only has to replace every {\it period\/} used as an
escape character in Digital's interpreter, by {\sltt\char'100}.
(There is another syntactical difference between Digital's interpreter
and \TeX's {\it verbatim\/} mode: for the interpreter
the third ordinary character after an escape character
does no longer belong to the escape sequence while \TeX\ admits
arbitrarily long control sequences. We take care of this
by changing certain {\it catcodes\/} temporarily.)
%
%
\choosett{apl}%
%
\section{The \APL\ font table}
\APL\ symbols are divided into two classes: the primitive symbols
and those obtained by overstriking two primitive ones. The overstrikes
are traditionally obtained by typing the first symbol, by using
backspace to go back one space and then typing the second symbol
{\sl over\/} the first one. However, in modern \APL\ keyboards these
double symbols are assigned to non-alphanumeric keys (for example,
to keys under the {\sltt ALT\/} key). We decided to include only the
primitive \APL\ symbols in the font table; this enabled us to include
also the lower-case letters, following modern conventions. (The original
\APL\ letters were restricted to capitals.) The comment symbol
@"@ is the only exception since it is keyed in as a double quote.
Our font is a fixed size typeface with strongly slanted letters.
Moreover, we have followed the style of best books in \APL:
all symbols should be drawn with a thin pen to get a touch of
a typewriter. (This point is clearly witnessed, for example, in [5].)
The places of some symbols are determined by the \TeX\ font tables.
For example, the hash sign {\sltt\char'043\/} is used for the
multiplication sign in VAX \APL, and hence the corresponding symbol
has the the same octal code (043) as the hash sign in \TeX.
The font table has the following form: %@@@@
%========================================================================
% table begins
%========================================================================
% This macro comes from TUGboat (I (AH) do not remember which number),
% unsuitable parts are commented out.
%
{\baselineskip=0pt \lineskip=0pt
\newdimen\vu
%
%\output={\shipout\vbox{\unvbox255\vskip0.4in}\advancepageno}
%
\setbox9=\hbox{\sl 0}
\def\spike{\hbox to 0pt{\vbox to \ht9{}}}
\def\cell#1{\hbox to 1\vu{\hfill\char'#1\hfill}\vrule}
\def\label#1{\vbox to \ht8{\vfill\hbox to 35pt{\hfill\sl '#10\hskip1em%
}\vfill}\vrule}
%
\def\seprow{\def\m{\hskip 1\vu{}\vrule height 2pt}\hbox{\m\m\m\m\m\m\m\m}}
\def\cellrow#1{\setbox8=\vbox{\seprow\hbox{\spike%
\cell{#10}\cell{#11}\cell{#12}\cell{#13}%
\cell{#14}\cell{#15}\cell{#16}\cell{#17}\hfill%
}\seprow\hrule}\hbox{\label{#1}\box8}}
%
\def\lcol#1{\hbox to 1\vu{\hfill{\sl #1}\hfill}\hskip .4pt}
\def\chw#1{\hbox{\char'#1}}
%
\def\colw#1{\vbox{\chw{#10}
\chw{#11}
\chw{#12}
\chw{#13}
\chw{#14}
\chw{#15}
\chw{#16}
\chw{#17}}}
%
\def\setw#1{\vbox{\colw{#10}
\colw{#11}
\colw{#12}
\colw{#13}
\colw{#14}
\colw{#15}
\colw{#16}
\colw{#17}}}
%
\def\getw{\setbox0=\vbox{\setw0\setw1\hbox to \wd9{}\hbox to 1em{}}%
\vu=1.625\wd0}
%
\apl\getw\bigskip % changed from \null\vfill to \bigskip
%
\centerline{\vbox{%\hbox{\hskip35pt{\sl cmapl10}\hfill}
% \vskip20pt
\hbox{\hskip35pt\lcol0\lcol1\lcol2\lcol3\lcol4\lcol5\lcol6\lcol7}
\vskip 4pt
\hbox{\hskip35pt\vbox{\hrule width 8\vu}\vbox{\hrule width 3.6pt}}
\cellrow{00}\cellrow{01}\cellrow{02}\cellrow{03}
\cellrow{04}\cellrow{05}\cellrow{06}\cellrow{07}
\cellrow{10}\cellrow{11}\cellrow{12}\cellrow{13}
\cellrow{14}\cellrow{15}\cellrow{16}\cellrow{17}}}} % removed \vfill
% % from the end
%
%========================================================================
% table ends
%========================================================================
%
\section{The necessary \METAFONT\ files}
The whole process started when the first author had a paper
containing \APL\ symbols and was disappointed with the
quality of the symbols available on the typewriter. Moreover,
the secretary who had typed the text had forgot a couple
of lines in the middle of the paper, and the correction of
such mistakes seemed to be very clumsy in comparison with
modern typesetting. Then he decided (together with the second
author) to remedy the situation by creating an \APL\ font for
\TeX\ he was using for other kinds of document. Many of the
\APL\ symbols needed were contained in standard fonts; for example,
{\it diamond\/} can be found in {\it cmsy10}. For alphanumeric
characters one could use {\it cmsltt10}. The simplest try for
a solution of the problem would be to write a list of definitions
that pick symbols from appropriate fonts. However, this brute force
method does not really work since these symbols come from
very different typefaces and, moreover, do not provide a fixed
typeface. Hence, we decided to find an easy way of producing
an \APL\ font by using \METAFONT.
As the starting point, we took the font {\it cmtex10}. This is a
fixed typeface for an extended typewriter-like font including
some Greek characters and mathematical symbols. The \METAFONT\ file
for this font, {\sltt cmtex10.mf\/} contains (as usual) a preamble
that assigns values to several global variables, and the command
{\sltt generate textset;\/}. Now the {\sl driver\/} file {\sltt textset.mf\/} %@@@@
contains the commands {\sltt mode\_setup;font\_setup;\/} %@@@@
(establishing the values of the variables for this font) and several
input files from which the \METAFONT\ descriptions of the characters are to
be found. Since some of these files treat the characters by name and
since some of the definitions have to be changed (and some dropped),
we considered it advisable to discard the driver file and to collect
the separate \METAFONT\ files, together with the preamble, to form a
large single file {\sltt cmapl10.mf}. The {\sltt .mf\/} character files
needed for {\sltt cmapl10.mf\/} are the following:
%
%
$$\vbox{\halign{{\sltt#}\hfil && \quad #\hfil\cr
%
greekl & ({\it rho, omega, alpha}) \cr
italms & ({\it iota}) \cr
romand & (roman digits) \cr
punct & (punctuation symbols) \cr
romanp & \cr
symbol & (math symbols) \cr
sym & \cr
romanu & (uppercase letters) \cr
romanl & (lowercase letters) \cr
%
}}$$
%
%
\section{Definitions}
\choosett{tentt}%
The first thing to do is to put {\sltt font\_identifier:="CMAPL";\/} %@@@@
and to set {\sltt slant:=0;\/} in the preamble. Many definitions can %@@@@
be copied verbatim from the {\sltt .mf\/} files, but some of them
need changes. The Greek {\it iota}, as given in {\sltt greekl.mf},
is strange to \APL\ style; we use instead the {\it dotless i\/}
from {\sltt italms.mf}. Moreover, we used the symbol {\it elt\/}
(element) from {\sltt sym.mf\/} instead of the Greek {\it epsilon}.
The symbols {\it del\/} and {\it delta\/} are
taken from {\sltt symbol.mf\/} (where their names are {\it large triangle\/}
and {\it large inverted triangle}). However, they are too sturdy
and too short to be placed in a proper \APL\ font. Further, {\it del\/}
must be lifted up so that it is vertically aligned with other
symbols. The modifications are very easy to do, and the modified %@@@@ , by ,and
definition is shown below.
%
%
\choosett{tentt}
\begintt
% sqrt48 was changed to 6.25 since the del symbol in APL has
% a narrower top than the original reversed triangle symbol
% rule.nib has been changed to light_rule.nib
% bot y3=-d-o has been changed to bot y3=0
% top y1=h-d has been changed to top y1=h+2o
@null
cmchar "Del";
beginchar(oct"002",16u#,asc_height#,0);
adjust_fit(0,0); pickup light_rule.nib;
top y1=h+2o; y2=y1; bot y3=0;
.5[x1,x2]=x3=good.x .5w; w:=r:=2x3; lft x1=hround(.5w-u*6.25);
draw z1--z2--z3--cycle; % stroke
labels(1,2,3); endchar;
\endtt
As can be seen from this example, pen strokes were made thinner.
Actually only one symbol was directly missing---this is the {\it quad
box}. However, it can be obtained from the above by adding one control point:
\begintt
cmchar "Quad";
beginchar(oct"001",16u#,body_height#,0);
adjust_fit(0,0); pickup light_rule.nib;
bot y1=0; y2=y1; top y3=h+2o; y4=y3;
.5[x1,x2]=x5=good.x .5w; w:=r:=2x5;
% The quad box is slightly wider than Del
lft x1=hround(.5w-u*7);
x3=x1; x4=x2;
draw z1--z2--z4--z3--cycle; % box
labels(1,2,3,4); endchar;
\endtt
After taking care of special symbols, the letters can be treated
by finding a suitable value for {\it tilt ratio\/} (slant). Indeed,
\APL\ letters are {\sl very\/} slanted. We suggest the value
1/5 for this font (the font {\it cmsl10\/} uses 1/6). One should
remember to give the command {\sltt font\_setup;\/} after setting {\sltt slant\/} %@@@@
to 1/5.
\choosett{sltt}% %@@@@
Finally, one has to make the {\it verbatim\/} macros
suitable for \APL\ style. Since {\it verbatim\/} might be
used for several different fonts in one document, we decided
to include a control sequence @\choosett@.
\choosett{tentt}
\begintt
\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
\newif\ifapl \def\aplname{apl}
\outer\def\choosett#1{\ifundefined{#1}%
\message{Undefined font(?), replaced with cmtt10}%
\let\tt=\tentt
\else
\def\tt{\expandafter\csname#1\endcsname}%
\def\ttname{#1}%
\ifx\ttname\aplname\apltrue\else\aplfalse\fi\fi}
\endtt
\choosett{sltt}%
(The control sequence @\ifundefined@ comes from the \TeX{book}, p.\ 308.)
With the help of @\choosett@, the standard @verbatim@ macros can be used
with the single change that @\ifapl@, then the @\catcode@ of @A@,\dots,@Z@
is @\other@ (12) instead of 11 for {\it letter}. Under \APL\ mode \TeX\
will then recognize our single-letter control sequences defined, e.g., by
\choosett{tentt}
\begintt
\def\A#1{\if#1B{\apl\char'174}\else % stile
\if#1M{\apl\char'004}\fi\fi} % alpha .
\endtt
\choosett{sltt}%
Unfortunately, we have redefined the standard @\L@, @\O@, @\P@ and @\S@.
The \APL\ symbols not in the font table are obtained---as usual---by
overstriking two table symbols.
\choosett{tentt}%
\begintt
\newbox\firstchar\newskip\charwidth
\def\overstrike#1#2{\setbox\firstchar=\hbox{#1}\charwidth=\wd\firstchar
#1\hskip-\charwidth#2}
\endtt
\choosett{apl}%
For example, the {\it grade up\/} and {\it grade down\/} symbols
\G U\ and \G D\ are obtained by striking the {\it stile\/} symbol
@|@ over \L D\ and \D L, respectively.
\choosett{tentt}%
\begintt
\def\G#1{\if#1U{\overstrike{\LD}{\AB}}\else % grade up
\if#1D{\overstrike{\DL}{\AB}}\fi\fi} % grade down
\endtt
Now let us take another example on \APL. The input
\begintt
\choosett{apl} % in case some other choice is in force
\setbox0=\vbox{\hsize=5.7truein
\begintt
[0] Z_A1 PROD A2;A;I;V
[1] "RETURNS THE PRODUCT OF THE POLYNOMIALS A1 AND A2
[2] "THE ARGUMENTS ARE GIVEN AS COEFFICIENT ARRAYS
[3] I_@@ROA1
[4] Z_A1@@SO.#A2
[5] LOOP:V_@@ROZ @@DM V[(@@ROI)+1]_V[1]
[6] V_@@ROZ_Z,[(@@ROI)+1]V@@RO0
[7] A_(1+-@@IOV[1])@@SO.#((@@NT(@@IO@@ROV)@@EP(1,(@@ROI)+1))/V)@@RO1
[8] Z_+/[1]A@@RV[(@@ROI)+1]Z
[9] ((@@RO@@ROZ)>@@ROI)/LOOP
@endsym
}
$$\boxit{\boxit{\box0}}$$
\centerline{\sevenrm An APL function for polynomial multiplication}
\endtt
%
gives the output
%
\choosett{apl}
\setbox0=\vbox{\hsize=5.7truein
\begintt
[0] Z_A1 PROD A2;A;I;V
[1] "RETURNS THE PRODUCT OF THE POLYNOMIALS A1 AND A2
[2] "THE ARGUMENTS ARE GIVEN AS COEFFICIENT ARRAYS
[3] I_@ROA1
[4] Z_A1@SO.#A2
[5] LOOP:V_@ROZ @DM V[(@ROI)+1]_V[1]
[6] V_@ROZ_Z,[(@ROI)+1]V@RO0
[7] A_(1+-@IOV[1])@SO.#((@NT(@IO@ROV)@EP(1,(@ROI)+1))/V)@RO1
[8] Z_+/[1]A@RV[(@ROI)+1]Z
[9] ((@RO@ROZ)>@ROI)/LOOP
\endtt
}
$$\boxit{\boxit{\box0}}$$
\centerline{\sevenrm An APL function for polynomial multiplication}
%
\section{User extension}
A modern user of a computerized typesetting facility will probably
ask if it is possible to extend or modify fonts coming with the
system. As with [5], where the font has an {\it analytic\/} and a
{\it bitmapped\/} variant, we can distinguish between the need of modifying
{\it cmapl10\/} via \METAFONT\ and modification of the pixel files.
\APL\ symbols of various ``blackness'' or ``thickness'' may be desirable.
Indeed, in [3] the user input is written with boldface \APL\ symbols
and the answers from the interpreter with thin ones. Furthermore,
certain screen previewers use specific small size pixel files, and
do not support the \APL\ font.
The modification of the font by changing the values of some global
variables in the preamble of the \METAFONT\ file is easy and can be
done by following how it is done in standard fonts such as
{\it cmbx10\/} etc. This is the recommended way, too. However, if
\METAFONT\ is not available, then one must attack the pixel files.
For direct hand editing, we use a program that converts a pixel
file into a (bitmapped) text file acceptable to any standard screen
editor, and another program reading the edited file back into
a \TeX\ pixel file. Scaling fonts down to a desired size can be
done in a similar (but automatic) manner; this facility is needed
by a previewer (written by the first author) not using runtime
scaling.
\section{References}
\bigskip
{
\ref Digital Equipment Corporation: VAX-11 \APL\ Reference Manual.-
1983.
\ref Feldberg, Ian: TEXT: Publication-Quality Characters Come
to \APL\ Graphics.- Proceedings of the 1986 \APL\ Conference,
SIGAPL, pp.\ 306--313.
\ref Gilman, Leonard, and Allen J.\ Rose: \APL, An Interactive
Approach.- John Wiley \& Sons, Inc., 1984.
\ref Grenander, Ulf: Mathematical Experiments on the Computer.-
Academic Press, 1982.
\ref Howland, John E.: Typesetting \APL\ Using a Macintosh.-
Proceedings of the 1986 \APL\ Conference, SIGAPL, pp.\ 301--305.
\ref Iverson, Kenneth: A Programming Language.- Wiley, New York, 1962.
}
\bigskip
\section{The address}
\bigskip
{\ninepoint\obeylines
\hskip\refskip University of Helsinki
\hskip\refskip Department of Mathematics
\hskip\refskip Hallituskatu 15
\hskip\refskip SF--00100 HELSINKI
\hskip\refskip FINLAND
}
\end
|