The view which we shall explore is that mathematics is the language of size, shape and order and that it is an essential part of the equipment of an intelligent citizen to understand this language. If the rules of mathematics are the rules of grammar, there is no stupidity involved when we fail to see that a mathematical truth is obvious. The rules of ordinary grammar are not obvious. They have to be learned. They are not eternal truths. They are conveniences without whose aid truths about the sorts of things in the world cannot be communicated from one person to another.
Our objective is similar, but we now have new tools: the development of computer programming has provided languages with grammars that are simpler and more tractable than that of conventional mathematical notation. Moreover, the general availability of the computer makes possible convenient and accurate experimentation with mathematical ideas.
For example, the exclusive use of decimal notation in
beginning mathematics entails the perplexing
use of approximations such as 0.333333
and
0.857143
for the fractions onethird
and sixsevenths, intermixed with exact values such as
0.046875
for the drillbitsize
three sixtyfourths. The present treatment also uses rational arithmetic, with exact
representations such as 1r3
and 6r7
and 3r64
, leading to the following computer
production of an addition table for fractions:
+ table 1r1 1r2 1r3 1r4 1r5 1r6 1r7 1r8 +++   1 1r2 1r3 1r4 1r5 1r6 1r7 1r8 +++  1 2 3r2 4r3 5r4 6r5 7r6 8r7 9r8 1r23r2 1 5r6 3r4 7r10 2r3 9r14 5r8 1r34r3 5r6 2r3 7r12 8r15 1r2 10r21 11r24 1r45r4 3r4 7r12 1r2 9r20 5r12 11r28 3r8 1r56r5 7r10 8r15 9r20 2r5 11r30 12r35 13r40 1r67r6 2r3 1r2 5r12 11r30 1r3 13r42 7r24 1r78r7 9r14 10r21 11r28 12r35 13r42 2r7 15r56 1r89r8 5r8 11r24 3r8 13r40 7r24 15r56 1r4 +++Hogben continues with:
The fact is that modern mathematics does not borrow much from antiquity. To be sure, every useful development in mathematics rests on the historical foundation of some earlier branch. At the same time, every new branch liquidates the usefulness of clumsier tools which preceded it.Although algebra, trigonometry, the use of graphs, the calculus all depend on the rules of Greek geometry, less than a dozen from the two hundred propositions of Euclid’s elements are essential to help us in understanding how to use them. The remainder are complicated ways of doing things we can do more simply when we know later branches of mathematics.
These facts make it possible to present to the layman a simple view of calculus as the study of the rate of change of a function, and to use it to provide insight into matters such as the sine and cosine functions (so useful in trigonometry and the study of mechanical and electrical vibrations), and into the exponential and its inverse the logarithm (so useful in growth and decay processes, and in matters such as the familiar musical scale).
The presentation consists largely of examples, organized in function tables and illustrated by graphs. The more analytical aspects of proofs and the grammar of mathematical notation are deferred to Chapters 11 and 10. These chapters can, however, be profitably consulted at almost any point.
An overview is provided by the Table of Contents which (when the text is used interactively on the computer) can be "clicked on with a mouse" to jump to any desired Section. Chapters 13 introduce Numbers, Computer use, and Graphs and visualization. Chapters 48 introduce many of the important tools of applied mathematics. The topics of these chapters are commonly considered to be too difficult for the layman, but are examples of Hogben's comment about "...doing things we can do more simply when we know later branches of mathematics." In particular, the treatment is greatly simplified by the use of a programming language that makes simple the use of lists (vectors) and tables (matrices).
A supplement at the end of the book contains sections that expand on the treatments in the main text. They are not essential to the main thread of development, but should be consulted on occasion (by clicking on S1A, S1B, etc.).
Although familiarity with Hogben’s book is not essential to a study of the present text, it is highly recommended to the layman, especially the brief prologue. We conclude with the continuation of the preceding quote:
For the mathematical technician these complications may provide a useful discipline. The person who wants to understand the place of mathematics in modern civilization is merely distracted and disheartened by them. What follows is for those who have been already disheartened and distracted, and have consequently forgotten what they may have learned already, or fail to see the meaning or usefulness of what they remember. So we shall begin at the very beginning.1A. The Counting (Natural) Numbers
1E. Addition and Subtraction (+ and )
1G. Multiplication or Times (*)
1I. Monomials and Polynomials (p.)
1 2 3 4
and go on forever, because every
counting number has a successor that comes next after
it. Thus:>: 1 2 >: 2 3 >: 3 4 >: 4 5 >: >: 1 3 >: >: >: >: 2 6 >: 1 2 3 4 5 6 2 3 4 5 6 7
>:
"performs an action" upon the number to which
it is applied, and is therefore analogous to an "action word" or verb in
English. In math, such a verb is also called a function (from
Latin fungi, to perform or execute).
The number to which a verb applies may be called a noun. In math it is also called an argument, in the sense of a topic or subject ("You and love are still my argument"  Shakespeare).
2 3 5 7 11
, and verbs may be applied to
such lists. For example:>: 2 3 5 7 11 3 4 6 8 12 >: >: >: 2 3 5 7 11 5 6 8 10 14A name may be assigned to a number or list by using the copula
=:
, and the name may then be used
to refer to its referent. For example:primes=: 2 3 5 7 11 >: primes 3 4 6 8 12 b=: >: primes >: >: b 5 6 8 10 14The main copulas used in English are "is" and "are". They may be used in reading mathematical expressions aloud, as in "primes are
2 3 5 7 11
"
for primes=:2 3 5 7 11
, and "first is one" for first=:1
.
Names may also be assigned to verbs. There appears to be no
English word that corresponds to >:
except, perhaps,
the command "next" used to summon a successor from a queue.
Thus:
next=: >: next 5 6 next next 5 7
next ^: 3
produces a verb that is
equivalent to applying the verb next
for three times.
Thus:primes 2 3 5 7 11 next ^: 3 primes 5 6 8 10 14 next next next primes 5 6 8 10 14 for=: ^: next for 3 primes 5 6 8 10 14 list=: 1 2 3 4 next for list primes 3 4 6 8 12 4 5 7 9 13 5 6 8 10 14 6 7 9 11 15
previous=: <:
"undoes" the work of the verb next=: >:
,
and is said to be its inverse. Thus:previous=: <: primes 2 3 5 7 11 previous primes 1 2 4 6 10 next previous primes 2 3 5 7 11 previous next primes 2 3 5 7 11 previous 3 2 previous 2 1 previous 1 0 previous 0 _1 previous _1 _2
Because 1
is the first
counting number, the zero (0
)
and the negative numbers (_1
and _2
)
shown above are not counting numbers. But they are integers,
so called because they are unbroken or intact (in=not, tag=touch), as
distinguished from the fractions (broken or fractured) referred
to in the preface.
Adopting the seeminglyinnocent notion of a verb that undoes the
effect of next
has, rather surprisingly,
led us out of the original domain
of counting numbers, and forced the adoption of a broader class,
the integers, that includes the zero and negative numbers.
In adopting further inverses we will again experience the same need to broaden our domain, to include rational numbers, and imaginary numbers. Moreover, the surprising effect of inverse processes is not confined to mathematics.
Consider the effect of reversing a movie projector to run a film backward. If the film shows a locomotive moving forward along a track, the result of reversal is unremarkable. But if it concerns the dropping of an egg on the pavement, or a dive from a divingboard, the result is a startling illustration of the important distinction between reversible and irreversible processes.
Finally, the inverse of a function can be obtained by using
iteration (for
) with the right argument _1
.
Thus:
next for _1 primes 1 2 4 6 10 >: ^: _1 primes 1 2 4 6 10 >: ^: _1 <: next for _3 _2 _1 0 1 2 3 primes _1 0 2 4 8 0 1 3 5 9 1 2 4 6 10 2 3 5 7 11 3 4 6 8 12 4 5 7 9 13 5 6 8 10 14
next for 3
is to add
3
to its argument, and next for 3 primes
is equivalent to the addition primes + 3
(using
the familiar Saint George's cross to denote the verb). Thus:
next for 3 primes 5 6 8 10 14 primes + 3 5 6 8 10 14 0 1 2 3 4 5 + 0 1 2 3 4 5 0 2 4 6 8 10 + table 0 1 2 3 4 5 +++  0 1 2 3 4 5 +++ 00 1 2 3 4 5 11 2 3 4 5 6 22 3 4 5 6 7 33 4 5 6 7 8 44 5 6 7 8 9 55 6 7 8 9 10 +++The last result is an addition table, which may be "read" as follows:
To find the result ofThe verb3 + 4
, choose the result (7
) found in the row headed by3
and the column headed by4
.
+ table
is only one example of a function
table, and other functions may be used. For example:previous for 3 primes _1 0 2 4 8 primes  3 _1 0 2 4 8  table 0 1 2 3 4 5 +++  0 1 2 3 4 5 +++ 00 _1 _2 _3 _4 _5 11 0 _1 _2 _3 _4 22 1 0 _1 _2 _3 33 2 1 0 _1 _2 44 3 2 1 0 _1 55 4 3 2 1 0 +++
2 + 5
and 5 + 2
and verify that they agree. Make similar comparisons of additions
of numbers that are similarly interchanged or commuted.+ & 3
is equivalent to "add 3
",
that is, to next for 3
. Thus:+ & 3 primes 5 6 8 10 14 primes + 3 5 6 8 10 14 with=: & + with 3 primes 5 6 8 10 14 next for 3 primes 5 6 8 10 14  with 3 primes _1 0 2 4 8 primes  3 _1 0 2 4 8  with 3 + with 3 primes 2 3 5 7 11 + with 2 primes 4 5 7 9 13 + with 2 for 0 1 2 3 4 primes 2 3 5 7 11 4 5 7 9 13 6 7 9 11 15 8 9 11 13 17 10 11 13 15 19Although the referent of
primes
is the list
2 3 5 7 11
, it would not be correct to substitute the
referent for the name in the foregoing
expression, because the resulting 0 1 2 3 4 2 3 5 7 11
would be treated as a single list argument to for
.
Thus:+ with 2 for 0 1 2 3 4 2 3 5 7 11 +&2^:0 1 2 3 4 2 3 5 7 11The lists may, however, be separated by parentheses:
+ with 2 for 0 1 2 3 4 (2 3 5 7 11) 2 3 5 7 11 4 5 7 9 13 6 7 9 11 15 8 9 11 13 17 10 11 13 15 19
(3 * 4)
is said to be the addition of four copies (“plies”) of three. Thus:
3 + 3 + 3 + 3 12 3 * 4 12 * table 0 1 2 3 4 5 6 7 8 9 10 +++  0 1 2 3 4 5 6 7 8 9 10 +++  00 0 0 0 0 0 0 0 0 0 0  10 1 2 3 4 5 6 7 8 9 10  20 2 4 6 8 10 12 14 16 18 20  30 3 6 9 12 15 18 21 24 27 30  40 4 8 12 16 20 24 28 32 36 40  50 5 10 15 20 25 30 35 40 45 50  60 6 12 18 24 30 36 42 48 54 60  70 7 14 21 28 35 42 49 56 63 70  80 8 16 24 32 40 48 56 64 72 80  90 9 18 27 36 45 54 63 72 81 90 100 10 20 30 40 50 60 70 80 90 100 +++
5
are
multiples of 5
, that is, they result
from multiplying by 5
. Verify that they progress
by "counting by fives", and check for similar properties in other
columns and rows.* table 2 3 4 5 6 6 7 8 9 10
and make
a list of the counting numbers beginning with 2
(and up to perhaps 19
)
that do not occur in it. These numbers are called primes.
*
),
so repeated multiplication is equivalent to power, or
^
. Thus,
3 ^ 4
is equivalent to 3 * 3 * 3 * 3
.
The right argument (in this case 4
)
is often called the exponent, and the
expression 3 ^ 4
is read as “three power
four” or “three to the power four”. For example:3 ^ 4 81 3*3*3*3 81 0 1 2 3 4 5 ^2 0 1 4 9 16 25 ^ table 0 1 2 3 4 5 +++  0 1 2 3 4 5 +++ 01 0 0 0 0 0 11 1 1 1 1 1 21 2 4 8 16 32 31 3 9 27 81 243 41 4 16 64 256 1024 51 5 25 125 625 3125 +++
5*4^3
is called a monomial
(one name) with the
coefficient 5
, the argument 4
,
and the exponent
3
; a sum of monomials is called
a polynomial (many names). For example:
5 * 4 ^ 3 320 (5*4^3) + (_2*4^4) + (1*4^1) _288
A polynomial in which the exponents in the
successive monomials are successive
integers beginning with zero, is said to be
in standard form, and may be expressed
using the polynomial function p.
, with the
list of coefficients as the left argument.
For example:
x=: 4 (2*x^0) + (3*x^1) + (4*x^2) 78 2 3 4 p. x 78
a=: 0 1 2 3 4 5 1 2 1 p. a (a+1) ^ 2 1 3 3 1 p. a (a+1) ^ 3 c4=: 0 1 3 3 1 + 1 3 3 1 0 c4 p. a (a+1) ^ 4
%
) "undoes" the work of
multiplication. For example:a=: 0 1 2 3 4 5 6 b=: a * 2 b 0 2 4 6 8 10 12 b % 2 0 1 2 3 4 5 6 b % 3 0 0.666667 1.33333 2 2.66667 3.33333 4Just as the inverse of addition introduced new numbers outside the domain of the counting numbers, so some of the results of this inverse function lie outside of the domain of integers. These nonintegral results (such as
0.666667
) are "decimal approximations to"
a new class of numbers, called fractions or rationals.
Just as we introduced a way to represent negative numbers, so
we introduce a representation for rationals: 2r3
for
the fraction twothirds, 4r3
for the fraction fourthirds,
etc. Thus:
1r3+1r3 2r3 a=: 0 1r2 1r3 1r4 1r5 1r6 a+a 0 1 2r3 1r2 2r5 1r3 aa 0 0 0 0 0 0 a * a 0 1r4 1r9 1r16 1r25 1r36 + table a +++   0 1r2 1r3 1r4 1r5 1r6 +++  0 0 1r2 1r3 1r4 1r5 1r6 1r21r2 1 5r6 3r4 7r10 2r3 1r31r3 5r6 2r3 7r12 8r15 1r2 1r41r4 3r4 7r12 1r2 9r20 5r12 1r51r5 7r10 8r15 9r20 2r5 11r30 1r61r6 2r3 1r2 5r12 11r30 1r3 +++  table a +++   0 1r2 1r3 1r4 1r5 1r6 +++  0 0 _1r2 _1r3 _1r4 _1r5 _1r6 1r21r2 0 1r6 1r4 3r10 1r3 1r31r3 _1r6 0 1r12 2r15 1r6 1r41r4 _1r4 _1r12 0 1r20 1r12 1r51r5 _3r10 _2r15 _1r20 0 1r30 1r61r6 _1r3 _1r6 _1r12 _1r30 0 +++ * table a +++  0 1r2 1r3 1r4 1r5 1r6 +++  00 0 0 0 0 0 1r20 1r4 1r6 1r8 1r10 1r12 1r30 1r6 1r9 1r12 1r15 1r18 1r40 1r8 1r12 1r16 1r20 1r24 1r50 1r10 1r15 1r20 1r25 1r30 1r60 1r12 1r18 1r24 1r30 1r36 +++ % table a +++  0 1r2 1r3 1r4 1r5 1r6 +++  00 0 0 0 0 0 1r2_ 1 3r2 2 5r2 3 1r3_ 2r3 1 4r3 5r3 2 1r4_ 1r2 3r4 1 5r4 3r2 1r5_ 2r5 3r5 4r5 1 6r5 1r6_ 1r3 1r2 2r3 5r6 1 +++
_
that occurs in the first column
of the division table (it denotes infinity).1 2 3 4
etc.
for=: ^:
that applies a function for a specified number of times._1 _2 _3 _4
etc. introduced
by subtraction.
for
assigned by
the expression for=: ^:
) are "utilities" that
will be utilized throughout the text,
and are collected for easy reference in Appendix 1.The pace of this text is brisk, moving on quickly to further topics as soon as the essential foundations for them are established. For example, although the Polynomials of Chapter 4 could provide a rich subject in itself, we pass on after a brief three pages to the Power Series of Chaper 5, and the Slope and Derivative of Chapter 6.
This gives a quick exposure to significant, and sometimes surprising, consequences of otherwise dull foundations. On the other hand, the reader may eventually (or immediately) want further treatments of the successive foundations: these are provided in a separate part of the book called Supplement.
In a printed text, the need to move between a given section and the corresponding supplemental section in a different part of the book might prove onerous. However, in reading the text from a computer (through a Browser), this switching back and forth is made by a click of a mouse.
For example, click on the S1K that appears to the right of the heading for this section to read the further discussion in the supplemental section S1K, and click on its heading to return.
The Find facility can be used as an index to find the occurrences of words in the text; invoke it by pressing F while holding down the control key, or select it from the Search menu.
It may therefore be soothing for many to whom mathematical expressions evoke a malaise comparable to being seasick, if they can learn to think of mathematics less as an exploit in reasoning than as an exercise in translating an unfamiliar script like Braille or the Morse code.
In this chapter we shall therefore abandon the historical approach and deal mainly with two topics: for what sort of communication do we use this highly spacesaving – now international – written language, and on what sort of signs do we rely. To emphasize that the aim of this chapter is to accustom the reader to approach mathematical rules as Exercises in economical translation, every rule in the sign language of mathematics will have an arithmetical illustration …
He continues with:
In contradistinction to common speech which deals largely with the quality of things, mathematics deals only with matters of size, order, and shape. … First let us consider what different sorts of signs go to the making of a mathematical statement. We may classify these as:
 punctuation;
 models;
 labels (e.g. 5 or x) for enumeration, measurement, and position in a sequence;
 signs for relations;
 signs for operations.
Conventional mathematical notation uses three
pairs of symbols for punctuation: ( )
and [ ]
and { }
. We will use only the
pair ( )
for this purpose, and will use the
others for operations: {
for
indexing (selection), {.
and }.
for
take and drop of a
first item, and {:
and }:
for
take and drop of a last item.
Hogben offers the following suggestions for study:
Although care has been taken to see that all the logical, or, as we ought to say, the grammatical rules are put in a continuous sequence, you must not expect that you will necessarily follow every step in the argument the first time you read it. An eminent Scottish mathematician gave a very sound piece of advice for lack of which many people have been discouraged unnecessarily. “Every mathematical book that is worth anything”, said Chrystal, “must be read backwards and forwards …”

…Always have a pen and paper, preferably squared paper, in hand …. when you read the text for serious study, and work out all the numerical examples as you read …. What you get out of the book depends on your cooperation in the business of learning.
To this we may add the advice to use the computer in the manner introduced in the next chapter, and illustrated throughout the entire text. In particular, do not hesitate to do any computer experiments that may occur to you – the worst that can happen is the appearance of an error message of some kind, after which you may continue without any special action.
2A. Introduction
A computerexecuted language such as J not only permits one to do extensive calculations quickly and accurately, it may also permit precise experimentation with mathematical ideas. In particular, J provides computation both in the rational arithmetic used in Chapter 1, and in the more familiar decimal notation.
For example, a list of rationals
such as r=: 1r5 2r5 3r5 4r5 5r5 6r5
and a list of integers a=: 5 * r
derived
from it will produce results expressed as rationals
when functions such as addition, multiplication, and
division are applied to them. Thus:
r=: 1r5 2r5 3r5 4r5 1 6r5 a=: 5 * r % table a +++  1 2 3 4 5 6 +++ 11 1r2 1r3 1r4 1r5 1r6 22 1 2r3 1r2 2r5 1r3 33 3r2 1 3r4 3r5 1r2 44 2 4r3 1 4r5 2r3 55 5r2 5r3 5r4 1 5r6 66 3 2 3r2 6r5 1 +++ % table r +++  1r5 2r5 3r5 4r5 1 6r5 +++ 1r5 1 1r2 1r3 1r4 1r5 1r6 2r5 2 1 2r3 1r2 2r5 1r3 3r5 3 3r2 1 3r4 3r5 1r2 4r5 4 2 4r3 1 4r5 2r3  1 5 5r2 5r3 5r4 1 5r6 6r5 6 3 2 3r2 6r5 1 +++
However, the list c=: 1 2 3 4 5 6
, which
is identical to a
except that it is not defined
as a rational, yields decimal approximations under division.
Thus:
c=: 1 2 3 4 5 6 % table c +++  1 2 3 4 5 6 +++ 11 0.5 0.333333 0.25 0.2 0.166667 22 1 0.666667 0.5 0.4 0.333333 33 1.5 1 0.75 0.6 0.5 44 2 1.33333 1 0.8 0.666667 55 2.5 1.66667 1.25 1 0.833333 66 3 2 1.5 1.2 1 +++
It should be noted that the inclusion of even one rational in a list makes it behave as a rational.
The function x:
applied to an argument causes
its result to be treated as a rational when other
functions are applied to it. Moreover, its inverse
causes functions applied to its results to treat it
in decimal form. Thus:
rat=: x: dec=: rat^:_1 d=: rat c d 1 2 3 4 5 6 % table d +++  1 2 3 4 5 6 +++ 11 1r2 1r3 1r4 1r5 1r6 22 1 2r3 1r2 2r5 1r3 33 3r2 1 3r4 3r5 1r2 44 2 4r3 1 4r5 2r3 55 5r2 5r3 5r4 1 5r6 66 3 2 3r2 6r5 1 +++ e=: dec d e 1 2 3 4 5 6 % table e +++  1 2 3 4 5 6 +++ 11 0.5 0.333333 0.25 0.2 0.166667 22 1 0.666667 0.5 0.4 0.333333 33 1.5 1 0.75 0.6 0.5 44 2 1.33333 1 0.8 0.666667 55 2.5 1.66667 1.25 1 0.833333 66 3 2 1.5 1.2 1 +++
% table c
is limited to six
digits after the decimal point. This is a matter
of convenience in display  the results are
actually computed to about eighteen decimal
digits, of which only the first few are shown.
The following function may be defined and used to display any number of digits:
set=: 9!:11 set 12 2 % 3 0.666666666667 dec 2r3 0.666666666667 set 6
(+ table r),.( table r) +++++  1r5 2r5 3r5 4r5 1 6r5 1r5 2r5 3r5 4r5 1 6r5 +++++ 1r52r5 3r5 4r5 1 6r5 7r51r5 0 _1r5 _2r5 _3r5 _4r5 _1 2r53r5 4r5 1 6r5 7r5 8r52r51r5 0 _1r5 _2r5 _3r5 _4r5 3r54r5 1 6r5 7r5 8r5 9r53r52r5 1r5 0 _1r5 _2r5 _3r5 4r5 1 6r5 7r5 8r5 9r5 24r53r5 2r5 1r5 0 _1r5 _2r5  16r5 7r5 8r5 9r5 2 11r5 14r5 3r5 2r5 1r5 0 _1r5 6r57r5 8r5 9r5 2 11r5 12r56r5 1 4r5 3r5 2r5 1r5 0 +++++ (* table a),(* table r) +++   1 2 3 4 5 6  +++  1  1 2 3 4 5 6   2  2 4 6 8 10 12   3  3 6 9 12 15 18   4  4 8 12 16 20 24   5  5 10 15 20 25 30   6  6 12 18 24 30 36  +++   1r5 2r5 3r5 4r5 1 6r5 +++ 1r51r25 2r25 3r25 4r25 1r5 6r25 2r52r25 4r25 6r25 8r25 2r5 12r25 3r53r25 6r25 9r25 12r25 3r5 18r25 4r54r25 8r25 12r25 16r25 4r5 24r25  1 1r5 2r5 3r5 4r5 1 6r5 6r56r25 12r25 18r25 24r25 6r5 36r25 +++Function tables may also be produced without their bordering arguments by using the operator
/
, and other functions may be
applied to such tables. For example:a %/ a 1 1r2 1r3 1r4 1r5 1r6 2 1 2r3 1r2 2r5 1r3 3 3r2 1 3r4 3r5 1r2 4 2 4r3 1 4r5 2r3 5 5r2 5r3 5r4 1 5r6 6 3 2 3r2 6r5 1 (a %/ a)*(a */ a) 1 1 1 1 1 1 4 4 4 4 4 4 9 9 9 9 9 9 16 16 16 16 16 16 25 25 25 25 25 25 36 36 36 36 36 36
i.5
produces a list of the first five nonnegative
integers, and i:5
produces a
symmetric list from _5
to 5
. Both are
convenient for exploring tables:(* table i.5),.(* table i:5) +++++  0 1 2 3 4  _5 _4 _3 _2 _1 0 1 2 3 4 5 +++++   _5 25 20 15 10 5 0 _5 _10 _15 _20 _25   _4 20 16 12 8 4 0 _4 _8 _12 _16 _20   _3 15 12 9 6 3 0 _3 _6 _9 _12 _15 00 0 0 0 0_2 10 8 6 4 2 0 _2 _4 _6 _8 _10 10 1 2 3 4_1 5 4 3 2 1 0 _1 _2 _3 _4 _5 20 2 4 6 8 0 0 0 0 0 0 0 0 0 0 0 0 30 3 6 9 12 1 _5 _4 _3 _2 _1 0 1 2 3 4 5 40 4 8 12 16 2_10 _8 _6 _4 _2 0 2 4 6 8 10    3_15 _12 _9 _6 _3 0 3 6 9 12 15    4_20 _16 _12 _8 _4 0 4 8 12 16 20    5_25 _20 _15 _10 _5 0 5 10 15 20 25 +++++
*
gives
_1
for a negative argument, 0
for
a zero argument, and 1
for a positive argument. When applied
on (that is, to the result of) multiplication it yields a table
that shows the pattern of the signs in the multiplication table more
clearly. Thus:sign=: * on=: @ (sign on *) table i:5 +++  _5 _4 _3 _2 _1 0 1 2 3 4 5 +++ _5 1 1 1 1 1 0 _1 _1 _1 _1 _1 _4 1 1 1 1 1 0 _1 _1 _1 _1 _1 _3 1 1 1 1 1 0 _1 _1 _1 _1 _1 _2 1 1 1 1 1 0 _1 _1 _1 _1 _1 _1 1 1 1 1 1 0 _1 _1 _1 _1 _1  0 0 0 0 0 0 0 0 0 0 0 0  1_1 _1 _1 _1 _1 0 1 1 1 1 1  2_1 _1 _1 _1 _1 0 1 1 1 1 1  3_1 _1 _1 _1 _1 0 1 1 1 1 1  4_1 _1 _1 _1 _1 0 1 1 1 1 1  5_1 _1 _1 _1 _1 0 1 1 1 1 1 +++The pattern of signs in the multiplication table may be made more understandable by considering the behaviour of individual rows and columns: each proceeds by "counting by" the number at its head. For example, the row headed by
3
begins with
_15
, and proceeds by steps of three through _12
and _9
to 15
. At some point it passes
through the column of zeros, and the result must therefore change
sign. Similar remarks apply to "counting by negative numbers", and
to columns.
It may be interesting to explore the behaviour of various functions by producing their tables, either before or after studying their definitions. Moreover, it may be helpful to first assign more familiar names. For example:
gcd=: +. lcm=: *. (gcd table ,. lcm table) a +++++  1 2 3 4 5 6 1 2 3 4 5 6 +++++ 11 1 1 1 1 111 2 3 4 5 6 21 2 1 2 1 222 2 6 4 10 6 31 1 3 1 1 333 6 3 12 15 6 41 2 1 4 1 244 4 12 4 20 12 51 1 1 1 5 155 10 15 20 5 30 61 2 3 2 1 666 6 6 12 30 6 +++++Composite functions can also be tabled. For example:
((lcm */ gcd) table ,. (* table)) a +++++  1 2 3 4 5 6 1 2 3 4 5 6 +++++ 11 2 3 4 5 611 2 3 4 5 6 22 4 6 8 10 1222 4 6 8 10 12 33 6 9 12 15 1833 6 9 12 15 18 44 8 12 16 20 2444 8 12 16 20 24 55 10 15 20 25 3055 10 15 20 25 30 66 12 18 24 30 3666 12 18 24 30 36 +++++
< table a ((< table ,. > table),(<: table,.= table)) a
gcd=: +.
) and the least common
multiple (lcm=: *.
).
gcd
function and
the function nd=: 2&x:
that gives the
numerator and denominator (as a twoelement list)
of a rational number.
i.
and i:
to make tables of the comparison
functions <
and >
and
=
.
<.
(minimum)
and >.
(maximum).
! table i.5
, and comment on the
results.The expression 3!5
gives the number of distinct
collections of three items that
can be chosen from a collection of five distinct
items. For example, here are the
ways of choosing three at a time from the first
five letters of the alphabet:
ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE
The function !
might therefore be
called outof
but, for reasons that will appear
later, we will call it the binomial coefficient
function, and abbreviate it as bc
. If
the zeros in the table produced in
Exercise 7 are ignored, a triangle remains. This
triangle (or some orientation of it)
is (wrongly, according to Hogben, p194) called
Pascal’s triangle.
Functions for other useful lists are easily defined:
even=: 2:*i. odd=: 1:+2:*i. pow=: 2:^i. i1=: 1:+i. i2=: 2:+i. (even,.odd,.pow,.i1,.i2) 6 0 1 1 1 2 2 3 2 2 3 4 5 4 3 4 6 7 8 4 5 8 9 16 5 6 10 11 32 6 7
The expressions 2^3
and 2^2
are defined by 2*2*2
and 2*2
, respectively, but
it is not clear what this implies
for 2^1
(multiplication with one factor?)
or for 2^0
and 2^_1
. Function tables give clues to the
pattern to be expected:
2 3 ^ table 2 3 4 5 +++  2 3 4 5 +++ 24 8 16 32 39 27 81 243 +++
The patterns progress to the right by multiplying
by the argument (2
or 3
);
conversely they progress to the left
by dividing by the argument, giving the
following results for the exponents 1
and 0
,
and for negative exponents:
2 3 ^ table 0 1 2 3 4 5 +++  0 1 2 3 4 5 +++ 21 2 4 8 16 32 31 3 9 27 81 243 +++ 2 3 ^ table i:5r1 +++   _5 _4 _3 _2 _1 0 1 2 3 4 5 +++ 2 1r32 1r16 1r8 1r4 1r2 1 2 4 8 16 32 31r243 1r81 1r27 1r9 1r3 1 3 9 27 81 243 +++ ^ table i:5r1 +++   _5 _4 _3 _2 _1 0 1 2 3 4 5 +++ _5_1r3125 1r625 _1r125 1r25 _1r5 1 _5 25 _125 625 _3125 _4_1r1024 1r256 _1r64 1r16 _1r4 1 _4 16 _64 256 _1024 _3 _1r243 1r81 _1r27 1r9 _1r3 1 _3 9 _27 81 _243 _2 _1r32 1r16 _1r8 1r4 _1r2 1 _2 4 _8 16 _32 _1 _1 1 _1 1 _1 1 _1 1 _1 1 _1  0 _ _ _ _ _ 1 0 0 0 0 0  1 1 1 1 1 1 1 1 1 1 1 1  2 1r32 1r16 1r8 1r4 1r2 1 2 4 8 16 32  3 1r243 1r81 1r27 1r9 1r3 1 3 9 27 81 243  4 1r1024 1r256 1r64 1r16 1r4 1 4 16 64 256 1024  5 1r3125 1r625 1r125 1r25 1r5 1 5 25 125 625 3125 +++
1+4+1+4+2
is said to apply
addition over the list 1 4 1 4 2
.
This sum may also be expressed by applying
the over adverb /
to the function +
,
as in +/1 4 1 4 2
. It may be applied to
other functions similarly:a=: 1 4 1 4 2 +/a 12 */a 32 >./a 4 +./a 1 *./a 4 n=: 6 b=: i1 n b 1 2 3 4 5 6 +/b 21 */b 720The
/
used in the expressions +/
and
*/
is called an adverb because it applies to a verb to produce
a related verb. In math, an adverb is also called an operator, a
rather noncommittal term adopted by the mathematician Oliver
Heaviside about a century ago.
The sum +/
and the list i.
can
be used to clarify (or at least reexpress) the
polynomial function introduced in Section 1I. Thus:
x=: 4 c=: 2 3 4 c p. x 78 x^0 1 2 1 4 16 c*x^0 1 2 2 12 64 +/c*x^0 1 2 78 +/c*x^i.3 78
In the final expression above it was essential
that the argument 3
equalled the
number of items in the list of coefficients.
This can be expressed for any coefficient
list by using the number function
#
as follows:
#c 3 i.#c 0 1 2 +/c*x^i.#c 78 d=: 1 4 6 4 1 +/d*x^i.#d 625 (d p. x),(x+1)^4 625 625
On the other hand, the use of lists and tables has provided organized presentations of these examples that make it easy to recognize properties  properties such as the commutativity of the functions plus, times, maximum, and greatest common divisor in the symmetry of their tables, as well as certain “skewsymmetries” evident in the tables for subtraction, division, and lessthan.
Careful study of function tables can provide other insights such as the “counting by a constant” that occurs in rows and columns of certain functions, leading, in particular, (in Section 2D) to an informal proof or demonstration of the necessity for the familiar behaviour of the products of signed numbers  the product of numbers of opposite signs is negative, and the product of two of the same sign is positive.
Conclusions about functions (such as the relation of prime numbers to the multiplication table, and rules for the multiplication of rational numbers) have been left to Exercises, as in those for Sections 1G and 1J. It is important to attempt these Exercises  to repeat Hogben’s advice: “What you get out of the book depends on your cooperation in the business of learning”.
Nevertheless, we will devote some attention to deriving certain relations, and will devote a separate chapter (11) to the treatment of proofs. Similarly in the matter of language (whose importance is so strongly stated by Hogben in the paragraph shown in our preface), we have introduced the necessary notation in context with no general discussion of the grammar involved, and will defer such matters to a separate chapter (10).
However, these cited chapters are relatively selfcontained, and can be consulted at any point. But first we will introduce graphing as a further tool for making certain mathematical relations evident. Concerning graphs, Hogben has this to say (p 86):
A third kind of pictorial language used in mathematics has its origin in the construction of star maps and later of earth maps in the last two centuries before the beginning of the Christian era.
Such is coordinate geometry for which the slang word is graphs. It did not come into its own before the century of Newton, whereafter it led to many discoveries.
Unlike Euclid’s geometry, it can bring the measurement of time into the picture. For instance, it exposes (Fig. 1) why and when Achilles (pp 1213) caught up with (and passed) the tortoise.
3C. Graphs versus function tables
A table of the function “twentyfive minus
the square”, or “twentyfive with minus
on the square” for each item of the
argument x=: i:5
can be prepared as follows:
f=: 25 with  on *: x=: i:5 x,:f x _5 _4 _3 _2 _1 0 1 2 3 4 5 0 9 16 21 24 25 24 21 16 9 0Study of such a function table can reveal much about the behaviour of the function: for example, from
0
at the
argument _5
,
it grows at an everdecreasing
rate to a high point at 0 25
, and then declines
at an everincreasing rate to 5 0
.
However, the characteristics of the
function can be seen more easily in a graph of
the function, produced by plotting each column
of the table as follows: starting at
an arbitrary point on a sheet of squared
paper measure a distance x
to the right (or
left, if negative), and a distance f x
upward (or downward, if negative), and mark
the resulting point. Then join adjacent points
by "lines", and points to arguments by "sticks".
Graphs can be produced quickly and accurately by the computer as follows:
load 'plot' PLOT=: 'line,stick' with plot PLOT x;f xA plot can be removed from the screen (to permit further computation) by pressing the key labelled Esc. However, anyone unfamiliar with such graphs should perhaps make a few by hand, using simple functions such as the cube (
f=: ^ with 3
), negation (f=: 
), and
the identity (f=: ]
).
Plots of polynomial functions may show
further interesting characteristics. For
example, study the plot of the following function,
use x,:fs x
or
x,.fs x
to make its table,
and compare your observations with the
remarks given below:
fs=: 0 1 0 _1r6 0 1r120 0 _1r5040 with p. x=: 1r3*i:10 PLOT x;fs x
Remarks: fs
appears to be an
oscillating function that begins at about
(3+1r7),0
; drops at a decreasing
rate to a low of _1
; rises
through 0 0
to a high of 1
; and again
drops to about (3+1r7),0
.
The result of PLOT x;f x
is said to be a
plot of f x
“against” or “versus” the
argument x
. A function can also be plotted
against another function, as illustrated
in the following exercise.
fc=: 1 0 _1r2 0 1r24 0 _1r720 0 1r40320 with p. set 5 x,.fc x PLOT x;fc x (fc x),.(fs x) PLOT (fc x);(fs x)
To anyone familiar with the functions
sine and cosine of trigonometry, it may be
evident that the functions fs
and fc
are
approximations of them.
Moreover, the
cosine and sine of a given angle are
sometimes defined as the coordinates of a
point on the unit circle of radius 1, located
at the given angle (that is, the arc length
along the circumference). It should therefore
come as no surprise that the plot of
fs
against fc
in
the preceding exercise
produced an approximate circle.
The expression d,:e
produces a tworowed table from the
lists d
and e
, and
expressions of the form c,d,:e
form multirowed tables from further lists.
Moreover, PLOT x;c,d,:e
plots each of the
lists against x
in a single graph,
providing visual comparison of the functions
represented by the lists.
PLOT x;(fs x),:fc x)
PLOT x;(fs x),:fc x3r2)
In addition to providing an overall view of a function, its graph shows the local behaviour, the slopes of the individual segments reflecting its local rates of growth and decay.
Moreover, the graph provides a direct view of the area under it, a result of considerable significance.
This will be illustrated by a
plot of a semicircle. The function cir=: 0 with o.
gives the square
root of one minus the square
of its argument. Its plot for the
argument a=: 1r5*i:5
is therefore a rough
approximation to a semicircle with a radius of one unit. Thus:
cir=: 0 with o. a=: 1r5 * i:5 a _1 _4r5 _3r5 _2r5 _1r5 0 1r5 2r5 3r5 4r5 1 PLOT a;cir a
The function sum=: +/
sums a list, and
sum cir a
therefore sums the
altitudes of the graph of the
semicircle, thus giving an approximation to its area
(except that the sum must be multiplied
by 1r5
, the common width of the
trapezoids that form the area). Thus:
sum=: +/ 1r5 * sum cir a 1.51852 2*1r5 * sum cir a 3.03705
The last result is the approximate area
of the complete circle, and is therefore an
approximation to the constant pi
.
Better approximations are provided by a larger
number of points:
b=: 1r1000 * i:1000 2 * +/1r1000 * cir b 3.14156
cir
that are not provided so
directly by its function table are
based upon the pairwise views of adjacent points;
the slopes of the line segments between
them reflect the rate of change of the
function, and the trapezoids defined by
them provide a basis for the area.
Tables of functions that apply pairwise
to their arguments can, however, provide
similar insights. Moreover, they can provide
other information (such as the rate of
change of the rate of change) not readily
grasped from a graph.
To this end we will define a pairwise
operator pw
, a sum function, a commuted
difference function, and an average or
mean function. Thus:
pw=: 1 : '2 with (u.\)' sum=: +/ dif=: ~/ mean=: sum % # y=: cir a y 0 0.6 0.8 0.917 0.98 1 0.98 0.917 0.8 0.6 0 mean y 0.69 mean pw y NB. Average heights of the trapezoids 0.3 0.7 0.86 0.95 0.99 0.99 0.95 0.86 0.7 0.3 dif pw y 0.6 0.2 0.12 0.063 0.02 _0.02 _0.063 _0.12 _0.2 _0.6We will further illustrate the pairwise operator on a function for the Fibonacci numbers, using a definition discussed under “generating functions” in [2]:
fib=: (0 1 with p. % 1 _1 _1 with p.)t. x=: 1 2 3 4 5 6 7 8 9 10 11 12 13 fib x 1 1 2 3 5 8 13 21 34 55 89 144 233 sum pw fib x 2 3 5 8 13 21 34 55 89 144 233 377 sum pw sum pw fib x 5 8 13 21 34 55 89 144 233 377 610 dif pw fib x 0 1 1 2 3 5 8 13 21 34 55 89 gm=: %/pw fib x NB. Pairwise ratios set 4 gm NB. Appproximations to golden mean 1 0.5 0.6667 0.6 0.625 0.6154 0.619 0.6176 0.6182 0.618 0.6181 0.618 gm * 1 + gm 2 0.75 1.111 0.96 1.016 0.9941 1.002 0.9991 1 0.9999 1 1
Pairwise relations such as dif pw f x
are
easily seen in a graph of f
, but
repeated use (as in dif pw dif pw f x
) are
not. They can, however,
provide interesting results when
applied to familiar functions. For example:
sqr=: ^ with 2 sqr x 1 4 9 16 25 36 49 64 81 100 121 144 169 dif pw sqr x 3 5 7 9 11 13 15 17 19 21 23 25 dif pw dif pw sqr x 2 2 2 2 2 2 2 2 2 2 2 dif pw dif pw dif pw sqr x 0 0 0 0 0 0 0 0 0 0 dp=: dif pw dp sqr x 3 5 7 9 11 13 15 17 19 21 23 25 dp dp sqr x 2 2 2 2 2 2 2 2 2 2 2 cube=: ^ with 3 cube x 1 8 27 64 125 216 343 512 729 1000 1331 1728 2197 dp cube x 7 19 37 61 91 127 169 217 271 331 397 469 dp dp cube x 12 18 24 30 36 42 48 54 60 66 72 dp dp dp cube x 6 6 6 6 6 6 6 6 6 6
p2=: 2 with ^
and the use of the pairwise quotients %/ pw
and %~/ pw
on it.Any reader puzzled by certain notations
(such as the double use of *
for both
signum and multiplication in Section 1D) may
wish to turn now to the twopage
discussion of trains, inflections, ambivalence,
and bonding in Section 10D.
x=: 4 2 3 4 p. x 78 c=: 2 3 4 c p. x 78 g=: c with p. g x 78The expression
g=: c with p.
illustrates the
fact that the function p.
can be
bonded with a list of coefficients to define a
specific polynomial function g
. Consider
the following examples:c2=: 1 2 1 c3=: 1 3 3 1 c4=: 1 4 6 4 1 y=: 0 1 2 3 4 5 f2=: c2 with p. f2 y 1 4 9 16 25 36 f3=: c3 with p. f3 y 1 8 27 64 125 216 (f2 y) * (f3 y) 1 32 243 1024 3125 7776 g=: f2 * f3 g y 1 32 243 1024 3125 7776The Taylor operator
t.
applies to a polynomial
such as f3
to produce a function
which, applied in turn to an integer i
, gives
coefficient i
of the polynomial. For
example:f3 t. 2 3 f3 t. 0 1 2 3 4 5 6 1 3 3 1 0 0 0 (f2 * f3) t. 0 1 2 3 4 5 6 1 5 10 10 5 1 0The result of
f2 f3 y
is said to be the result
of applying f2
to the result of f3
. The
corresponding function is denoted by f2 on f3
.
For example:f3 y 1 8 27 64 125 216 f2 1 8 27 64 125 216 4 81 784 4225 15876 47089 f2 f3 y 4 81 784 4225 15876 47089 h=: f2 on f3 h y 4 81 784 4225 15876 47089 h t. 0 1 2 3 4 5 6 7 8 4 12 21 22 15 6 1 0 0
g1=: f2 * f2 g2=: f2 * f2 * f2 g3=: f3  f2 g4=: f3 on g
Polynomials are important for a number of reasons:
* Because of the wide choice of coefficients available, polynomials can be defined to approximate most functions of practical interest.
* As already illustrated for sums, products, and composition of polynomials, they are closed under a number of important functions, in the sense that the resulting function is again a polynomial. These include:
SUM c with p. + d with p. DIFFERENCE c with p.  d with p. PRODUCT c with p. * d with p. COMPOSITION (c with p.) on (d with p.) SLOPE or rate of increase over an interval DERIVATIVE or limit of the slope over small intervals AGGREGATE or area under the graph of a function INTEGRAL or limit of the area for small intervals
In most of these cases, the Taylor operator can be used to obtain the coefficients of the resulting polynomial.
With increasing use of computer experimentation, it becomes important to learn to use the available tools. In particular:
a=: 1 2 3 4 5 6 ^ 3 a 1 8 27 64 125 216 0 { a 1 1 { a 8 5 { a 216 6 { a index error  6 {aA polynomial whose coefficients may be expressed as a function of their indices is called a power series. For example:
g=: ! with 3 g i. 8 1 3 3 1 0 0 0 0 (g i.8) with p. 0 1 2 3 4 5 6 1 8 27 64 125 216 343
g 0
gives the number of distinct ways that zero
things can be chosen from three
things; g 1
gives the number of ways that one thing
can be chosen, and so on, to
the case g 4
which shows that four things can be
chosen from three in no ways.
The resulting coefficients are those used in c3
in Section 4A; h=: ! with 4
gives those used in c4
, and so on.
The coefficients:0 1 0 _1r6 0 1r120 0 _1r5040 1 0 _1r2 0 1r24 0 _1r720 0 1r40320used in Section 3A can also be expressed as power series. Both lists are reciprocal factorials (such as
1r24
and 1r120
) multiplied
by _1
or 0
or 1
. The power
series function for the first is given by:
ps=: % on ! * 2 with  * _1: ^ 3: = 4:  ] ps 0 1 2 3 4 5 6 7 8 9 10r1 0 1 0 _1r6 0 1r120 0 _1r5040 0 1r362880 0
pc
for the
second list of coefficients given above.g=: ! with 3
, the coefficients
following the first four are
all zero, and the truncated series g i.4
therefore
defines a polynomial that is
equivalent to the longer list
produced by g i.8
. Thus:g i.4 1 3 3 1 (g i.4) with p. x=: 0 1 2 3 4 5 6 1 8 27 64 125 216 343 g i.8 1 3 3 1 0 0 0 0 (g i.8) with p. x 1 8 27 64 125 216 343
On the other hand, the power series:
ps=: % on ! * 2 with  * _1: ^ 3: = 4:  ]
never “terminates” with all zeros. However, the
reciprocal factorial factor (% on !
) ensures
that successive terms diminish rapidly
in magnitude, and a short series
may therefore provide a good approximation. For example:
] c12=: ps i. 12r1 0 1 0 _1r6 0 1r120 0 _1r5040 0 1r362880 0 _1r39916800 ] c10=: ps i. 10r1 0 1 0 _1r6 0 1r120 0 _1r5040 0 1r362880 set 9 dec (c12 with p. ,c10 with p.) 2 0.909296136 0.909347443However, the definition of the polynomial in Section 1I shows that successive coefficients are multiplied by successive powers of the argument
x
. For large
arguments, the growth of this factor may be
fast enough to overpower the
decrease in the coefficient. For example:dec (c12 with p. ,c10 with p.) 5 _1.1336173 0.08963018For small arguments (particularly for those less than one in magnitude), reasonably short power series of the type that includes a reciprocal factorial factor provide good approximations. For example:
dec ((ps i.20) with p.,(ps i.18) with p.) 5 _0.958933165 _0.958776369 y=: 1r5 * i:5 y _1 _4r5 _3r5 _2r5 _1r5 0 1r5 2r5 3r5 4r5 1 sin=: 1 with o. ((ps i.10) with p.,.(ps i.8) with p.,.sin) y _0.841471010 _0.841468254 _0.841470985 _0.717356093 _0.717355723 _0.717356091 _0.564642473 _0.564642446 _0.564642473 _0.389418342 _0.389418342 _0.389418342 _0.198669331 _0.198669331 _0.198669331 0 0 0 0.198669331 0.198669331 0.198669331 0.389418342 0.389418342 0.389418342 0.564642473 0.564642446 0.564642473 0.717356093 0.717355723 0.717356091 0.841471010 0.841468254 0.841470985
As illustrated by the last column, these
truncated power series are approximations
to the trigonometric sine function (on radian
arguments). Moreover, the Taylor
operator t.
can be used to produce the power
series for the sine as follows:
sin t. i. 12r1 0 1 0 _1r6 0 1r120 0 _1r5040 0 1r362880 0 _1r39916800 sign sin t. i. 12r1 0 1 0 _1 0 1 0 _1 0 1 0 _1
^
q=: (^t.i),.(1 with o.t.i),.(2 with o.t.i=: i.12x) q,.*q
However, it was possible to confine that discussion to rather elementary ideas, whereas a meaningful discussion of the uses of power series would quickly lead to more advanced and less familiar mathematical notions outside the experience of many readers.
The same is true of many topics (such as the derivative, symbolic logic, sets, and permutations), and we will leave the reader to observe the importance of topics as they are exploited in later work. In other words, some faith is expected of the reader – a belief that topics will be introduced only if they are both important and interesting.
6B. Derivatives of polynomials
c=: 4 _3 _2 1 f=: c with p. x1=: i.4 PLOT x1;f x1 x2=: 1r10*i.31 PLOT x2;f x2 x3=: 1r100 * i.301 PLOT x3;f x3
Considered as a sample of points on a continuous graph of the function (using an infinite number of points), these sloping lines are secants (cutting lines) to the continuous curve, and the slope at a point is the tangent (touching line) to the curve, which may be approximated by a secant with a small interval.
The expression ((f x+r)(f x))%r
gives the
slope of the graph of f
between arguments x
and x+r
as the ratio of
the rise (f x+r)(f x)
to the
run r
. For example:
x=: 2 r=: 1r10 ((f x+r)(f x)) % r 1.41 x=: 0 1 2 3 4 5 6 r=: 1r1000 ((f x+r)(f x)) % r _3.002 _3.999 1.004 12.007 29.01 52.013 81.016 r=: 1r10000 ((f x+r)(f x)) % r _3.0002 _3.9999 1.0004 12.001 29.001 52.001 81.002For these small values of the run, the slopes appear to be “approaching a limiting value” given approximately by the run of one tenthousandth. This limiting value is the derivative of the function
f
,
that is, the slope of the tangent.
The value r=: 0
might seem appropriate, but this
only gives the meaningless
division of a zero rise by a zero run. Thus:r=: 0 ((f x+r)(f x)) % r 0 0 0 0 0 0 0The desired result is given by the derivative operator
d.
, with f d.1
giving the
(first) derivative of f
and f d.2
giving the
second derivative (that is, the
derivative of the derivative), and so on. For example:f d.1 x _3 _4 1 12 29 52 81 f d.2 x _4 2 8 14 20 26 32 f d.1 2 3 4 5 x _3 _4 6 0 0 _4 2 6 0 0 1 8 6 0 0 12 14 6 0 0 29 20 6 0 0 52 26 6 0 0 81 32 6 0 0Moreover, the application of the Taylor operator to the resulting derivatives show them to be terminating power series, that is, ordinary polynomials:
d=: f d.1 t. i.7 d _3 _4 3 0 0 0 0 f d.2 t. i.7 _4 6 0 0 0 0 0 d with p. x _3 _4 1 12 29 52 81 d with p. d.1 x _4 2 8 14 20 26 32 f d.2 x _4 2 8 14 20 26 32The coefficients
d
of the first derivative
polynomial must bear some relation to the
coefficients c
of the original polynomial f
.
We will explore this relation by
examining their ratios, as seen in their divide table:d % table c +++   4 _3 _2 1 +++ _3_3r4 1 3r2 _3 _4 _1 4r3 2 _4  3 3r4 _1 _3r2 3  0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0 0 +++The diagonal of successive integers
1 2 3
suggests
that d
may be obtained from c
by
multiplying by successive integers, and
rotating the result one place to the left:c 4 _3 _2 1 #c NB. number of elements in c 4 i.#c 0 1 2 3 c * i.#c 0 _3 _4 3 1 . c * i.#c _3 _4 3 0 d _3 _4 3 0 0 0 0We will first test this relation on another polynomial function and then, in the following section, examine the question of why the relation holds in general:
c2=: ! with 5 i.6 c2 1 5 10 10 5 1 f2=: c2 with p. d2=: f2 d.1 t. i.5 d2 5 20 30 20 5 1 . c2 * i.#c2 5 20 30 20 5 0
f=: 4 1 3 2 with p.
is a sum of
four monomials. Thus:f=: 4 1 3 2 with p. f0=: 4 with * on (^ with 0) f1=: 1 with * on (^ with 1) f2=: 3 with * on (^ with 2) f3=: 2 with * on (^ with 3) (f0,f1,f2,:f3) x 4 4 4 4 4 4 4 0 1 2 3 4 5 6 0 3 12 27 48 75 108 0 2 16 54 128 250 432 (f0+f1+f2+f3) x 4 10 30 76 160 294 490 f x 4 10 30 76 160 294 490Any slope of a function that is a sum of functions equals the sum of the corresponding slopes of the component functions, and the derivative of a sum of functions is therefore the sum of the derivatives of the corresponding functions. For example:
(f0 d.1 , f1 d.1 , f2 d.1 ,: f3 d.1) x 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 6 12 18 24 30 36 0 6 24 54 96 150 216 (f0 d.1 + f1 d.1 + f2 d.1 + f3 d.1) x 1 13 37 73 121 181 253 f d.1 x 1 13 37 73 121 181 253Similar remarks apply to the multiplication that occurs in the monomials. For example, in
f2=: 3 with * on (^ with 2)
, the
multiplication by three
of the square function (^ with 2
) multiplies
each of its slopes by three, and
therefore multiplies its derivative by three.
It remains to determine the derivative of power
functions such as the square. If
f=: ^ with 2
, then the rise (f x+r)(f x)
is
given by the square of
x+r
(that is, (x+r)*(x+r)
) minus the square
of x
. Multiplication of
the sums gives the square of x
plus 2*x*r
plus
the square of r
, and subtraction
of the square of x
then leaves a rise of 2*x*r
plus the square of r
. The slope of
the square function (for the run r
) is then
given by dividing this sum by r
to obtain
(2*x)+r
. The derivative is then given by the
case for r=: 0
, that is, 2*x
(or,
equivalently, 2*x^1)
.
Similar calculations for the
product (x+r)*(x+r)*(x+r)
gives 3*x^2
for
the derivative of the cube ^ with 3
, and,
in general, gives n*x^(n1)
for the
derivative of ^ with n
.
The contribution of a monomial cn * x ^ n
to the derivative polynomial is
therefore the monomial n * cn * x ^ (n1)
,
which therefore appears as a
coefficient n * cn
displaced one place to
the left in the list of coefficients.
This
is all embodied in the calculation d=: 1: . c * i.#c
given in the
preceding section for the coefficients d
of the derivative polynomial.
These results will be summarized by defining
a function der
which, applied to a
list of coefficients of a polynomial, gives
the list of coefficients of the derivative
polynomial. We will illustrate its use on the
polynomial graphed in Section A, and
will graph it together with the secant slopes
of the function so that they can be
compared:
der=: 1: . ] * i. on # c=: 4 _3 _2 1 d=: der c d _3 _4 3 0 x2=: 1r10*i.31 PLOT x2 ; (c with p. ,: d with p.) x2
Note that the zero value of the graph of the derivative occurs at the argument value for which the original function reaches its low point, that is, where its graph is horizontal.
The phrase derivative of f
correctly suggests that it
is a function derived from f
, but it is only one among many (such
as the inverse) also derived from f
. The phrase
slope of f
would be more informative, and could be
distinguished from the associated secant slope of f
.
d with p.
with the result of the
function der
:d with p. d.1 t. i.8 _4 6 0 0 0 0 0 0 der d _4 6 0 0As a foretaste of the growth and oscillating functions of the next two chapters, we will also show Taylor series for the exponential and sine functions:
exp=: ^ exp t. i=: i.10r1 1 1 1r2 1r6 1r24 1r120 1r720 1r5040 1r40320 1r362880 exp d.1 t. i 1 1 1r2 1r6 1r24 1r120 1r720 1r5040 1r40320 1r362880 exp d.2 t. i 1 1 1r2 1r6 1r24 1r120 1r720 1r5040 1r40320 1r362880 sin=: 1 with o. ]s=: sin t. i.12r1 0 1 0 _1r6 0 1r120 0 _1r5040 0 1r362880 0 _1r39916800 der s 1 0 _1r2 0 1r24 0 _1r720 0 1r40320 0 _1r3628800 0 sin d.1 t. i.11r1 1 0 _1r2 0 1r24 0 _1r720 0 1r40320 0 _1r3628800 der der s 0 _1 0 1r6 0 _1r120 0 1r5040 0 _1r362880 0 0 der der der s _1 0 1r2 0 _1r24 0 1r720 0 _1r40320 0 0 0 der der der der s 0 1 0 _1r6 0 1r120 0 _1r5040 0 0 0 0 s 0 1 0 _1r6 0 1r120 0 _1r5040 0 1r362880 0 _1r39916800
f
(such as any one
of the functions of trigonometry), the
matter of the limiting value of the secant
slope ((f x+r)(f x)) % r
as r
“approaches” zero (discussed in Section 6A)
raises difficult questions that are
properly answered only by lengthy analysis
of the notion of limits. This is what
makes Calculus such a forbidding subject.
In this chapter we have skirted the issue by confining attention to polynomial functions, for which the limit of the secant slope is easily obtained. We will, however, extend these results to the many important functions that can be approximated by the power series (themselves polynomials) that were discussed in Chapter 5.
Can we be certain that the derivative of
a polynomial approximation to a
function f
is a good approximation to the
derivative of f
? Yes, but only for
functions that are “uniformly continuous”.
This is true of a wide range of functions
of practical interest, including all of
those to be treated in subsequent chapters.
The simplest case is where the rate of
growth is equal to the size  this is described
by the exponential function, denoted
here by ^
. In a graph of this function this
relation may be seen approximately in
the slopes of the secants. Thus:
x=: 1r2*i.11 x 0 1r2 1 3r2 2 5r2 3 7r2 4 9r2 5 set 4 ^ x 1 1.649 2.718 4.482 7.389 12.18 20.09 33.12 54.6 90.02 148.4 PLOT x;^x
Since a polynomial may be found that can approximate almost any function, it should be possible to find one that approximates the exponential. Consider the following:
c=: 1 1 1r2 1r6 1r24 1r120 1r720 1r5040 der=: 1:.]*i.@:# NB. Gives coeffs of derivative d=: der c d 1 1 1r2 1r6 1r24 1r120 1r720 0 dec c with p. x 1 1.649 2.718 4.481 7.381 12.13 19.85 32.23 51.81 82.22 128.6 dec d with p. x 1 1.649 2.718 4.478 7.356 12.01 19.41 30.95 48.56 74.81 113.1The two polynomials differ only in the term
1r5040*x^7
, and are therefore
nearly equal for reasonably small values of x
. Moreover,
the pattern required of
further coefficients is clear: coefficient k
must be 1%!k
. Thus:! i. 12r1 1 1 2 6 24 120 720 5040 40320 362880 3628800 39916800 a=: 1 % ! i. 12 b=: der a (a with p. ,. b with p. ,. ^) x 1 1 1 1.649 1.649 1.649 2.718 2.718 2.718 4.482 4.482 4.482 7.389 7.389 7.389 12.18 12.18 12.18 20.08 20.08 20.09 33.11 33.08 33.12 54.55 54.44 54.6 89.8 89.42 90.02 147.6 146.4 148.4
^(x+3)
and (^x) * (^3)
, and comment on the
results.
(^x) * (^x) ^(x+x) set 2 ^x % ^ x decay=: ^ on  decay x decay t. i. 10
In the dyadic use of the symbol ^
, the
expression x^e
is said to denote the base x
to the exponent e
, and the
function x with ^
may therefore be said to be an
exponential function. For example:
e=: 1r10*i.11 e 0 1r10 1r5 3r10 2r5 1r2 3r5 7r10 4r5 9r10 1 3^e 1 1.1 1.2 1.4 1.6 1.7 1.9 2.2 2.4 2.7 3 3 with ^ e 1 1.1 1.2 1.4 1.6 1.7 1.9 2.2 2.4 2.7 3 ^e 1 1.1 1.2 1.3 1.5 1.6 1.8 2 2.2 2.5 2.7 2 with ^ e 1 1.1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.9 2The exponential function
^
appears to lie
between the functions 2 with ^
and
3 with ^
. Thus:set 7 (^,.2.5 with ^,.2.75 with ^,.2.71 with ^,.2.718 with ^,.1x1 with ^) e 1 1 1 1 1 1 1.105171 1.095958 1.106454 1.104834 1.105159 1.105171 1.221403 1.201124 1.22424 1.220658 1.221377 1.221403 1.349859 1.316382 1.354565 1.348624 1.349817 1.349859 1.491825 1.4427 1.498763 1.490005 1.491763 1.491825 1.648721 1.581139 1.658312 1.646208 1.648636 1.648721 1.822119 1.732862 1.834846 1.818786 1.822005 1.822119 2.013753 1.899144 2.030172 2.009456 2.013607 2.013753 2.225541 2.081383 2.246292 2.220115 2.225356 2.225541 2.459603 2.281109 2.485418 2.452858 2.459374 2.459603 2.718282 2.5 2.75 2.71 2.718 2.718282The base that gives the exponential exactly is called Euler’s number, and is denoted in math by e and in J by
1x1
.
If b
is a function that gives the position of the bob
as a function of time, then its
speed or velocity is given by b d.1
(the rate of change
of position), and its
acceleration is given by the
second derivative b d.1 d.1
(the rate of change of
its velocity).
Moreover, the acceleration is caused by the
“restoring force” exerted by the
spring, which is proportional to its extension
as measured by the position b
of the
bob. In other words, the second
derivative b d.1
is proportional to b
.
In the simplest case b
is equal
to b d.1 d.1
, and
we seek a polynomial with
this property. Consider the coefficients of the
function fs
introduced in Section 3A:
c=: 0 1 0 _1r6 0 1r120 0 _1r5040 der c 1 0 _1r2 0 1r24 0 _1r720 0 der der c 0 _1 0 1r6 0 _1r120 0 0 der der c 0 1 0 _1r6 0 1r120 0 0The required pattern is clear: it is the same as for the exponential of Chapter 7, except that alternate coefficients are zero, and that the other coefficients alternate in sign. The function with this property is called the sine, commonly abbreviated to sin:
sin=: 1 with o. sin t. i.12 0 1 0 _1r6 0 1r120 0 _1r5040 0 1r362880 0 _1r39916800 sin t. 20 21 22 23 0 1r51090942171709440000 0 _1r25852016738884976640000
sin on (2:*])
applies the sin to the
double of its argument, and therefore produces a vibration
(or oscillation)
of twice the frequency. It is called an harmonic of
the oscillation sin
. This may be seen in a combined plot
of the two functions:x=: 1r10 * i.65 plot x;(sin x) ,: (sin on (2:*]) x)
2
in the function sin on (2:*])
by other integers to produce other harmonics, and plot the
results.cos
and some of its harmonics.
cos
against its harmonic
cos on (2:*])
.decay=: ^ on  on (] % [)
.
sin * 6 with decay
.
6
, and plot them together with their nondecaying
counterparts.9C. The method of false position
<:
) introduced
in 1D is said to be the inverse of the
successor function (>:
) because it “undoes”
its work. For example:>:1 2 3 4 5 2 3 4 5 6 <:>:1 2 3 4 5 1 2 3 4 5Conversely,
>:
is also the inverse
of <:
,
and we may simply say that the two are
inverses.
The need for inverse functions arises frequently.
For example, the heat produced
by an electric heater may be given by the
function h=: (* with 4) on sqr
,
where sqr=: *:
is the square function. In
order to determine the voltage
required to produce a desired heat, we
need the inverse v=: sqrt on (% with 4)
,
where sqrt=: %:
is the square root function. Thus:
h=: (* with 4) on sqr sqr=: *: v=: sqrt on (% with 4) sqrt=: %: h 0 1 2 3 4 5 6 7 0 4 16 36 64 100 144 196 v h 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 v 0 1 2 3 4 5 6 7 0 0.5 0.707107 0.866025 1 1.11803 1.22474 1.32288 h v 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7For many (but not all) functions, the inverse operator
INV=: ^:_1
produces the
inverse function. For example:INV=: ^:_1 <:INV 0 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 cube=: ^ with 3 cuberoot=: cube INV cube 0 1 2 3 4 5 6 7 0 1 8 27 64 125 216 343 cuberoot cube 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 ^ with 4 INV 0 1 2 3 4 5 6 7 0 1 1.18921 1.31607 1.41421 1.49535 1.56508 1.62658 ^ with 4 ^ with 4 INV 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 f=: ^ with 3 + ^ with 4 f 0 1 2 3 4 5 6 7 0 2 24 108 320 750 1512 2744 f INV 0 1 2 3 4 5 6 7 domain error  f INV 0 1 2 3 4 5 6 7
y=: 20
, we could find the value of the
inverse of f
by guessing the result x
, and
applying f
to it to guide us to an
improved guess, by either increasing or
decreasing x
. For example:y=: 20 x=: 2 f x 24 x=: x1r2 set 5 f x 8.4375 x=: x+1r4 dec f x 14.738 dec f x=: x+1r8 18.951 dec f x=: x+1r16 21.365 dec f x=: x1r32 20.131 dec f x=: x1r64 19.535 dec f x=: x+1r128 19.831 dec f x=: x+1r256 19.981 dec f x=: x+1r512 20.056 dec x 1.9043This problem is commonly stated as the equation
(f x)=y
, implying that one is
to find a value of x
such that the relation
is true. Moreover, the problem of solving
equations is commonly introduced with little
or no clue as to why the matter is important.
The function g=:  with y on f
differs
from f
in subtracting y
from the
result, and a solution of (g x)=0
is therefore
a solution of (f x)=y
. A
solution of (g x)=0
is said
to be a root of the function g
.
a
and b
such that g a
and g b
differ in sign, then a
root of g
must lie somewhere between them; the
list ab=: a,b
is said to bracket
the root. Evaluation of f
at its
midpoint m
(that is, m=: mean ab
) will either
yield zero (in which case m
is a root of g
),
or it will differ in sign from one of the two results of g ab
.
The element of ab
that differs can be used
with m
to form a tighter bracket, whose
mean will give a better approximation to the
root of g
. This process may be
repeated to obtain as close an approximation
as desired. For example:
g=:  with y on f g ab=: 1,2 _18 4 mean=: +/ % # ]m=: mean ab 1.5 g m _11.563 ]ab=: m,1{ab 1.5 2 g ab _11.563 4In general, a bracket of a root of a function
g
may be tightened by the function tighten
,
defined and illustrated below:tighten=: mean,(sign on{. on g = sign on g on mean) { ] tighten ab=: 1,2 1.5 2 tighten tighten tighten ab 1.875 2 g tighten tighten tighten ab _1.0486 4The function
tighten
may be paraphrased
as follows: Compare the sign of
the first element ({.
) of the result of g
for equality with the sign of g
on the
mean, and use the result (0
or 1
) as an
index to select from the argument; finally,
catenate the selection with the mean.
The operator ^:
can be used to apply a
function repeatedly, as illustrated below:tighten^:3 ab 1.875 2 z=: tighten^:0 1 2 3 4 5 6 7 8 9 10 11 12 ab z;g z +++  1 2 _18 4  1.5 2 _11.5625 4  1.75 2 _5.26172 4  1.875 2 _1.04858 4  1.9375 1.875 1.36501 _1.04858 1.90625 1.875 0.131333 _1.04858 1.89063 1.90625 _0.465246 0.131333 1.89844 1.90625 _0.168624 0.131333 1.90234 1.90625 _0.0190637 0.131333  1.9043 1.90234 0.0560301 _0.0190637 1.90332 1.90234 0.018457 _0.0190637 1.90283 1.90332_0.000309859 0.018457 1.90308 1.90283 0.00907195 _0.000309859 +++
x=: 2
is an appoximation to the root
of g
, then
(as suggested by the small
“triangle” with apex at the point x,g x
in the
accompanying graph) a good
correction is provided by dividing g x
by the
derivative g d.1 x
that gives the
slope of the tangent to the
graph at the point x,g x
:PLOT x;g x=: 1r10*i.22
x=: 2 (g , g d.1 , g%g d.1) x 4 44 0.0909091 x=: x  (g%g d.1) x g x 0.24124 x=: x  (g%g d.1) x g x 0.00106658 newton=: ]  g % g d.1 newton 2 1.90909 g newton 2 0.24124 newton^:(i.4) 2 2 1.90909 1.90287 1.90284 g newton^:(i.4) 2 4 0.24124 0.00106658 2.1139e_8 g newton ^:(i.3 5) 25 406230 128520 40655 12855.8 4061.08 1279.01 399.129 121.057 33.5929 7.07075 0.658183 0.00775433 1.11692e_6 2.13163e_14 3.55271e_15
Although Newton’s method converged rather rapidly for
the function g
, its
convergence is not guaranteed in general, especially
for initial guesses far from the root.
c with p.
may, in principle, be obtained by the
methods of sections 9C and 9D, but it may be difficult
to find suitable brackets or initial guesses. However,
the function roots=: > on {: on p.
may
be applied to the coefficients c
to
obtain the roots. For example:roots=: > on {: on p. c=: _1 0 1 r=: roots c r 1 _1 c p. r 0 0 d=: 6 1 _4 1 s=: roots d s 3 2 _1 d p. s 3.55271e_15 2.66454e_15 0Because of the limited precision of the computations leading to the roots
s
, the application of the polynomial
to them yields tiny results, but not exact zeros. The following
function (the product of the sign function with the magnitude)
serves to make such results more readable by "zeroing" tiny
results:zero=: ** zero d p. s 0 0 0A graph of the polynomial
1 0 1 with p.
(one plus the square) indicates that it has no roots,
because the graph never drops to zero:
e=: 1 0 1 x=: i:4 PLOT x;e p. x
Nevertheless, the function roots
applies
as follows:
roots e 0j1 0j_1 e p. roots e 0 0The root
0j1
is an example of an imaginary
number, to be discussed in Chapter 19. Its square is negative
one:0j1*0j1 _1
^.
) is the function inverse to
the exponential:
^ ^:_1 ^. ^. ^:_1 ^ ]x=: i.8 0 1 2 3 4 5 6 7 ^x 1 2.71828 7.38906 20.0855 54.5982 148.413 403.429 1096.63 ^.^x 0 1 2 3 4 5 6 7 ^.x __ 0 0.693147 1.09861 1.38629 1.60944 1.79176 1.94591 ^^.x 0 1 2 3 4 5 6 7As discussed in Section 7B, the exponential
^
is equal to e with ^
, where e=: 1x1
is Euler's number. Similarly, e with ^.
is
inverse to e with ^
, as illustrated below:
e=: 1x1 e 2.71828 e with ^ x 1 2.71828 7.38906 20.0855 54.5982 148.413 403.429 1096.63 e with ^. e with ^ x 0 1 2 3 4 5 6 7 10 with ^ x 1 10 100 1000 10000 100000 1e6 1e7 10 with ^. 10 with ^ x 0 1 2 3 4 5 6 7 10 with ^. 1 10 100 1000 10000 100000 0 1 2 3 4 5The function
10 with ^.
is the base10
logarithm, more commonly used in elementary
math than the natural log ^.
.
The logarithm is discussed further in Chapter 20.
10D. Conventional mathematical Notation
Formal grammar becomes particularly important in writing, where the reader has no recourse to interjected questions, but must extract meaning from the text alone.
Similar considerations apply in mathematics. Although the Hogben remarks cited in our preface emphasize the importance of language and grammar, we have introduced the grammar of our language J only informally, allowing us to concentrate on the mathematical notions it has been used to convey.
This informal approach has been made tolerable by limiting the writing required of a student in Exercises to imitation of expressions already used, and by providing guidance through conversation with the computer, a native speaker of the language. This chapter will address the formal grammar of J, and will also comment on the more loosely structured grammar of conventional mathematical notation.
In a written English sentence this process is so simple as to go unnoticed, although the separation by spaces is somewhat complicated by things such as hyphens and apostrophes. In oral communication it is also unnoticed, not because the breaking of a continuous stream of sound into words is simple, but because (except in the case of a foreign language) it is so deeply ingrained.
In the case of J the word formation requires some attention, although it is simple enough to have been thus far treated informally by example. The computer provides a wordformation function that may be applied to a sentence enclosed in quotes. Thus:
;: '12+27' ++++ 12+27 ++++ ;: '12+.27' ++++ 12+.27 ++++ ;: '12+0.27' ++++ 12+0.27 ++++ ;: '+/1 2 3 4' ++++ +/1 2 3 4 ++++The formal rules are stated in the J Dictionary as follows:
The alphabet is standard ASCII, comprising digits, letters (of the English alphabet), the underline (used in names and numbers), the (single) quote, and others (which include the space) to be referred to as graphics.It would clearly be confusing if it were possible to assign the nameAlternative spellings for the national use characters (which differ from country to country) are discussed under Alphabet (
a.
).Numbers are denoted by digits, the underbar (for negative signs and for infinity and minus infinity  when used alone or in pairs), the period (used for decimal points and necessarily preceded by one or more digits), the letter
e
(as in2.4e3
to signify2400
in exponential form), and the letterj
to separate the real and imaginary parts of a complex number, as in3e4j_0.56
. Also see the discussion of Constants.A numeric list or vector is denoted by a list of numbers separated by spaces. A list of ASCII characters is denoted by the list enclosed in single quotes, a pair of adjacent single quotes signifying the quote itself:
'can''t'
is the fivecharacter abbreviation of the sixcharacter word'cannot'
. The acea:
denotes the boxed empty list<$0
.Names (used for pronouns and other surrogates, and assigned referents by the copula, as in
prices=: 4.5 12
) begin with a letter and may continue with letters, underlines, and digits. A name that ends with an underline or that contains two consecutive underlines is a locative, as discussed in Section II.I.A primitive or primary may be denoted by a single graphic (such as
+
for plus) or by a graphic modified by one or more following inflections (a period or colon), as in+.
and+:
for or and nor. A primary may also be an inflected name, as ine.
ando.
for membership and pi times. A primary cannot be assigned a referent.
+
to multiplication, as in +=: *
.
A sentence is evaluated by executing
its phrases in a sequence determined by the
parsing rules of the language. For
example, in the sentence 10%3+2
, the phrase
3+2
is evaluated first to obtain a
result that is then used to divide 10
. In
summary:
,"2a
is
equivalent to (,"2)a
, not to ,"(2a)
.
Moreover, the left argument of an
adverb or conjunction is the entire verb
phrase that precedes it. Thus, in the
phrase +/ . */b
, the rightmost
adverb /
applies to the verb derived from the
phrase +/ . *
, not to the verb * .
One important consequence of these rules is that
in an unparenthesized expression
the right argument of any verb is the result of
the entire phrase to its right. The
sentence 3*p%q^r5
can therefore be read from
left to right: the overall result
is 3
times the result of the remaining phrase,
which is the quotient of p
and the
part following the %
, and so on.
Parsing proceeds by moving successive elements (or their values except in the case of proverbs and names immediately to the left of a copula) from the tail end of a queue (initially the original sentence prefixed by a left marker §) to the top of a stack, and eventually executing some eligible portion of the stack and replacing it by the result of the execution.
For example,
if a=: 1 2 3
, then b=: +/2*a
would be parsed and executed as follows:
§ b =: + / 2 * a § b =: + / 2 * 1 2 3 § b =: + / 2 * 1 2 3 § b =: + / 2 * 1 2 3 § b =: + / 2 * 1 2 3 § b =: + / 2 4 6 § b =: + / 2 4 6 § b =: + / 2 4 6 § b =: 12 § b =: 12 § 12 § 12The foregoing illustrates two points: 1) Execution of the phrase
2 * 1 2 3
is
deferred until the next element (the /
)
is transferred; had it been a conjunction, the
2
would have been its argument, and the
monad *
would have applied to 1 2 3
;
and 2) Whereas the value of the name a
moves to the stack, the name b
(because it
precedes a copula) moves unchanged, and
the pronoun b
is assigned the value 12
.
Parsing can be observed using the trace
conjunction 13!:16 (q.v.)
.
The executions in the stack are confined
to the first four elements only, and
eligibility for execution is determined
only by the class of each element (noun,
verb, etc., an unassigned name being
treated as a verb), as prescribed in the
following parse table.
The classes of the first four elements of the stack are compared with the first four columns of the table, and the first row that agrees in all four columns is selected. The bold italic elements in the row are then subjected to the action shown in the final column, and are replaced by its result. If no row is satisfied, the next element is transferred from the queue:
EDGE VERB NOUN ANY 0 Monad EDGE+AVN VERB VERB NOUN 1 Monad EDGE+AVN NOUN VERB NOUN 2 Dyad EDGE+AVN VERB+NOUN ADV ANY 3 Adverb EDGE+AVN VERB+NOUN CONJ VERB+NOUN 4 Conj EDGE+AVN VERB VERB VERB 5 Trident EDGE CAVN CAVN CAVN 6 Trident EDGE CAVN CAVN ANY 7 Bident NAME+NOUN ASGN CAVN ANY 8 Is LPAR CAVN RPAR ANY 9 Paren Legend: AVN denotes ADV+VERB+NOUN CAVN denotes CONJ+ADV+VERB+NOUN EDGE denotes MARK+ASGN+LPAR
It includes a discussion of the learnability of mathematical notation as compared with other specialized notations and with native languages, as well as the importance of such learnability.
SOME HISTORICAL VIEWS ON NOTATION Mathematicians have often noted the power and importance of notation. In Part IV of his twovolume A History of Mathematical Notations [3], Florian Cajori offers the following examples:
By relieving the brain of all unnecesary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race... By the aid of symbolism we can make transitions in reasonings almost mechanically by the eye... A. N. WhiteheadOn the other hand, Cajori comments on the paucity of publications concerning the general question of notation, and quotes De Morgan (“a close student of the history of mathematics”) as follows: Mathematical notation, like language, has grown up without much looking to, at the dictates of convenience and with the sanction of the majority.Nothing in the history of mathematics is to me so surprising or impressive as the power it has gained by its notation or language ... But in Napier’s time, when there was practically no notation, his discovery or invention [of logarithms] was accomplished by mind alone, without any aid from symbols. J.W.L. Glaisher
Some symbols, like a^{n}, ..., log n, that were used originally for only positive integral values of n stimulated intellectual experimentation when n is fractional, negative, or complex, which led to vital extensions of ideas. F. Cajori
The quantity of meaning compressed into small space by algebraic signs, is another circumstance that facilitates the reasonings we are accustomed to carry on by their aid. Charles Babbage
Symbols which initially appear to have no meaning whatever, acquire gradually, after subjection to what might be called experimenting, a lucid and precise significance. E. Mach
In Sections 740 ff, Cajori laments the lack of standardization of mathematical notation in the following excerpts:
§740 Uniformity of mathematical notations has been a dream of many mathematicians ...
§741 The admonition of history is clearly that the chance, haphazard procedure of the past will not lead to uniformity.
§746 In this book we have advanced many other instances of “muddling along” through decades, without endeavor on the part of mathematicians to get together and agree on a common sign language.
§748 In the light of the teaching of history it is clear that new forces must be brought into action in order to safeguard the future against the play of blind chance. ... We believe that this new agency will be organization and cooperation. To be sure, the experience of the past in this direction is not altogether reassuring.
However, in William Oughtred: A Great SeventeenthCentury Teacher of Mathematics [4], Cajori touches on a quite different agency that bears upon the development and teaching of mathematics  the mathematical instrument. On page 88 we have:
In that preface William Forster quotes the reply of Oughtred to the question of how he (Oughtred) had for so many years concealed his invention of the slide rule from himself (Forster) whom he had taught so many other things. The reply was:On page 93 Cajori continues with:That the true way of Art is not by Instruments, but by Demonstration: and that it is a preposterous course of vulgar Teachers, to begin with Instruments, and not with the Sciences, and so instead of Artists, to make their Scholers only doers of tricks, and as it were Iuglers ... That the vse of instruments is indeed excellent, if a man be an Artist: but contemptible being set and opposed to Art. And lastly, that he meant to commend to me, the skill of Instruments, but first he would haue me well instructed in the Sciences.
It may be claimed that there is a middle ground which more nearly represents the ideal procedure in teaching. Shall the slide rule be placed in the student’s hands at the time when he is engaged in the mastery of principles? Shall there be an alternate study of the theory of logarithms and of the slide rule  on the idea of one hand washing the other  ...Writing in the early 1900’s, Cajori could not have foreseen the advent of that universal mathematical instrument, the modern computer, nor its spawning of the development and study of the notations of programming languages.
PROGRAMMING LANGUAGES Early computers provided a small set of operations such as addition and multiplication, and were controlled by programs specifying sequences of these operations. For example, on the Harvard Mark IV [5], the program:
00 0080 10 00 0081 11 10 0082 11loaded the number contained in register 80 into the accumulator, added register 81 to it, and stored the resulting sum in register 82.
Programs were later developed to translate from languages more congenial to mathematicians into equivalent machine language programs for subsequent execution. For example, in BASIC, a language largely derived from FORTRAN (Formula Translator) [6], one might write:
Let a=3 Let b=5 Let c=(a+b)*(ab)Although a few symbols from programming languages (such as FORTRAN’s * for multiplication) have been widely adopted in math, the mathematical notation used in exposition has been largely unaffected. On the other hand, many mathematicians have been forced to learn programming languages, or to work with programmers who translate their mathematical expressions.
Moreover, many have moved to Computer Science, unwittingly following the advice of Newton, as expressed in the following excerpt from page 95 of Cajori [4]:
“I doubt not but that there shall be in convenient time, brought to light many precepts which may tend to ye perfecting of Navigation, and the help and safety of such whose Vocations doe inforce them to commit their lives and estates in the vast Ocean to the providence of God.” Thus farr that very good and judicious man Mr. Oughtred. I will add, that if instead of sending the Observations of Seamen to able Mathematicians at Land, the Land would send able Mathematicians to Sea, it would signify much more to the improvemt of Navigation and safety of Mens lives and estates on that element.The need to make translation manageable has led to the development of languages with simple and precisely defined grammars, that is, rules for wordformation and parsing. Although mathematical notation undoubtedly possesses parsing rules, they are rather loose, sometimes contradictory, and seldom clearly stated. It is perhaps significant that Cajori’s History makes no mention of the matter of grammar.
The proliferation of programming languages shows no more uniformity than mathematics. Nevertheless, programming languages do bring a different perspective. Not only do they provide precisely defined grammars, but they address a much wider range of applications than do any one of the notations treated by Cajori. Moreover, they sometimes adopt notions from advanced mathematics and apply them fruitfully at elementary levels.
For example, the essential notion of Heaviside’s operators [7] (introduced in the treatment of differential equations) is the application of an entity (called an operator) which, applied to a function, produces a related function; a notion more familiar in the form f ' for the derivative of f. In APL [8], an operator (denoted by /) is used to provide reduction over a vector argument. The sum over a vector is obtained as follows:
v<2 7 1 8 2 8 +/v 28The operator applies to any function, such as
*
(times), >.
(max),
or <.
(min), and
may therefore obviate the use of many symbols
such as the capital Greek sigma and pi for summation and
product:(*/v),(>./v),(<./v) 1792 8 1Because of their application to a broad range of topics, their strict grammar, and their strict interpretation, programming languages can provide new insights into mathematical notation. We begin with the matter of symbols.
ECONOMY OF SYMBOLS Far from introducing further symbols in the manner of Oughtred’s list (of some 150) shown in §181 of Cajori [3], programming languages are largely confined to a standard alphabet (ASCII) whose special characters are limited to the following familiar list:
= < > _ + *  % ^ $ ~  . : , ; # ! / \ [ ] { } " ' ` @ & ?This economy is achieved in part by adopting from mathematics the use of reserved words such as sin, cos, e, and log  reserved from use as names for variables. Further economies are implicit in notions that have been used in mathematics but not systematically exploited. We will illustrate them by their use in J, a language derived from APL.
TRAINS Some writers, such as March and Wolf
in their Calculus [10], denote the
function that is the sum of functions f
and g
by f+g
. This notion can be exploited
more generally, including constructs such
as f+g*h
for f
added to the product of
g
and h
. For example,
using %
for divide,
and #
for number of elements:
mean=: +/ % # NB. Arithmetic mean or average mean 1 2 3 4 5 3 com=: ]  +/ % # NB. ] is the identity function com 1 2 3 4 5 NB. Center on mean _2 _1 0 1 2Nonmathematical functions can be used in a train. For example, the function
;
(which boxes each argument and catenates the boxed
results) can be used to
display results for convenient comparison:(];mean;com;]  +/ % #) 1 2 3 4 5 +++++ 1 2 3 4 53_2 _1 0 1 2_2 _1 0 1 2 +++++
INFLECTION A symbol formed by appending a dot
or colon to a given function
symbol will be said to be inflected, and such
inflection is used to assign related
symbols to related functions, providing names
that therefore have some mnemonic
value. For example, in his Laws of Thought [9],
George Boole used 1
and 0
to
denote true and false, and used the symbols for
times and plus to denote the
logical functions and and or.
The analogy between
times and and was helpful, and
the conflict with the normal use of the symbols
was of no concern within the
confines of logic. In a wider context it is a
concern, and J uses *
. for and and +
.
for or. Similarly, =
is used as a truthfunction
(like < and >), whereas =: is used
as a copula (to assign a referent to a name), and <.
is used for lesserof (that is,
minimum). Thus:
p=: 0 0 1 1 [ q=: 0 1 0 1 (p *. q);(p +. q);(p + q);(p < q);(p <. q) ++++++ 0 0 0 10 1 1 10 1 1 20 1 0 00 0 0 1 ++++++AMBIVALENCE In the expression
ab
the symbol 
denotes subtraction (a function of two arguments),
whereas in b
it
denotes negation, a different (albeit
related) function of one argument. This
ambivalence (a “binding power” of either
two or one) introduces no confusion in
conventional notation, and could be
exploited for other functions:a=: 2 b=: 5 (ab),(b) NB. Subtraction and Negation (0b) _3 _5 (a%b),(%b) NB. Division and Reciprocal (1%b) 0.4 0.2 (a^b),(^b) NB. Power and Exponential (e^b) 32 148.413 (a^.b),(^.b) NB. Basea log, Natural log (e^.b) 2.32193 1.60944BONDS In their Combinatory Logic [11], Curry and Feys developed a set of combinators, which we will treat as operators in the sense of Heaviside. One of these bonds a function of two arguments (such as
^
) to one of its arguments (such
as 3
) to produce a function of one argument
(the cube), an operation that has
come to be called Currying in honour of its author.
For example:cube=: ^ with 3 log10=: 10 with ^. (cube ; log10) 10 50 100 200 +++ 1000 125000 1e6 8e61 1.69897 2 2.30103 +++Conclusion. Taken together, trains, inflection, ambivalence, and bonds provide highly mnemonic representations for a host of functions. Their advantages can be fully appreciated only by careful comparison with the alternatives now used in mathematics.
A UNIFORM NOTATION Cajori recognizes the importance of individual invention, but warns against individual efforts to impose a uniform system:
§727 Invention of Symbols.  Whenever the source is known, it is found to have been individualistic  the conscious suggestion of one mind.Comments about the hope of grateful remembrance appear unkind; perhaps Oughtred invented symbols to clarify his own thinking, and as a tool for teaching. Nevertheless, Cajori’s main point is sound  any attempt to impose an individual system is vain and hopeless.§742 This confusion is not due to the absence of individual efforts to introduce order. Many an enthusiast has proposed a system of notation for some particular branch of mathematics, with the hope, perhaps, that contemporary and succeeding workers in the same field would hasten to adopt his symbols and hold the originator in grateful remembrance. Oughtred in the seventeenth century used over one hundred and fifty signs for elementary mathematics  algebra, geometry, and trigonometry.
However, such a system can be used as a basis for the discussion of mathematical notation: the precision provided (or enforced) by programming languages and their execution can identify lacunas, ambiguities, and other areas of potential confusion in conventional notation.
Discussion here will focus on such matters, and may suggest remedies. Discussion will also center on a single programming language (J), for the following reasons:
* As indicated in my A Personal View of APL [12], it was designed “as a simple, precise, executable notation for the teaching of a wide range of subjects”.
* It has received some use in mathematical exposition.
* Its simple grammar is defined by a tenbyfour table in terms of six parts of speech.
* It uses vectors, matrices, and higherdimensional arrays, based on the unifying concept of rank or order in Tensor Calculus [13].
* In addition to the bond operator already discussed, it embraces some fifteen or more operators (such as dual, Taylor, and Hypergeometric) of interest in mathematics.
GRAMMAR
The evaluation, interpretation, or execution
of the mathematical expression (or
sentence) log(a+b)*(ab)
is carried out by
identifying the primitive operations
(such as addition) and then performing
them in an appropriate order. The process
begins with wordformation (identification
of the individual words: log
, left
parenthesis, a
, +
, b
, etc.), and continues
with parsing the sequence of words
according to a formal or informal grammar
based upon the parts of speech
(variables, functions, punctuation, etc.).
In natural language, the wordformation is largely unnoticed, except in listening to an unfamiliar language. In programming languages, the wordformation and parsing are commonly lumped together under the term syntax.
In J, the word
formation may be made explicit by applying
the wordformation function (;:
) to a
quoted character string:
;:'log(a+b)*(ab)' +++++++++++++ log(a+b)*(ab) +++++++++++++
Although programming languages adopt the term grammar from English, most use terms for the parts of speech adopted from mathematics. J, on the other hand, uses terms from English, avoiding certain ambiguities (such as the use of operator both as a synonym for function in elementary math, and as an operator in the sense of Heaviside), and providing additional distinctions.
The following fragment exemplifies all of the parts of speech:
sqr=: ^ with 2 area=: sqr 4 +/\4#3 3 6 9 12 PARTS OF SPEECH MATH TERMS ENGLISH (J) TERMS Constants 2 3 4 Nouns Variable area Pronoun Functions ^ # Verbs Function sqr Proverb Operators / \ Adverbs Operator with Conjunction ( ) Punctuation =: Copula
The choice of English terms is based on the analogy between the “action words” verb and function (which derives from the Latin fungio, to perform). Moreover, adverb describes the action of an operator in applying to a verb to produce a verb, and conjunction reflects the use of the copulative conjunction and to produce a verb such as "run and hide". The word proverb (in the sense used here) is pronounced with a long o.
The term variable merits further comment.
The expressions 2+2
and 2*2
and
2^2
yield identical results, only for the
specific argument 2
, but 2*2
and sqr 2
are identical for any argument. Such an
identity is usually expressed by using a
variable argument in the form x*x
and sqr x
.
However, the use of the term
variable for the pronoun pi
in the
expression pi=: 3.14159
is jarring, since
there is no intent to allow its value
to vary. Although the term pronoun is not
commonly used in mathematics, Hogben
uses it (p 432) to refer to the symbol e
used for Euler’s number.
SYNONYMS, ANONYMS, AND SUBSTITUTION A synonym of a word is a word with a similar, but not necessarily equivalent, meaning. Synonyms that occur in mathematical notation can be misleading if they are carelessly interpreted.
For example, division may be expressed as a%b or a/b. Are they equivalent? If so, are a%b%c and and a/b/c and a%b/c and a/b%c equivalent? Or do they differ in order of execution?
It may be said that “one would never write such forms”, but if not, why not? Are there any rules that forbid it, and how is the beginning student to know? Notice that a/ 3/4 would probably be accepted, if only because the form 3/4 no longer denotes division: it is the commonlyaccepted form of the constant threequarters.
Synonyms for multiplication raise further questions. For example, are the following expressions all executed in the same order: a%b*c and a%bc and a/b*c and 3/4c?
The term anonym (a nameless person) will be used for any nameless entity: in the product abc, the matrix product M N (or MN), and the power x^{n}, the functions applied are unnamed.
Although this anonymity
normally goes unremarked, it has
consequences. As remarked in the section on
Programming Languages, the
notation +/v
can replace the Greek sigma for summation and, more
generally, f/
can replace other such
symbols, but only for functions that
are not anonymous.
Moreover, the strict use of the anonymous form abc forbids the use of multicharacter mnemonic names such as age and area in elementary algebra, giving the unfortunate impression that algebra is about letters rather than about the use of names.
Multicharacter names that end in digits do get used: a2 is interpreted as a single name rather than as the product of a and 2, although 2a is interpreted as two times a.
An important general notion is the validity of substituting equals for equals, and it is particularly valuable in mathematics. Nevertheless, conventional mathematical notation does not always permit it.
For example, using the anonymous form xy:
x=: 3 [ y=: 4 (x*y),(3*4),(xy),(34) NB. xy is NOT a J expression 12 12 12 34HIERARCHY AND ORDER OF EXECUTION The polynomial expression 3x+4x^{2}+2x^{4} evaluates correctly only under the convention that the power function is executed before multiplication, and multiplication before addition. This heirarchy is adopted throughout mathematics, and in almost all programming languages.
In APL and J there is no heirarchy, the
need for parentheses in polynomials (as in
many other expressions) being obviated
by the use of vectors, as in +/3 4 2*x^1 2 4
,
and in +/c*x^e
.
The expression 12345
may be interpreted
differently according to how it is
parenthesized: the following interpretations
are used in mathematics and in J:
(((12)3)4)5 NB. Math 1(2(3(45))) NB. J
The math result is the first element
less the sum of the rest (i.e., 1(2+3+4+5)
), and
the J result is the alternating sum (1+3+5)(2+4)
.
Since f/v
inserts the
function f
between elements of v
,
the J expression /v
gives the alternating
sum, a commonlyneeded result that is expressed in
math as the sum over
(Greek sigma) (1)^{i} v
.
Similarly,
the alternating product is expressed as %/v
.
Heirarchy introduces ambiguities, particularly for synonyms and anonyms, which may or may not be accorded the same positions: are a/bc and a/b*c equivalent?
CONSTANTS
Mathematics reserves various symbols for constants,
such as e (for Euler’s
number), and the Greek pi. Programming languages
use “scientific” notation of the form
3e6
to denote 3*10^6
. Producing no conflict,
this has also been widely adopted in
mathematics.
Notations such as 3j4
(a complex
number) and 1r2
(a rational)
and 1r2p1
could be similarly adopted for many
convenient constants, as
illustrated by the following examples from J:
2p1 1r2p1 1r4p_1 NB. Multiples of powers of pi 6.28319 1.5708 0.0795775 3x2 2b101 NB. 3 times e sqared,101 in base 2 22.1672 5 2ad30 NB. Complex number, magnitude 2 at 30 deg. 1.73205j1
NEUTRAL OR IDENTITY ELEMENT In Section 2.6 of Concrete Mathematics [2], Graham, Knuth and Patashnik state that “... a product of no factors is conventionally taken to be 1 (just as a sum of no terms is conventionally 0).”
These choices are not
mere conventions, and may be
based more firmly on the neutral or identity
element of a function, that is, a value
n
(when it exists) such
that n f x
yields x
for any argument x
. For example, 0
is
the neutral of +
, and 1
is the neutral
of *
.
Using k{.v
and k}.v
to take and drop the first k
elements
of a vector v
, we may write identities
concerning sums and products over partitions of a vector:
v=: 2 3 5 7 11 k=: 3 (k{.v);(k}.v);((+/k{.v) + (+/k}.v));(+/v) +++++ 2 3 57 112828 +++++ (*/v);((*/k{.v) * (*/k}.v)) +++ 23102310 +++
The indicated identities hold as well
for the case k=: 0
(for
which k{.v
is an
empty vector), but only because the
results of +/i.0
and */i.0
are defined to
be the neutrals of +
and *
.
The neutral
of minimum (<./i.0
) is infinity, in
effect defining it.
EMPTY CASES IN DEFINITION In a definition of the form x(x1)...(xm+1) (As in Eq 2.43 of Concrete Mathematics [2] together with the note: m factors for m not equal to 0), the notation does not show explicitly what happens in the case of m=0.
In vector notation, this definition
(of the falling factorial function)
becomes */xi.m
,
correctly including the case
of the empty vector that occurs when m
is zero.
Moreover, */x+s*i.m
covers a
host of cases; in particular, the
values _1
and 0
and 1
for s
give the falling
factorial, the ordinary power function, and the
rising factorial. Noninteger values
of s
are equally useful in the finite calculus.
Because the factors in the expression change in
steps like the stope in a mine, these
functions are collectively called stopes, and the
fit operator !.
provides them in
expressions of the form ^!.s
.
Furthermore, p.!.s
provides the corresponding
polynomial functions (in which the power function ^
used in the ordinary
polynomial is replaced by the stope function ^!.s
).
Compare the use of ^!.s
with the notations discussed in the introductory
Note on Notation in [2].
DUALS It is a familiar observation that almost every stated task t is preceded by some preparation p, and followed by restoration (the inverse of p). This is sometimes expressed as performing “t under p”, as in “surgery under anesthetic”.
In mathematics, the terms dual and duality are sometimes used, as in “or is the dual of and under (or with respect to) negation”, and “the duality of and and or”.
The use of under is ubiquitous in mathematics and related disciplines, but often cloaked in other terms, such as similarity in the product S^{1} A S, where S is a matrix of eigenvectors that maps to “natural” coordinates.
We will express “t under p” as
t under p
, using the “under”
operator under=: &.
. Thus:
under=: &. 0 0 1 1 +. under . 0 1 0 1 NB. Or under not is and 0 0 0 1 3 + under ^. 4 NB. Times as add under natural log 12 3 – under (10 with ^.) 4 NB. Division using base10 log 0.75 (<2 1 3) + under p. (<1 0 4) NB. Add polynomials +++ 23.68614 1 0.813859 +++
This last example uses the function p.
to map
the polynomial roots given by the
arguments to corresponding coefficients,
which are then added and mapped back
to give the equivalent multiplier 2
and roots 3.68614 1 0.813859
.
LEARNABILITY OF LANGUAGE The learnability of a discipline depends strongly on the learnability of the language used. In teaching mathematics we should therefore consider the learnability of the language used, and compare it with that of specialized languages (such as musical notation), and of our native tongue.
For example, a child can quickly learn to transcribe the following tune from musical notation to a piano, perhaps by merely watching it done by an adult:
 O O  O O O  O  
Further refinements such as the indication of time, sharps, flats, and phrasing may be added and learned with equal facility.
Two matters warrant further comment:
* A less graphic presentation of the notes (such as the sequence e c a c e c) would be more difficult for a beginner to learn. Moreover, the phenomenal rate of transcription by a pianist could hardly be achieved using parallel lists of named notes. Admittedly, this speed is due in part to the musical coherence of the piece transcribed, just as our speed in reading a meaningful English sentence is much greater than in reading gibberish.
* The ease of learning musical notation claimed in this example is due in part to the tool used; in this case the piano. The linear arrangement of the piano keys mirrors the vertical movement over the musical staff, and proves much easier to understand than the multiple strings (and absence of frets) on a violin.
With the computer and programming languages, mathematics has newlyacquired tools, and its notation should be reviewed in the light of them. The computer may, in effect, be used as a patient, precise, and knowledgeable “native speaker” of mathematical notation.
In The Language Instinct [14], Pinker has treated the phenomenal learnability of natural languages as an inborn instinct in children, and in The Symbolic Species [15], Deacon has presented the coevolution of language and the human brain as an explanation of this miracle of an inborn facility.
In Deacon’s view, language has developed under evolutionary pressure to have, at least for elementary purposes, a uniform structure that is easily learned, particularly by infants. For example, the pattern in the sentences:
Hold the doll Drop the ball
applies uniformly to other nouns and verbs. Moreover, these patterns extend to simple compound sentences and tenses:
Drop the ball and hold the doll I dropped the ball and holded the doll
Of course a child never hears a phrase such as “holded the doll”, but uniformly applies the pattern used in “dropped”, finally adopting the anomalous forms of strong verbs such as hold. According to Pinker, this adoption occurs at a time quite independent of badgering by adults (No, dear, you held the doll).
However, in contrast to our native tongue, mathematical notation is neither uniform nor easy to learn. Consider the following examples, expressed first in English:
(base 10) logarithm of 3 log10 3 negation of 3 3 factorial 3 3! (Order of noun and verb reversed) (# of combs of) 3 above 5 in large parentheses 3 to the power 5 3 superscript 5 3 beside 5 (3,5) (Parens mandatory for vectors) this is 3 Let t=3 (Singleletter names only) that is 5 Let u=5 this plus that t+u (is) this lessthan that t<u Usually treated as assertions, (is) this equalto that t=u rather than as more usable truth functions that return results
A review of earlier sections will suggest other examples of nonuniform notation that further increase the difficulties for a beginner.
Experienced mathematicians may well accept such nonuniformities as obvious or natural. Moreover, they will be properly concerned about the continued readability of older literature if any change were to be made. However, this is not a new problem, and there are known ways in which such change may be addressed.
Are such nonuniformities essential to mathematics, or are they simply relics of the “...chance, haphazard procedure of the past...” cited by Cajori, and therefore replacable? To illustrate the possibilities, we will repeat the foregoing examples together with equivalent expressions in two distinctly different programming languages:
English Math J C logarithm of 3 log10 3 10^.3 log10(3.0) negation of 3 3 3 3 factorial 3 3! !3 fact(3) (# of combs of) 3 above 5 in parens 3!5 outof(3,5) 3 to the power 5 3 superscript 5 3^5 pow(3.0,5.0) 3 beside 5 (3,5) 3,5 this is 3 Let t=3 this=: 3 this=3 that is 5 Let u=5 that=: 5 that=5 this plus that t+u this+that this+that (is) this equalto that t=u this=that this==that
A PROGRAM FOR MATHEMATICAL NOTATION We cannot expect our mathematical notation to be as accessible as our native language. In particular, it can never enjoy the everpresent opportunity to experiment and to provide immediate and gratifying results that is enjoyed by our native language, at least not for very young children.
However, we might make mathematical notation more accessible by:
* Complementing existing notation by notation possessing a simple and uniform grammar and using only familiar and readily available symbols.
* Making this complementary notation executable on a computer, so that a student might easily obtain gratifying results that encourage exploration.
* Providing material to guide exploration in a restrained manner that does not stifle the thrill of independent discovery.
EXPLORATION We now present examples of using the computer in exploring a few functions and operators, as well as in exploring the grammar of the notation used. We invite mathematicians to ponder the question of how they might be presented in conventional notation.
Exp 1 From the functions: +  * ^ ! +. *. ^. < = > >:
select a
few for exploration by entering expressions such as:
16 + 36 52 16 +. 36 4
Observe the results and attempt to identify and name the functions used; but do not spend too much time, since the next exploration provides better tools.
Exp 2 Enter x=: 0 1 2 3 4 5
and
y=: x
and x +/ y
to produce an
addition table. Then enter expressions for further
tables to identify each of the
functions listed in Exp 1. Which of the functions
appear to be commutative?
Exp 3 Define and experiment with functions
such as f=: +/*/
and
g=: </+.=/
Exp 4 Repeat explorations 2 and 3 using the following symmetric lists, and comment on any interesting characteristics of the resulting tables:
]y=: x=: 0 1 2 3 4 5 6  3 _3 _2 _1 0 1 2 3Exp 5 Evaluate the familiar sum over (denoted by capital Greek sigma)
c_{i}x^{i}
at x=0
,
assuming that (as is often stated) zero to the
power zero is undefined.
Exp 6 Use the results of the following expressions (and similar experiments) to state in English (and in conventional math notation) the relations among the tables generated:
2 3 5 7;11 13 x (/ ; ~/) y x (</ ; =/ ; g ; <:/) y
Exp 7 Enter expressions of the following forms,
and then describe in English (and
in mathematical notation) the effects of ~
,
and state what part of speech it is in J:
x (/ ; ~/) y x (!/ ; !~/) y x (*./ ; *.~/) y
Exp 8 Examine the production of tables of Stirling numbers by the expression
S1=: %.S2=: : (^/%.^!._1/)~ i.10r1 (%. N is matrix inverse, and M %. N is “matrix divide”)
Exp 9 To explore the rhematic (wordformation) rules
of J, enter expressions
such as:
;: 'TABLE=: x (*./ ; *.~/) y'
Exp 10 Enter the expressions trace=: 13 !: 16
and 9 trace 1
to
invoke the tracing of subsequent expressions, that
is, to show their detailed
parsing and execution. Then enter TABLE=: x (*./ ; *.~/) y
and other expressions from earlier explorations.
Tracing may be switched off by
entering 9 trace 0
.
The parsing table from Section C illuminates the annotations provided by the trace.
Exp 11 For further simple explorations use Exercises from Chapter 1 of Iverson [16].
SUMMARY In this section we have attempted to:
* Use the strict grammar and precise interpretation of programming languages to illuminate some of the vagaries of a mathematical notation that has, as De Morgan said, “...grown up without much looking to, at the dictates of convenience ...”
* Indicate the potentially benign effects on the learnability of mathematical notation that can be provided by simple uniform notation combined with the opportunity for precise and independent exploration using computers.
* Sketch the possibilities of adopting some complementary and nonconflicting notation executable on computers.
Although proofs are an important (and many might say the essential) part of mathematics, we will spend little time on them in this book.
In introducing his book Proofs and Refutations: The Logic of Mathematical Discovery [17], Imre Lakatos makes the following point:
Its modest aim is to elaborate the point that informal, quasiempirical, mathematics does not grow through a monotonous increase of the number of indubitably established theorems but through the incessant improvement of guesses [Italics added] by speculation and criticism, by the logic of proofs and refutations.The main point of the present book is to exploit new tools for the exploration of relations and patterns, that can be used by both mathematicians and laymen to find those guesses that are amenable to, and worthy of, proof.
We recommend the reading of Lakatos at any point: his book is highly entertaining, instructive, and readable by any layman with the patience to look up the meanings of a small number of words such as polyhedron, polygon, and convex. The following quotes from Lakatos reflect his view of the importance of guessing:
Just send me the theorems, then I shall find the proofs. ChrysippusI have had my results for a long time, but I do not yet know how I am to arrive at them. Gauss
If only I had the theorems! Then I should find the proofs easily enough. Riemann
I hope that now all of you see that proofs, even though they may not prove, certainly do help to improve our conjecture. Lakatos
On the other hand those who, because of the usual deductive presentation of mathematics, come to believe that the path of discovery is from axioms and/or definitions to proofs and theorems, may completely forget about the possibility and importance of naive guessing. Lakatos
We cite two further comments on the effects of excessive formalism in the teaching of mathematics:
Plato’s exaltation of mathematics as an august and mysterious ritual had its roots in dark superstitions which troubled, and fanciful puerilities which entranced, people who were living through the childhood of civilization, when even the cleverest people could not clearly distinguish the difference between saying that 13 is a ‘prime’ number and saying that 13 is an unlucky number.
His influence on education has spread a veil of mystery over mathematics and helped to preserve the queer freemasonry of the Pythagorean brotherhoods, whose members were put to death for revealing secrets now printed in school books.
It reflects no discredit on anyone if this veil of mystery makes the subject distasteful. Plato’s great achievement was to invent a religion which satisfies the emotional needs of people who are out of harmony with their social environment, and just too intelligent or too individualistic to seek sanctuary in the cruder forms of animism. Hogben
… the author has the notion that mathematical formulas have their “secret life,” behind their Golemlike appearance. To bring out the “secret life” of mathematical relations by an occasional narrative digression does not appear to him a profanation of the sacred rituals of formal analysis but merely an attempt to a more integrated way of understanding The reader who has to struggle through a maze of “lemmas,” “corollaries,” and “theorems,” can easily get lost in formalistic details, to the detriment of the essential elements of the results obtained.
By keeping his mind on the principal points he gains in depth, although he may lose in details. The loss is not serious, however, since any reader equipped with the elementary tools of algebra and calculus can easily interpolate the missing details.
It is a wellknown experience that the only truly enjoyable and profitable way of studying mathematics is the method of “filling in details” by one’s own efforts. Lanczos[18]
However, it is important to remember that in addition to the mathematics that is important to the intelligent layman, there is another mathematics, as expressed by G.H. Hardy in his A Mathematician’s Apology [19]:
There are then two mathematics. There is the real mathematics of the real mathematicians, and there is what I will call ‘trivial’ mathematics, for want of a better word. The trivial mathematics may be justified by arguments which would appeal to Hogben, or other writers of his school, but there is no such defence for the real mathematics, which must be justified as an art if it can be justified at all. There is nothing in the least paradoxical or unusual in this view, which is that held commonly by mathematicians.
odd
from Section 2E:odd=: 1:+2:*i. odd 6 1 3 5 7 9 11 +/odd 6 36 (+/ odd 1),(+/odd 2),(+/odd 3),(+/odd 4),(+/odd 5) 1 4 9 16 25It appears that the sum of the first
n
odd integers
is n*n
, a relation we will
demonstrate by using a few facts illustrated by the following:. odd 6 11 9 7 5 3 1 (+/odd 6),(+/.odd 6) 36 36 (odd 6)+(.odd 6) 12 12 12 12 12 12 6 # 2*6 NB. Six copies of twice six 12 12 12 12 12 12 half=: % with 2 half 6 # 2*6 6 6 6 6 6 6 +/half 6 # 2*6 36 +/6#6 36 6*6 36We now write a sequence of (obviously?) equivalent sentences:
n=: 6 +/odd n 36 +/.odd n 36 half (+/odd n)+(+/.odd n) 36 half +/(odd n)+(.odd n) 36 half +/6 # 2*6 36 +/6 # 6 36 n*n 36Because a value (
6
) was assigned to the
argument n
, each of the foregoing
sentences were executable, and were
executed to give results whose equality
provided some assurance that an error
had not been made. We will, however, write
an informal proof as a similar sequence,
omitting the results that would have been
produced by their execution. Thus:+/odd n +/.odd n half (+/odd n)+(+/.odd n) half +/(odd n)+(.odd n) half +/6 # 2*6 +/6 # 6 n*n
+/odd n +/.odd n half (+/odd n)+(+/.odd n) half +/(odd n)+(.odd n) half +/6 # 2*6 +/6 # 6 NB. Half of sum is sum of halves n*n NB. Def of multiplication (in 1G)A stickler for logic might ask why he should believe that half of a sum equals the sum of the halves of the list summed. A convincing answer is not as easy as might be supposed, leading to an appreciation of the following statement from Lakatos:
TEACHER: This decomposition of the conjecture suggested by the proof opens new vistas for testing. The decomposition deploys the conjecture on a wider front, so that our criticism has more targets.
What about other steps, such as the
equivalence of +/odd n
and +/.odd n
?
It may seem obvious, but what is special
about +/
that would not apply for
another function such as %/
? A mathematician
might say (and offer proofs that)
functions such as +/
and */
and gcd/
and >./
are
symmetric, meaning that
they give the same result when applied to
any permutation (reordering) of their
arguments.
For the layman it may be best to accept informal proofs, but harbor a healthy suspicion that obvious ideas are sometimes wrong. In a further quotation from Lakatos:
TEACHER: I agree with you that the conjecture has received a severe criticism by Alpha’s counterexample. But it is untrue that the proof has "completely misfired". If, for the time being, you agree to my earlier proposal to use the word ‘proof’ for a ‘thought experiment’ which leads to a decomposition of the original conjecture into ‘subconjectures’, instead of using it in the sense of a ‘guarantee of certain truth’, you need not draw this conclusion.… You are interested only in proofs which ‘prove’ what they have set out to prove. I am interested in proofs even if they do not accomplish their intended task. Columbus did not reach India but he discovered something quite interesting.
+/even n
, and write an informal proof of
the equivalence.
+/i.n
+/
on i. t. i. 4
Suppose that by assuming that +/ on odd n
were equal to n*n
for a certain
value of n
, we were able to use this
assumption to prove that +/ on odd n+1
must therefore equal (n+1)*(n+1)
, we
could then conclude that equality must
hold for all succeeding values, n+2
and n+3
, and so on.
If, independently of this assumption, we are able
to show further that equality does
hold for some specific value (such as n=: 0
),
we may further conclude that the
relation is true for all integers greater
than or equal to that value. For example:
+/ on odd n+1 (+/odd n)+(2*n)+1 NB. From definition of odd (n*n)+(2*n)+1 NB. Assumed "induction hypothesis" (n+1)*(n+1) NB. Simple algebra
fac
might
be defined by saying that fac n
is
n * fac n1
. However, it is necessary to
further define its value for some
specific argument; for example, to
define fac 0
as 1
.
A recursive definition therefore depends
upon three functions, such as
]*fac on <:
to perform the recursion,
the constant function 1:
for the
specific argument 0
, and the “conditional
function” = with 0
to choose
between them. Thus:
fac=: (]*fac on <:) ` 1: @. (= with 0) fac 0 1 fac 4 24 !4 24In the foregoing, the tie operator
`
forms
a gerund from the two functions to
which it is applied, and the agenda
operator @.
selects one of them according to the
result of the conditional function = with 0
.
A recursively defined function provides
a convenient base for an hypothesis for use
in an inductive proof. For example a
function sodd
for the sum of the odd
integers might be recursively defined as follows:
sodd=: (sodd on <: + 2 with *  1:)`0: @. (= with 0) (sodd 0),(sodd 1),(sodd 2),(sodd 3),(sodd 4) 0 1 4 9 16The first and “main” function of the three used in this recursive definition may be interpreted as follows:
sodd n
is equal to
(sodd n1) + (2*n) – 1
or,
equivalently, that sodd n+1
equals (sodd n) + (2*n+1) – 1
.
We will
use this last relation in an
inductive proof that the sum of the first n
odd numbers
is n*n
, using the inductive hypothesis
of Section D as follows:
sodd n+1 (sodd n) + (2*n+1) – 1 NB. Recursive def of sodd (n*n) + (2*n+1) – 1 NB. Induction hypothesis (n+1)*(n+1) NB. Simple algebra
n=: 6 d=: 0 1r6 _1r2 1r3 +/*:i.n 55 d p. n 55
The quotes from Lakatos in Section 11A emphasize the importance of guessing at relationships, and the use of proofs to test and refine the resulting conjectures. We will now discuss techniques for guessing, emphasizing the use of the computer. However, games are seductive; the reader should perhaps limit the time spent on this section, but plan to return to it again and again.
EACHBOX and BOX
The list function i.
applies to an argument
such as 3 4
to produce a table, but
we may also wish to apply it to each of the
arguments 3
and 4
to produce separate
lists. Thus:
a=: 3 4 i. a 0 1 2 3 4 5 6 7 8 9 10 11 i.3 0 1 2 i.4 0 1 2 3 eachbox=: &.> i. eachbox a +++ 0 1 20 1 2 3 +++PREFIX In summing the list
2 7 1 8
, we may also wish
to obtain the “subtotals” or
“partial sums” by applying sumation over each
prefix of the list. Thus:pref=: \ sum=: +/ a=: 2 7 1 8 sum a 18 sum pref a 2 9 10 18 */pref a 2 14 14 112 <./pref a 2 2 1 1 >./pref a 2 7 7 8
DIAGONAL It is sometimes necessary to apply a function to each diagonal of a table. For example:
diag=: /. c=: 1 2 1 d=: 1 3 3 1 t=: c */d t 1 3 3 1 2 6 6 2 1 3 3 1 sum diag t 1 5 10 10 5 1
DIFFERENCES
If f
is a function and g
is a guess at
an equivalent function, then fg
gives the
needed correction. For example:
x=: 0 1 2 3 4 5 6 7r1 each=:"0 f=: +/ on i. each NB. Sums of integers f x 0 0 1 3 6 10 15 21 g=: (^ with 2 % 2:) each g x 0 1r2 2 9r2 8 25r2 18 49r2 (fg) x 0 _1r2 _1 _3r2 _2 _5r2 _3 _7r2 corr=: ( % 2:) each corr x 0 _1r2 _1 _3r2 _2 _5r2 _3 _7r2 gc=: g+corr NB. Corrected guess (f=gc) x 1 1 1 1 1 1 1 1RATIOS The ratio
f%g
may sometimes provide a better
guide to correction. Consider, for
example, the following sums of powers:f1=: +/ on (^&1) on i. each f2=: +/ on (^&2) on i. each f3=: +/ on (^&3) on i. each f4=: +/ on (^&4) on i. each f5=: +/ on (^&5) on i. each (f1,f2,f3,f4,:f5) x 0 0 1 3 6 10 15 21 0 0 1 5 14 30 55 91 0 0 1 9 36 100 225 441 0 0 1 17 98 354 979 2275 0 0 1 33 276 1300 4425 12201For
f1
the equivalent function g1
is,
of course, the function gc
derived above,
and we will use the ratio f3%g1
to look
for a definition of a function g3
corresponding to f3
. Thus:g1=: gc (f3%g1) x 0 0 1 3 6 10 15 21 g1 x 0 0 1 3 6 10 15 21It therefore appears that
g3
may be
expressed as the product of g1
with itself:g3=: g1*g1 (f3=g3) x 1 1 1 1 1 1 1 1TAYLOR COEFFICIENTS For functions such as
g1
and g3
that
are expressed directly in terms of powers,
quotients, products, and sums, the Taylor
operator may be applied to give the
coefficients of an equivalent polynomial. For example:x=: 0 1 2 3 4 5 6 7r1 c1=: g1 t. x c1 0 _1r2 1r2 0 0 0 0 0 c1&p. x 0 0 1 3 6 10 15 21 f1 x 0 0 1 3 6 10 15 21 c3=: g3 t. x c3 0 0 1r4 _1r2 1r4 0 0 0 (f3=c3&p.) x 1 1 1 1 1 1 1 1POLYNOMIAL APPROXIMATIONS The Taylor operator does not apply to functions such as the square root, and we use instead an expression that gives coefficients that approximate the function. Thus:
f=: %: f x 0 1 1.4142 1.7321 2 2.2361 2.4495 2.6458 (f x)*(f x) NB. To verify that f is square root 0 1 2 3 4 5 6 7 c=: (f x) %. (x ^/ i.#x) c p. x 0 1 1.4142 1.7321 2 2.2361 2.4495 2.6458It may be noted that the polynomial appeared to give not just an approximation, but the exact result. However, the result may be far from correct for arguments other than the
x
used in computing the
coefficients, especially so for arguments
outside the range of the elements of x
.
For example:c p. x+1r2 0.64666 1.2301 1.5796 1.8717 2.1204 2.3468 2.5436 2.8157 f x+1r2 0.70711 1.2247 1.5811 1.8708 2.1213 2.3452 2.5495 2.7386 c p. 9 5.9577 f 9 3
The letters in a word can be sorted into
alphabetical order by using the function
sort=: /:~
(which applies equally to numeric arguments).
For example:
sort=: /:~ w0=: 'REVEL' sort w0 EELRV w1=: 'LEVER' sort w1 EELRV w0=w1 0 1 1 1 0 (sort w0)=(sort w1) 1 1 1 1 1As shown in the last results the words are not equal, but they are similar, in the sense that they are anagrams, or permutations of one another, containing the same letters but in a different order. Although it is not an English word, we will also call the word
'EELVR'
an anagram.
w2=: 'AH'
(including itself).
w3=: 'ART'
.
w4a=: 'SPOT'
.
w4b=: 'ABCD'
.
To check your work, use the anagram function A.
as
illustrated below:0 A. w2=: 'AH' AH 1 A. w2 HA 0 1 A. w2 AH HA 0 1 2 3 4 5 A. w3=: 'ART' ART ATR RAT RTA TAR TRA 6 A. w3 index error  6 A.w3
The last result indicates that there
are only six anagrams of the threeletter word,
with the indices i.6
. Similar tests
will show that there are twentyfour anagrams
of fourletter words, leading to the following tables:
(i.24) A. w4a=: 'SPOT' SPOT SPTO SOPT SOTP STPO STOP PSOT PSTO POST POTS PTSO PTOS OSPT OSTP OPST OPTS OTSP OTPS TSPO TSOP TPSO TPOS TOSP TOPS trans=: : NB. Function to transpose a table trans (i.24) A. w4a=: 'SPOT' SSSSSSPPPPPPOOOOOOTTTTTT PPOOTTSSOOTTSSPPTTSSPPOO OTPTPOOTSTSOPTSTSPPOSOSP TOTPOPTOTSOSTPTSPSOPOSPS trans (i.24) A. w4b=: 'ABCD' AAAAAABBBBBBCCCCCCDDDDDD BBCCDDAACCDDAABBDDAABBCC CDBDBCCDADACBDADABBCACAB DCDBCBDCDACADBDABACBCABA trans (i.24) A. i.4 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 1 1 2 2 3 3 0 0 2 2 3 3 0 0 1 1 3 3 0 0 1 1 2 2 2 3 1 3 1 2 2 3 0 3 0 2 1 3 0 3 0 1 1 2 0 2 0 1 3 2 3 1 2 1 3 2 3 0 2 0 3 1 3 0 1 0 2 1 2 0 1 0 (trans (i.24) A. i.4) { 'arst' aaaaaarrrrrrsssssstttttt rrssttaassttaarrttaarrss strtrsstatasrtatarrsasar tstrsrtstasatrtarasrsara trans (i.24) A. 'arst' aaaaaarrrrrrsssssstttttt rrssttaassttaarrttaarrss strtrsstatasrtatarrsasar tstrsrtstasatrtarasrsara
The last results illustrate that anagrams
of lists of numbers may be made, and that
if these lists are indices (such as i.4
) they
may be used to index a word to
produce its anagrams.
anag=: trans on (i. on ! on # A. ])
on
various lists of numbers and letters.In making tables of anagrams by hand as required in the first list of Exercises, it was probably easy to do the first two by simply jotting down the anagrams unsystematically. However, for larger tables it becomes difficult to avoid repetitions and to ensure that the table is complete, especially if one does not know how many there are in all.
The number of anagrams of an n
letter
word can be obtained by a simple
argument: the leading letter can be
chosen in n
ways, so that
the total is n
times
the number of anagrams of an (n1
)letter
word,
leading to the product n
times n1
times n2
, etc.  in other
words, !n
. Thus:
#w4a 4 !#w4a 24
A comparison of Exercises 3 and 4 indicates
that it is easier to write the table for a
word whose letters are in some systematic order,
preferably alphabetic. The result
of (i.24) A. 'ABCD'
suggests a systematic
approach: choose the first letter
of the word as the initial letter, and
append to it the table for the remaining letters
organized by the same principle; then
choose the second letter as the initial, and so
on.
i.4 3 2
and (i.4 3 2) A. 'ABCD'
and <"2(i.4 3 2) A. 'ABCD'
. Study the
results, and try similar expressions for
shorter and longer words.If p
is any one of the six permutations
of 0 1 2
, then 3,p
is a permutation of
order four. However, if p
is prefixed by
any of the other possible beginnings of a
permutation of order four (2
or
1
or 0
)
the result is not a permutation, but it can
be made so by incrementing each element
of p
that is greater than or equal to the
prefix. Thus:
P=: (i.6) A. 0 1 2 P;(3,.P);(P>:2);(P+P>:2);(2,.P+P>:2);(1,.P+P>:1);(0,.P+P>:0) ++++++++ 0 1 23 0 1 20 0 10 1 32 0 1 31 0 2 30 1 2 3 0 2 13 0 2 10 1 00 3 12 0 3 11 0 3 20 1 3 2 1 0 23 1 0 20 0 11 0 32 1 0 31 2 0 30 2 1 3 1 2 03 1 2 00 1 01 3 02 1 3 01 2 3 00 2 3 1 2 0 13 2 0 11 0 03 0 12 3 0 11 3 0 20 3 1 2 2 1 03 2 1 01 0 03 1 02 3 1 01 3 2 00 3 2 1 ++++++++
This suggests a method for making permutations
of the next higher order: replicate
and modify the table of permutations of
order n
, and prefix each by an element of
i.n+1
. The scheme can also be used as
the basis for a recursive definition of a
function for making tables of permutations.
1
and 0
. For example:f1=: <&0 f2=: >&0 x=: i:3 x _3 _2 _1 0 1 2 3 f1 x 1 1 1 0 0 0 0 f2 x 0 0 0 0 1 1 1The proposition
f1
is true (that is, gives the
result 1
)
for any negative number,
and is said to define the set of negative
numbers; f2
defines the set of positive
numbers.
The list of positive numbers that occur
in a list y
may be obtained by using the
result f2 y
to copy from y
each element
of y
for which f2 y
is true. For
example:
y=: 3 1 4 1 5 9  3 y 0 _2 1 _2 2 6 f2 y 0 0 1 0 1 1 (f2 y) # y 1 2 6
or=: +.
may be applied to two
propositions to yield a proposition
that is true if either of the propositions is true. For example:or=: +. g=: f1 or f2 g x 1 1 1 0 1 1 1Similarly for
and=: *.
, the proposition
proposition h=: f1 and f2
is true
only if both f1
and f2
are true. Since
a number cannot be both positive and
negative, h
can never be true, and is
said to define an empty set. Thus: and=: *. h=: f1 and f2 h x 0 0 0 0 0 0 0 (h x) # x (g x) # x _3 _2 _1 1 2 3The (monadic) function
not=: .
negates a
boolean result. For example: not=: . (f1,.(not on f1),.g,.(not on g),.h,.(not on h)) x 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1
vow
, developed as
follows:s=: 'do you love me' 'aeiou' =/ s 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 or/'aeiou' =/ s 0 1 0 0 1 1 0 0 1 0 1 0 0 1 vow=: or/ on ('aeiou'&(=/)) vow s 0 1 0 0 1 1 0 0 1 0 1 0 0 1 (vow s)#s oouoee (not vow s)#s d y lv m alphabet=: 'abcdefghijklmnopqrstuvwxyz ' (vow alphabet)#alphabet aeiouIt is important to understand that the set of English vowels is defined by the function
vow
, not by
the list 'aeiou'
(nor by the same list that resulted from
applying the function to the universe
of the entire alphabet).
Otherwise one might
confuse the question of the ordering of
the defining list 'aeiou'
or repetitions
of its elements (neither of which affect
the definition of the function) with the
question of whether a set is ordered (which it is not).
an
) and a
corresponding list of credits (cr
)
to the accounts, as well as the list of
all possible account numbers (all
). Thus:an=: 1010 1040 1030 1030 1060 1010 1040 1040 1050 cr=: 131 755 458 532 218 47 678 679 934 all=: 1010 1020 1030 1040 1050 1060 c=: all =/ an c 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 eachrow=: "1 cr +/ on * eachrow c 178 0 990 2112 934 218
14F. Distributivity of dyadic functions
x*y
and y*x
)
that give identical results for all
possible values of the arguments are said to
form an identity. Identities are
important because they allow a function to
be expressed in different ways, each of
which may possess particular advantages,
such as ease of evaluation or insight
into the behaviour of the function.
For example, Section 11C showed
that +/ odd n
(the sum of the first n
odd
numbers) is identical to the more
easily computed product n*n
. Similarly, the sum
of the squares of the first n
positive
integers (+/(1+i.n)^2
) is identical to the
polynomial 0 1r6 1r2 1r3 p. n
.
Certain important identities are expressed as general properties of functions, referred to as commutativity, associativity, symmetry, distributivity, and parity.
~
interchanges the
arguments of the function to which it is
applied. For example:3 ~ 5 2 5 – 3 2 from=: ~ 3 from 5 2 into=: %~ 5 into 3 0.6If
f~
is identical to f
,
then the function f
is said to be commutative.
For example,
+
and *
are commutative,
but 
and
%
are not.
<
, =
, [
(left), ]
,
<.
(min), >.
, +:
(greatest common divisor), and *:
(least common multiple).
f table i:4
for both commutative and noncommutative
functions, and observe the symmetry
of the former.The expressions 3(45)
and (34)5
apply the
same function to the same
arguments, but yield different results because
the parentheses associate them
differently; subtracting 5
from 4
and then
subtracting the result from 3
to yield 4
in the first case, and subtracting 4
from 3
and then subtracting 5
from the result to
yield _6
in the last.
A function that yields the same result for
any association imposed by parentheses is
said to be associative. For example, 3+(4+5)
and (3+4)+5
both yield 12
.
A function that applies to any permutation of a list to yield the same result is said to be symmetric. For example:
+/2 3 5 7 17 +/3 5 2 7 17 /2 3 5 7 _3 /3 5 2 7 _7If
f
is both associative and commutative,
then f/
is symmetric. For example:all=: (i.!3) A. 2 3 5r1 all 2 3 5 2 5 3 3 2 5 3 5 2 5 2 3 5 3 2 lcm=: *. eachrow=: "1 lcm/ eachrow all 30 30 30 30 30 30 %/ eachrow all 10r3 6r5 15r2 6r5 15r2 10r3
f(x g y)
is equivalent to (f x)g(f y)
,
we say that the (monadic)
function f
distributes over the (dyadic)
function g
. The two parts of this identity
may also be stated as f on g
and (f on [) g (f on ])
.
For example, +:
(double) and :
(halve)
each distribute over both addition and
subtraction, facts that may be tested in the following manner:3 (+:on+) 5 16 3 (+:on[ + +:on]) 5 16The operator
over
defined below can be
used in the expression f over g
to
test whether f
distributes over g
. Thus:over=: 2 : '(u. on v.) = ((u. on [) v. (u. on ]))'each (+:over  table ,. : over + table ,. +: over * table) i:3 +++++++  _3 _2 _1 0 1 2 3 _3 _2 _1 0 1 2 3 _3 _2 _1 0 1 2 3 +++++++ _3 1 1 1 1 1 1 1_3 1 1 1 1 1 1 1_3 0 0 0 1 0 0 0 _2 1 1 1 1 1 1 1_2 1 1 1 1 1 1 1_2 0 0 0 1 0 0 0 _1 1 1 1 1 1 1 1_1 1 1 1 1 1 1 1_1 0 0 0 1 0 0 0  0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0  2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 0 0 0 1 0 0 0  3 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 3 0 0 0 1 0 0 0 +++++++
over
to test whether +:
distributes
over gcd
and lcm
.Since double and halve each distribute
over addition, and since they may be
expressed as the equivalent
functions d=: * with 2
and h=: % with 2
it
appears that numbers other
than 2
would do as well, that is, any multiple or
fraction function would distribute
over addition (and subtraction). Thus:
(((* with 2.5)over + table),.((% with 4)over + table))i:3 +++++  _3 _2 _1 0 1 2 3 _3 _2 _1 0 1 2 3 +++++ _3 1 1 1 1 1 1 1_3 1 1 1 1 1 1 1 _2 1 1 1 1 1 1 1_2 1 1 1 1 1 1 1 _1 1 1 1 1 1 1 1_1 1 1 1 1 1 1 1  0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1  1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1  2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1  3 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 +++++Since
*
is commutative, 2.5 with*
would
serve as well as *with 2.5
in
the foregoing, but would 4 with%
give
the same result as %with 4
?
a*(b+c)
is equivalent to
(a*b)+(a*c)
, it is said that multiplication
distributes over addition. Similarly
(a+b)*c
is equivalent to (a*c)+(b*c)
, and
again multiplication distributes
over addition.
However, (a+b)%c
is equivalent to (a%c)+(b%c)
and we might conclude
that division also distributes over addition.
On the other hand, a%(b+c)
is not
equivalent to (a%b)+(a%c)
, and it is
sometimes said that division “distributes
to the left” over addition.
The situation is more accurately stated
by saying that the monadic functions
x with *
and * with x
and % with x
distribute over addition, but that
x with %
does not.
Finally, the idea of a monadic function
distributing over addition leads to the important notion of
linear functions, treated in Chapter 15.
x
equals the
square of x
for every x
. Thus:sqr=: ^ with 2 x=: i:1j10 x _1 _0.8 _0.6 _0.4 _0.2 0 0.2 0.4 0.6 0.8 1 sqr x 1 0.64 0.36 0.16 0.04 0 0.04 0.16 0.36 0.64 1 PLOT x;sqr xSimilarly, a graph of the cube is reflected in the origin, because the cube of
x
equals the negative
of the cube of x
:cube=: ^ with 3 PLOT x;cube x
(cube x)=(cube x) 1 1 1 1 1 1 1 1 1 1 1 (sqr x)=(sqr x) 1 1 1 1 1 1 1 1 1 1 1Simple algebra shows that for any function
f
, the function ef=: f + f with 
is even, and
that the function of=: f  f with 
is odd.
For example:f=: ^ NB. The exponential (which is neither even nor odd) ef=: f+f with  of=: ff with  PLOT x;(f,ef,:of) xThe functions
hef=: ef % 2:
and
hof=: of % 2:
are called the even
and odd parts of f
because they are,
respectively, even and odd, and because they sum to f
:
hef=: ef % 2: hof=: of % 2: (f=hef+hof) x 1 1 1 1 1 1 1 1 1 1 1 PLOT x;(hef,hof,:hef+hof) xThe odd and even parts of a function are often functions of interest in their own right. For example,
hof
is the hyperbolic sine, and hef
is the hyperbolic cosine. They are denoted in J by
5 with o.
and 6 with o.
, respectively.
As we will show in Chapter 19, we can use complex numbers to similarly express the sine and cosine as odd and even parts of a function closely related to the exponential.
15B. Dot product as a linear vector function
+/w*x
gives a sum over the
argument x
weighted by the vector
w
. For example:x=: 2 3 5 7 11 w=: 0 1 2 3 4 w*x 0 3 10 21 44 +/w*x 78The dot operator (
.
) applied to the
functions +/
and *
produces an equivalent
function called the dot, inner, or matrix product.
Thus:dp=: +/ . * w dp x 78Moreover,
dp
applies to a matrix (table)
left argument to produce a vector (list) of
results, using successive rows of the
matrix as weights. For example:a=: 3 1 4 b=: 2 7 8 c=: 2 1 0 ]m=: a,b,:c 3 1 4 2 7 8 2 1 0 m dp 2 3 5 29 65 7 b dp 2 3 5 65 g=: m with dp g 2 3 5 29 65 7If
m
is a square matrix (as in the present example),
then m with dp
applies to a
vector to produce a vector of the same number of
elements. We will call such a
function a vector function.
x=: 2 3 5 y=: 0 1 2 f=: 2 7 8 with dp ((f x)+(f y)) , (f x+y) 88 88 g=: m with dp ((g x)+(g y)) ,: (g x+y) 38 88 8 38 88 8The function
I=: =/~ on i.
yields a result
called an identity matrix, because
when used
with dp
it produces an identity
function (that yields its argument
unchanged). For example:I=: i. =/ i. ]i=: I 3 1 0 0 0 1 0 0 0 1 i with dp 2 3 5 2 3 5A linear vector function need not be expressed as a dot product, but if it is not, the required matrix is easily determined. For example,
sop=: +/\
(sums over
prefixes) is a linear vector function,
and the matrix m
for an equivalent function
m with dp
may be determined as follows:x=: 2 3 5 7 11 y=: 0 1 2 3 4 sop=: +/\ ((sop x)+(sop y)) ,: (sop x+y) 2 6 13 23 38 2 6 13 23 38 ]i=: I # x 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 i dp x 2 3 5 7 11 sop i dp x 2 5 10 17 28 (sop i) dp x 2 5 10 17 28 ]m=: sop i 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1The resulting matrix provides an interesting way of looking at the sums over prefixes: the ones in the successive rows indicate the elements included in the successive sums.
m with dp
is itself a linear vector
function, and can therefore be
expressed in the form mi with dp
. The matrix
mi
may be obtained from m
by
applying the matrix inverse function %.
. Thus:]z=: m dp x=: 2 3 5 7 11 2 5 10 17 28 mi=: %.m mi dp z 2 3 5 7 11 mi 1 0 0 0 0 _1 1 0 0 0 0 _1 1 0 0 0 0 _1 1 0 0 0 0 _1 1The pairs
_1 1
in the rows of the
inverse mi
indicate that the inverse of the sum
over prefixes is a differencing operation,
and the matrix mi
may be called a
difference matrix.
.
),
rotation (2 with .
) and 8 with A.
.
Comment on the matrices that represent them and their inverses.
16C. Multiplication of decimal numbers
16E. Remainder, Divisibility, and Integer part
ax^{0}+bx^{1}+cx^{2}+dx^{3}
ax^{3}+bx^{2}+cx^{1}+dx^{0}
Descending order is commonly used in high school, but ascending order is more suitable in advanced math, because in truncated power series a “largest exponent” may not be clearly identified.
To compare these schemes we will define
two functions called pa
(for ascending
order), and pd
(for descending). The
former is the function p.
that we have used
in earlier chapters, and the latter
may be expressed in terms of it using the reversal
function (.
) to reverse the order of the
coefficients. Thus:
pa=: p. pd=: . on [ pa ] x=: 0 1 2 3 4 5 1 2 3 pa x 1 6 17 34 57 86 1 2 3 pd x 3 6 11 18 27 38 1 2 3 pd 10 123
The final example suggests that a descending
polynomial with right argument 10
gives the value in decimal of the digits in
the list of coefficients. In fact, the decimal
number system (and number systems with bases
other than ten) are “polynomial
representations” of numbers, and we may
find that schemes for multiplying
polynomials lead to improved methods
of multiplying multidigit decimal numbers.
c1 with p.
and c2 with p.
is itself a
polynomial, whose coefficients can be computed
from c1
and c2
by first forming
their multiplication table. For example:c1=: 2 3 5 c2=: 4 1 0 3 c1 * table c2 +++   4 1 0 3 +++ 2 8 2 0 6 312 3 0 9 520 5 0 15 +++The coefficient
8
in the upper left corner is
the coefficient of x^0
in the product
polynomial, the elements of the next
diagonal (2 12
) are coefficients of x^1
, the
next diagonal has coefficients of x^2
,
and so on. The combined coefficients of
successive powers may therefore be
obtained by summing diagonals of the table to
obtain c3=: 8 14 23 11 9 15
. Thus:c3=: 8 14 23 11 9 15 x=: 0 1 2 3 4 5 (c1 p. x) * (c2 p. x) 8 80 840 4928 18800 54528 c3 p. x 8 80 840 4928 18800 54528In the expression
f/.
the oblique
operator /.
produces a function that applies f
to each of the diagonals of a table argument. Thus:c1 */ c2 8 2 0 6 12 3 0 9 20 5 0 15 +//. c1 */ c2 8 14 23 11 9 15 c3 = +//. c1 */ c2 1 1 1 1 1 1We may therefore define a function
pc
to
produce product coefficients as follows:pc=: +//. on (*/) c1 pc c2 8 14 23 11 9 15 1 1 pc 1 1 1 2 1 1 1 pc 1 1 pc 1 1 1 3 3 1Similar reasoning will show that the same function
pc
produces coefficients for
the product of descending polynomials.
This may be tested as follows:c1 pd x 5 10 19 32 49 70 c2 pd x 3 8 39 120 275 528 (c1 pd x)*(c2 pd x) 15 80 741 3840 13475 36960 c3 pd x 15 80 741 3840 13475 36960
c pd 10
is the decimal
value of the number whose digits are the
elements of the list c
. Thus:c1=: 1 2 3 c2=: 1 2 0 3 (c1 pd 10),(c2 pd 10) 123 1203
It follows that the elements of c1 pc c2
represent the product of the numbers
123
and 1203
. Thus:
]c3=: c1 pc c2 1 4 7 9 6 9 c3 pd 10 147969 123*1203 147969Consequently, the product can be obtained by making the table
c1 * table c2
and summing its diagonals:c1 * table c2 +++  1 2 0 3 +++ 11 2 0 3 22 4 0 6 33 6 0 9 +++ 1,(+/2 2),(+/0 4 3),(+/3 0 6),(+/6 0),9 1 4 7 9 6 9However, these diagonal sums for other arguments may yield results greater than
9
, and therefore themselves be multidigit numbers.
For example:c4=: 1 2 3 4 5 6 7 c5=: 8 7 6 5 4 ]c6=: c4 pc c5 8 23 44 70 100 130 160 126 92 59 28 c6 pd 10 108214735818 1234567*87654 108214735818The result
c6
does correctly represent
the product, but it is unsatisfactory in that
its multidigit elements cannot be simply
squeezed together (as in 8234470100130160126925928
)
to produce the correct product.
An equivalent list of single digits can, however, be obtained by “carrying” all but the final digit to the next higher element, as illustrated in the following sequence:
c6=: 8 23 44 70 100 130 160 126 92 59 28 c7=: 8 23 44 70 100 130 160 126 92 61 8 c8=: 8 23 44 70 100 130 160 126 98 1 8 c9=: 8 23 44 70 100 130 160 135 8 1 8 c10=: 8 23 44 70 100 130 173 5 8 1 8 c11=: 8 23 44 70 100 147 3 5 8 1 8 c12=: 8 23 44 70 114 7 3 5 8 1 8 c13=: 8 23 44 81 4 7 3 5 8 1 8 c14=: 8 23 52 1 4 7 3 5 8 1 8 c15=: 8 28 2 1 4 7 3 5 8 1 8 c16=: 10 8 2 1 4 7 3 5 8 1 8 c17=: 1 0 8 2 1 4 7 3 5 8 1 8 c6 pd 10 108214735818 c17 pd 10 108214735818Moreover, the entire normalization from
c6
to c17
can be done easily by hand in a
single process. In summary, multiplication
of decimal numbers represented by the
lists of digits d1
and d2
can be performed
by hand by writing down the table
d1 * table d2
, summing the diagonals,
and “normalizing” the results to singledigit
elements (written together without spaces).
This process may be compared with the
commonlytaught scheme shown below:1234567 87654  4938268 6172835 7407402 8641969 9876536  108214735818In contrast to the three distinct steps of recording the multiplications in a table, summing its diagonals, and a final normalizion by carry, this conventional scheme combines multiplication and carry in each step of the production of each line, and again uses carrying in the final summation of the several lines.
Not only is this combined multiplicationandcarry more difficult to execute accurately, but the resulting record is almost impossible to check for possible errors except by repeating the entire process – a repetition that invites repetition of the same errors.
c pd 10
gives the decimal (or base10
)
value of c
as a weighted sum
with weights of decreasing powers of 10
,
so c pd 8
gives the base8
value,
using powers of 8
as weights. For example:c1=: 1 2 3 c2=: 1 2 0 3 (c1 pd 8),(c2 pd 8) 83 643 ]c3=: c1 pc c2 1 4 7 9 6 9 c3 pd 8 53369 (c1 pd 8)*(c2 pd 8) 53369Again the result
c3
can be normalized,
this time to the range 0
to 7
. This requires
dividing by 8
, “carrying” the integer
quotient, and leaving the remainder. Thus:c3 1 4 7 9 6 9 1 4 7 9 7 1 pd 8 53369 1 4 8 1 7 1 pd 8 53369 1 5 0 1 7 1 pd 8 53369
8
divides into 24
exactly (that is, an
integer number of times), but it divides 27
leaving a remainder of 3
.
The remainder function is denoted by 
and is
illustrated by:
 table i=: 1 2 3 4 5 6 7 8 +++  1 2 3 4 5 6 7 8 +++ 10 0 0 0 0 0 0 0 21 0 1 0 1 0 1 0 31 2 0 1 2 0 1 2 41 2 3 0 1 2 3 0 51 2 3 4 0 1 2 3 61 2 3 4 5 0 1 2 71 2 3 4 5 6 0 1 81 2 3 4 5 6 7 0 +++
If the remainder dn
is zero, we
say that n
is divisible by d
, as
illustrated by the following
divisibility table:
=&0 on  table i +++  1 2 3 4 5 6 7 8 +++ 11 1 1 1 1 1 1 1 20 1 0 1 0 1 0 1 30 0 1 0 0 1 0 0 40 0 0 1 0 0 0 1 50 0 0 0 1 0 0 0 60 0 0 0 0 1 0 0 70 0 0 0 0 0 1 0 80 0 0 0 0 0 0 1 +++
The number ndn
is divisible by d
,
and the result of the division d%~ndn
is
called the integer quotient. Thus:
iq=: ([%~])"0 8 iq 22 23 24 25 26 27 2 2 3 3 3 3 iq table i +++  1 2 3 4 5 6 7 8 +++ 11 2 3 4 5 6 7 8 20 1 1 2 2 3 3 4 30 0 1 1 1 2 2 2 40 0 0 1 1 1 1 2 50 0 0 0 1 1 1 1 60 0 0 0 0 1 1 1 70 0 0 0 0 0 1 1 80 0 0 0 0 0 0 1 +++
The integer quotient can also be obtained by
applying the integer part function <.
to
the result of division. For example:
i%5 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 <.i%5 0 0 0 0 1 1 1 1 <. on (%~) table i +++  1 2 3 4 5 6 7 8 +++ 11 2 3 4 5 6 7 8 20 1 1 2 2 3 3 4 30 0 1 1 1 2 2 2 40 0 0 1 1 1 1 2 50 0 0 0 1 1 1 1 60 0 0 0 0 1 1 1 70 0 0 0 0 0 1 1 80 0 0 0 0 0 0 1 +++
Why this is necessarily true, is easy to see if we recall the Roman representation of 32, i.e. XXXII. If the Romans had written it in the form III II, there would have been no way of distinguishing it from 302, 320, 3,020, 3,200, etc. The one simple way of escape from this dilemma is to introduce a sign such as the Maya lozenge ..., a dot or a circle for the empty column of the abacus. We can then write 32, 302, 320, 3,020 as below:III II; IIIoII; III IIo; IIIoIIo
...If our base is b, we need only (b1) other signs e.g. if b=10 the other signs we need are nine in all. We can then express any nameable number however great without enlarging our stock in trade.
...Its invention liberated the human intellect from the prison bars of the counting frame. The new script was a complete model of the mechanical process one performs with it. With a sign for the empty column, 'carrying over' on slate, paper or parchment is just as easy as carrying over on the abacus.
...In mediaeval Europe, the name for such rules was algorithms, a corruption of the name of a thirteenth century mathematician, spelled Al Khwarismi or Alkarismi.
A recipe may call for some thing (such as Hollandaise sauce) which is itself specified by a recipe; in mathematics or programming such a thing is more commonly called a function or component function. For example, in the program
odd=: 1:+even even=: 2:*i.
the program for the function odd
makes
use of the function even
, and each function may
be used independently:
odd 5 1 3 5 7 9 even 5 0 2 4 6 8 (odd*even) 5 0 6 20 42 72
f
and g
), and use them in a single definition
(such as h=: f+f on g
).x.
and y.
.
EXAMPLE 1 Define a function for the decaying sine curve.
We begin by assigning values to a list argument x
,
and applying sine and decay functions to it:
x=: 1r2*i.11 s=: 1&o. x ]n=: _1r5 * x 0 _1r10 _1r5 _3r10 _2r5 _1r2 _3r5 _7r10 _4r5 _9r10 _1 d=: ^ n set 2 d*s 0 0.43 0.69 0.74 0.61 0.36 0.077 _0.17 _0.34 _0.4 _0.35 PLOT x;d,s,:d*s
x.
and y.
), and allows multiple lines in which names
may be assigned to intermediate results. Thus:b=: 4 b 4 f=: 4 : 0 a=: i. x. b=: a ^ y. c=: +/b b;c ) 5 f 2 +++ 0 1 4 9 1630 +++ b 0 1 4 9 16It is clear that the value originally assigned to
b
(in order to illustrate this matter) has been changed by the execution of f
, behaviour
that might cause the loss of valuable data. This unsuitable
behaviour can be avoided by using a different copula (=.
)
to localize the names assigned within the function. Thus:f=: 4 : 0 a=.i. x. b=.a ^ y. c=.+/b b;c ) 7 f 3 +++ 0 1 8 27 64 125 216441 +++ b 0 1 4 9 16See Section S16C for a further example of explicit definition.
In Section 11E, the agenda operator @.
was
used to provide a conditional execution of functions
in its argument. In many programming languages, conditional
execution is provided by constructs such as if,
then, else, and while do. The form used in
explicit definition is illustrated
by:
SUM=: 3 : 0 i=.0 a=.0 while. i<y. do. a=.next a i=.next i end. a ) SUM 4 6 0+1+2+3 6 sum=: +/ on i. sum 4 6
18B. Area under a graph as a function
18C. Polynomial approximations
d.1
can be applied to
a function f
to obtain its derivative,
so the operator d._1
can be applied to obtain
its antiderivative, that is, a function whose
derivative is f
. For example:derv=: d.1 anti=: d._1 c=: 1 2 3 4 5 6 c with p. 1 2 3 4 5 6&p. c with p. derv 2 6 12 20 30&p. c with p. anti 0 1 1 1 1 1 1&p. c with p. anti derv 1 2 3 4 5 6&p.
derv
and
anti
on functions such as ^
and
1&o.
and 2&o.
and 6&o.
1 2 3 4 5&p.
and 7 2 3 4 5&p.
, and explain their agreement.f
from the
argument _1
(or any fixed point) to
an argument x
is itself a function of x
(that
depends upon the function f
). We will first make a similar graph, using a finer grid (with a spacing 0.05 between points):
a=: i:1j40 PLOT a;cir aWhat is the rate of change of the area function?
Consider
the point x=: 0.5
, the spacing s=: 0.05
, and
the next plotted point x+s
. The change in area is due to
the quadrilateral with base s
and heights cir x
and cir x+s
, an area equal to s
times
the average of the heights cir x
and cir x+s
.
The rate of change ((cir x+s)(cir x))%s
is
therefore the average of cir x
and cir x+s
.
For small values of s
, this average approaches cir x
;
the derivative of the area under the graph of cir
is therefore the function cir
itself.
In other words, the area under the graph of a function is the antiderivative of the function. Since this area can be viewed as the aggregation or integration of the component areas, it is also called the integral of the function.
d._1
does for the functions to which it applies.
This situation is analogous to the equationsolving of Chapter 9, which gives the inverse of a function for some chosen point, but not the inverse function itself.
A practical solution to the antiderivative of a function f
is provided by finding the coefficients of a polynomial that
approximates it, and then
using the fact that the antiderivative (as well as the derivative) of
a polynomial is easily obtained.
The expression (f x) %. x^/i.n
yields the
coefficients of an n
term polynomial that best
fits the function f
at the points x
.
For example:
]x=: i:1j10 _1 _0.8 _0.6 _0.4 _0.2 0 0.2 0.4 0.6 0.8 1 ]c=: (1&o. x) %. x ^/i.5 _3.46945e_17 0.997542 9.99201e_16 _0.156378 _7.77156e_16 c&p. _1 0 1 _0.841164 _3.46945e_17 0.841164 1&o. _1 0 1 _0.841471 0 0.841471 (c&p. x) ,. (sin x) _0.841164 _0.841471 _0.717968 _0.717356 _0.564748 _0.564642 _0.389009 _0.389418 _0.198257 _0.198669 _3.46945e_17 0 0.198257 0.198669 0.389009 0.389418 0.564748 0.564642 0.717968 0.717356 0.841164 0.841471The polynomial approximations may, however, be wildly wrong for arguments outside of the list
x
to which it
was fitted.
The function der
of Section 6B applied to a
list of polynomial coefficients yields the coefficients of
the derivative polynomial. A coresponding function for the
antiderivative may be defined as follows:
der=: 1: . ] * i. on # ant=: 0:,] % next i. on # ant c 0 1 1 1 1 1 1 der ant c 1 2 3 4 5 6 0
1 2 3 4
etc.)
and found that the introduction of subtraction as the inverse
of addition led to a new class of negative numbers (when
we attempted to subtract a larger number from a smaller).
Such negative numbers were once regarded as curious absurdities, but are found to serve consistently and usefully under addition, subtraction, and multiplication.
Similarly, the introduction of division as the inverse of multiplication leads to the consistent and useful notion of fractional numbers.
Because the square of any number (positive or negative) is nonnegative, the introduction of the square root as the inverse of the square leads to a further extension when applied to a negative number. These new numbers were (and still are) called imaginary. For example:
set=: 9!:11 set 4 sqr=: *: sqrt=: sqr^:_1 a=: i.10 a 0 1 2 3 4 5 6 7 8 9 sqr a 0 1 4 9 16 25 36 49 64 81 sqrt a 0 1 1.414 1.732 2 2.236 2.449 2.646 2.828 3 b=: sqrt a b 0 0j1 0j1.414 0j1.732 0j2 0j2.236 0j2.449 0j2.646 0j2.828 0j3 sqr b 0 _1 _2 _3 _4 _5 _6 _7 _8 _9
a+b 0 1j1 2j1.414 3j1.732 4j2 5j2.236 6j2.449 7j2.646 8j2.828 9j3 sqr (a+b) 0 0j2 2j5.657 6j10.39 12j16 20j22.36 30j29.39 42j37.04 56j45.25 72j54 a + table b +++  0 0j1 0j1.414 0j1.732 0j2 0j2.236 0j2.449 0j2.646 0j2.828 0j3 +++ 00 0j1 0j1.414 0j1.732 0j2 0j2.236 0j2.449 0j2.646 0j2.828 0j3 11 1j1 1j1.414 1j1.732 1j2 1j2.236 1j2.449 1j2.646 1j2.828 1j3 22 2j1 2j1.414 2j1.732 2j2 2j2.236 2j2.449 2j2.646 2j2.828 2j3 33 3j1 3j1.414 3j1.732 3j2 3j2.236 3j2.449 3j2.646 3j2.828 3j3 44 4j1 4j1.414 4j1.732 4j2 4j2.236 4j2.449 4j2.646 4j2.828 4j3 55 5j1 5j1.414 5j1.732 5j2 5j2.236 5j2.449 5j2.646 5j2.828 5j3 66 6j1 6j1.414 6j1.732 6j2 6j2.236 6j2.449 6j2.646 6j2.828 6j3 77 7j1 7j1.414 7j1.732 7j2 7j2.236 7j2.449 7j2.646 7j2.828 7j3 88 8j1 8j1.414 8j1.732 8j2 8j2.236 8j2.449 8j2.646 8j2.828 8j3 99 9j1 9j1.414 9j1.732 9j2 9j2.236 9j2.449 9j2.646 9j2.828 9j3 +++Since a complex number is a sum of a real and an imaginary number, the product of complex numbers is treated consistently as a product of sums. The steps in the multiplication may be illustrated as follows:
c=: 2j3 d=: 4j5 c*d _7j22 (2+0j3)*(4+0j5) _7j22 (2*(4+0j5))+(0j3*(4+0j5)) _7j22 (2*4)+(2*0j5)+(0j3*4)+(0j3*0j5) _7j22 8+0j10+0j12+_15 _7j22 _7+0j22 _7j22Note that the product of two imaginaries (
0j3
and 0j5
) yields a negative real number.
e=: c*d
by
c
and then by d
to get the
expected results d
and c
:
]e=: c*d _7j22 e%c 4j5 e%d 2j3To get a general procedure for division, we first note that division by a real number is straightforward. For example:
12j22 % 2 6j11Similarly, we note that multiplication of both numerator and dednominator by the same number leaves the quotient unchanged. For example:
e%c 4j5 g=: 2j_3 (e*g)%(c*g) 4j5Finally, we note that the denominator
c*g
is
a real number, a result of choosing g
as the
conjugate of c
, that is, obtained
from c
by reversing the sign of its
imaginary part:c*g 13The function
conj=: +
yields the conjugate
of its argument, and it can therefore be used to provide
division by first producing an equivalent quotient with a
real denominator. For example:
conj=: + p=: 2j5 q=: 3j_4 p%q _0.56j0.92 conj q 3j4 p*conj q _14j23 q*conj q 25 (p*conj q)%(q*conj q) _0.56j0.92 NB. Compare with p%q
The function j.
multiplies its argument
by 0j1
(the square root of negative one). For
example:
j.i.10 0 0j1 0j2 0j3 0j4 0j5 0j6 0j7 0j8 0j9Consequently, each term in the polynomial
c with p. on j.
differs from that in the polynomial c with p.
by a power of 0j1
determined by its exponent.
For example:0j1^0 1 2 3 4 5 6 7 8 1 0j1 _1 0j_1 1 0j1 _1 0j_1 1 c=: 1 2 3 4 5 6 7 f=: c with p. f t. i.10 NB. Taylor coefficients 1 2 3 4 5 6 7 0 0 0 f on j. t. i.10 1 0j2 _3 0j_4 5 0j6 _7 0 0 0Consequently, the Taylor coefficients of the function
^ with j.
are the same as those of the sum cos+j. sin
, and
the cosine and sine can be obtained from the even and odd parts
of ^ with j.
O=: .:  E=: .. and experiment with their use on the function
f=: 0 1 2 3 4 5 with p.
using expressions
such as f E
and f E i:4
and (f O+f E) i:4
^
and sin=: 1 with o.
and cos=: 2 with o.
and cosh=: 6 with o.
.
20B. Mathematics: from the Birth of Numbers
In the seventyodd years since his publication, the development of computer programming has provided languages with grammars that are simpler and more tractable than that of conventional mathematical notation. Moreover, the general availability of the computer makes possible convenient and accurate experimentation with mathematical ideas....These facts make it possible to present to the layman a simple view of calculus as the study of the rate of change of a function, and to use it to provide insight into matters such as the sine and cosine functions (so useful in trigonometry and the study of mechanical and electrical vibrations), and into the exponential and its inverse the logarithm (so useful in growth processes and matters such as the familiar musical scale).
These matters have now been addressed, but there remain many practical and interesting topics (such as probability and statistics) that are well within the grasp and interest of a layman. Rather than pursue these, we will conclude by suggesting sources for further study.
Although there are many excellent elementary treatments of math (including some highschool texts), they are all couched in conventional notation, which we have (except for the discussion in Chapter 10) largely ignored. This may make their study difficult.
However, the use of a foreign (that is, unfamiliar) language also offers advantage: the effort of translation often forces one to "look behind the words" to gain a clearer understanding of their import.
We will discuss just two texts, in addition to resources available on the computer.
The first text (Gullberg, Mathematics: From the Birth of Numbers [20]) is serious, entertaining, and extensive, and provides a wealth of interesting historical detail. As stated in a foreword by Peter Hilton (an emeritus professor of mathematics):
The unstated premise of this book  a premise that virtually all mathematicians would agree to  is that mathematics, like music, is worth doing for its own sake. The author is, by profession, a medical man, but he has a love for mathemtics and wants others to share his enthusiasm.This is not to deny the usefulness of mathematics; this very usefulness, however, tends to conceal and disguise the cultural aspect of mathematics.
...
Further, the study of mathematics starts with the teaching of arithmetic, a horrible, wretched subject, far removed from real mathematics, but perceived to be useful. As a result, vast numbers of intelligent people become 'mathematics avoiders' even though they have never met mathematics. Their desire to avoid the tedium of elementary arithmetic, with its boring, unappetizing algorithms and pointless drillcalculations, is perfectly natural and healthy.
To those intelligent people, it must seem absurd to liken mathematics to music as an art to be savored and enjoyed even in one's leisure time. Yet that is how it should appear and could appear if it were playing its proper role in our (otherwise) civilized society. Just as an appreciation of music is a hallmark of the educated person, so should be an appreciation of mathematics. The author of this book is a splendid example of an educated person bearing this hallmark.
The second (Graham, Knuth and Patashnik, Concrete Mathematics [2]) is presented as "A foundation for Computer Science". As stated in the preface:
The course title "Concrete Mathematics" was originally intended as an antidote to "Abstract Mathematics", since concrete classical results were rapidly being swept out of the modern mathematical curriculum by a new wave of abstract ideas popularly called "The New Math." Abstract mathematics is a beautiful subject ... But its adherents had become deluded that the rest of mathematics was inferior and no longer worthy of attention.
This text is recommended not only because of its clarity and coverage, but also because of my Concrete Math Companion [21], which may prove helpful in the matter of notation. It provides an extensive commentary on the Graham text, expressed in the executable notation used here.
CONTINUED FRACTIONS On page 127, Gullberg says:
All real numbers can be written as periodic or nonperiodic, terminating or nonterminating, decimal fractions. Another way of writing a rational number is in the form of a continued fraction,This is equivalent to the functionN = a0 + 1  a1 + 1  a2 + 1  a3 + 1  a4 + ... or, in a kind of accepted mathematical "shorthand", N = [a0, a1, a2, a3 ...]
pr=: [+1:%]
applied over the list a0,a1,a2,a3, etc.
,
and Gullberg's example of 221/41 may be treated
as follows:pr=: [+1:%] 2 pr 5 2.2 pr/5 2 1 1 3 2r1 221r41 pr/5 2 1 1 3 2 5.39024 pr/\5 2 1 1 3 2r1 5 11r2 16r3 27r5 97r18 221r41The final expression illustrates how the operator
\
may be used to obtain the partial sums or "convergents" to
the complete continued fraction.
The fibonacci numbers (treated by Gullberg on page 287) may also be obtained as continued fractions. For example:
pr/\1 1 1 1 1 1 1 1 1 1r1 1 2 3r2 5r3 8r5 13r8 21r13 34r21 55r34 89r55 pr/\1 1 1 1 1 1 1 1 1 1 1 2 1.5 1.66667 1.6 1.625 1.61538 1.61905 1.61765 1.61818These decimal results may be recognized as increasingly good approximations to the Golden Mean (or golden number), also treated by Gullberg.
On page 143, Gullberg shows examples of continued fraction approximations to irrational numbers such as the square root of six:
a=: 2 2 4 2 4 2 4 2 4 b=: pr/a b 2.44949 b*b 6DETERMINANTS On pages 646,7, Gullberg states:
A determinant is a value representing sums and products of a square matrix. The determinant of a matrix A, det A, is denoted as arrays of numbers or algebraic quantities, called entries or elements, disposed in horizontal rows and vertical columns enclosed between single vertical bars:  a11 a12 ... a1n  det A =  ... ... ... ...   an1 an2 ... ann  ... has 3! = 6 triple products of entries from every row and column, of which no two triplets can be the same, a11 a22 a33 a11 a23 a32 a12 a21 a33 a12 a23 a31 a13 a21 a32 a13 a22 a31 123 132 213 231 312 321 # of inversions: none one one two two three Correction factor: +1 1 1 +1 +1 1In J the determinant function is defined as
det=: / . *
which, applied to the threebythree matrix (that is, table) of
Gullberg's example yields the following
results:det=: / . * A=: 2 3 4,.0 1 2,.4 0 2 A 2 0 4 3 1 0 4 2 2 det A 12Gullberg notes the following properties:
The value of a determinant is reversed in sign if any two rows are interchanged.For example:Multiplying all entries of any row multiplies the determinant by the same factor.
The area of a triangle is onehalf the absolute value of the determinant of the matrix obtained by bordering the threebytwo table of its coordinates by a column of ones.
(1 A. A);(det 1 A. A);(det A) ++++ 2 0 4   4 2 2_1212 3 1 0   ++++ (1 3 1 * A);(det 1 3 1 * A);(3 * det A) ++++ 2 0 4   9 3 03636 4 2 2   ++++ (2 3 4 * A);(det 2 3 4 * A);((*/2 3 4)*det A) ++++  4 0 8    9 3 0288288 16 8 8   ++++ triangle=: 3 2$3 _2 , _4 1 , 8 3 bt=: triangle,.1 triangle;bt;(det bt);(1 A. bt);(det 1 A. bt) ++++++  3 _2 3 _2 1  3 _2 1  _4 1_4 1 1_50 8 3 150  8 3 8 3 1 _4 1 1  ++++++The last result agrees with Gullberg's statement that the absolute value of the determinant yields twice the area of the triangle. But, more generally, the determinant yields a signed area that indicates whether the vertices of the triangle (when plotted) occur in clockwise or counterclockwise order.
Similarly, the tetrahedron specified by a fourbythree
table of points in three dimensions may be bordered by ones
and subjected to the determinant to yield six times (!3
)
its signed volume. For example:
]tet=: 4 3$0 0 0 , 1 0 0 , 0 1 0 , 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 det tet,.1 _1 ]tet2=: ?. 4 3$10 1 7 4 5 2 0 6 6 9 3 5 8 det tet2,.1 _106LOGARITHMS On page 154 Gullberg says:
that is, a logarithm is an exponent which defines to what power the base a must be raised in order to give x, called the antilogarithm.In J the functionThe following practicable systems of logarithms are used:
lg x The common logarithm of x (to base 10) (also called log x ...)
ln x The natural logarighm of x (to base e)
lb x The binary logarithm of x (to base 2)
log_{a} x The logarithm of x to the base a (also called ^{a}log x, especially in older texts)
a with ^.
gives
the base a
logarithm, and the function ^.
(or 1x1 with ^.
) gives the natural log.
Hence:ln=: ^. log=: 10 with ^. lb=: 2 with ^. x=: 1 2 4 10 100 ln x 0 0.693147 1.38629 2.30259 4.60517 log x 0 0.30103 0.60206 1 2 lb x 0 1 2 3.32193 6.64386 ln 1 2 4 10 0j3.14159 0.693147j3.14159 1.38629j3.14159 2.30259j3.14159 ^ ln x _1 _2 _4 _10 _100 log x 0j1.36438 0.30103j1.36438 0.60206j1.36438 1j1.36438 2j1.36438 10 ^ log x _1 _2 _4 _10 _100THE PEANO AXIOMS On page 157 Gullberg says:
The natural numbers were axiomatically defined in 1899 by Giuseppe Peano in his ... Later, Peano modified his axioms to include also zero:The treatment in our Chapter 1 is based on Peano's original formulation (which did not include zero as a natural number), and denotes Peano's successor function by1. Zero is a number.
2. Every natural number or zero, a, has an immediate successor a + 1.
>:
(and its
inverse, the predecessor, by <:
).
GENERATING FUNCTIONS and TAYLOR SERIES In Section 7.2 GKP states:
Our generic generating function has the formIn Section 7B, CMC discusses this as follows:G(z) = g_{0} + g_{1}z + g_{2}z^{2} + ... (7.12)
and we say that G(z), or G for short, is the generating function for the sequence <g_{0},g_{1},g_{2}, ...>, which we also call <g_{n}>. The coefficient g_{n} of z^{n} in G(z) is sometimes denoted [z^{n}]G(z).
In GKP7.12 the limit (asSUBSCRIPTS VERSUS FUNCTIONS In Section 2.1 GKP states that:n
approaches infinity) of the polynomialG=. (g i.n) p. ]
is defined to be the generating function for the functiong
. In other words,g k
is thek
th element of the Taylor series forg
.For example, the functions for the exponential, sine, and the product of the sine and the exponential may be generated as follows:
gex=. ^ t. gsin=. 1&o. t. gsinex=. (1&o. * ^) t. ]ce=. gex i. 8 1 1 0.5 0.166667 0.0416667 0.00833333 0.00138889 0.000198413 ]cs=. gsin i.8 0 1 0 _0.166667 0 0.00833333 0 _0.000198413 ]cse=. gsinex i. 8 0 1 1 0.333333 0 _0.0333333 _0.0111111 _0.0015873
We'll be working with sums of the general formIn Section 2A, CMC discusses this as follows:a_{1} + a_{2} +...+ a_{n}
where each a_{k} is a number that has been defined somehow.
We will therefore treatSTIRLING NUMBERS In Section 6.1, GKP defines Stirling Numbers of the first and second kind by:a
as a function, and the list of indices as a second function, typicallyi.
or the functionEi=. i.@>:
. For exampleEi=. i.@>: Ei 5 0 1 2 3 4 5 a=. *: a Ei 5 0 1 4 9 16 25 +/ a Ei 5 55
...the number of ways to arrange n objects into k cyclesand provides tables of them in Table 245 and Table 244....the number of ways to partition a set of n things into k nonempty subsets
In Section 5F, CMC introduces the falling factorial
function ^!._1
and uses it to define the
Stirling numbers as matrices that provide
the coefficients for linear transformations between the
coefficients of certain important polynomials.
The required transformation matrices are given by:
s1=: : on ((i. ^!._1/ i.) %. (i. ^/ i.)) s2=: %. on s1 (s1;s2) 8r1 +++ 1 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 1 0 0 0 0 0 00 1 0 0 0 0 0 0 0 _1 1 0 0 0 0 00 1 1 0 0 0 0 0 0 2 _3 1 0 0 0 00 1 3 1 0 0 0 0 0 _6 11 _6 1 0 0 00 1 7 6 1 0 0 0 0 24 _50 35 _10 1 0 00 1 15 25 10 1 0 0 0 _120 274 _225 85 _15 1 00 1 31 90 65 15 1 0 0 720 _1764 1624 _735 175 _21 10 1 63 301 350 140 21 1 +++Functions to provide Tables 245 and 244 of GkP are defined in terms of these as follows
S1=:  on s1 S2=: s2 (S1;S2) 8r1 +++ 1 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 1 0 0 0 0 0 00 1 0 0 0 0 0 0 0 1 1 0 0 0 0 00 1 1 0 0 0 0 0 0 2 3 1 0 0 0 00 1 3 1 0 0 0 0 0 6 11 6 1 0 0 00 1 7 6 1 0 0 0 0 24 50 35 10 1 0 00 1 15 25 10 1 0 0 0 120 274 225 85 15 1 00 1 31 90 65 15 1 0 0 720 1764 1624 735 175 21 10 1 63 301 350 140 21 1 +++
These topics are presented as labs in the sense that, at any point in the presentation, you may enter your own J expressions to experiment with the ideas presented. Or you may use the facilities described in Section 4B to capture and revise expressions already used in the presentation or in your own experiments.
For example, choosing "Fractals, Visualization, & J" leads
to a function which, applied repeatedly to the oneelement
list ,1
, produces a matrix with an interesting
pattern. Moreover, it provides a function viewmat
that plots a view of the matrix as a grid of black and white
elements. Thus:
f=: ,~ ,.~ f ,1 1 1 1 0 f f ,1 1 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 f f f ,1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 load 'graph numeric trig' viewmat f f f f f f f f ,1
DEMONSTRATIONS The demos include a game (called Pousse), a table of distances between major cities, and numerous graphical displays of objects in two and three dimensions. By choosing the Definition option in some displays you may study, and even modify, the programs that produce them.
DICTIONARY DEFINITIONS Further information about J may be obtained from the Help menu as described in Section 4B, but definitions may also be obtained more directly by pressing key F1 to display the vocabulary, and then clicking on the desired item.
For example, selecting the item o.
will
show that the definition of the function 0 with o.
(used
to graph circles in Sections 3B and 18B) is the square root of
one minus the square.
A definition may also be displayed by placing the cursor immediately to the left of a symbol on the screen and pressing F1 while holding down the CONTROL key.
Perhaps the most important lesson for the layman is that there is no need to be intimidated by mathematics or mathematicians. On this matter, we give the final word to Hogben:The view which we shall explore is that mathematics is the language of size, shape and order and that it is an essential part of the equipment of an intelligent citizen to understand this language. If the rules of mathematics are the rules of grammar, there is no stupidity involved when we fail to see that a mathematical truth is obvious. The rules of ordinary grammar are not obvious. They have to be learned. They are not eternal truths. They are conveniences without whose aid truths about the sorts of things in the world cannot be communicated from one person to another.
There is a story about Diderot, the Encyclopaedist and materialist, a foremost figure in the intellectual awakening which immediately preceded the French Revolution. Diderot was staying at the Russian court, where his elegant flippancy was entertaining the nobility. Diderot was informed that a mathematician had established a proof of the existence of God........
Before the assembled court, Euler accosted him with the following pronouncement, which was uttered with due gravity:
a+b^{n}  = x, donc Dieu existe, repondez! nAlgebra was Arabic to Diderot. Unfortunately, he did not realize that was the trouble. Had he realized that algebra was just a language in which we describe the sizes of things, ... he would have asked Euler to translate ... into French........
Like many of us, Diderot had stagefright when confronted with a sentence in size language. He left the court abruptly amid the titters of the assembly, confined himself to his chambers, demanded a safe conduct, and promptly returned to France.
This discussion may be found by first clicking on Chapter 20 in the list at the beginning of the text, then clicking on Section 20C, and then moving back up the page to the last part of Section 20B.
,.
can be used to stitch
lists together to form tables, and lists and tables together to form
further tables, as illustrated by the following:
a=:1 4 7 b=:2 5 8 c=:3 6 9 a,.b 1 2 4 5 7 8 a,.b,.c 1 2 3 4 5 6 7 8 9 table=:a,.b,.c table,.>:c 1 2 3 4 4 5 6 7 7 8 9 10 >:table 2 3 4 5 6 7 8 9 10 table,.>:>:>:table 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9 10 11 12The function denoted by
,
can be used to catenate lists
and tables as illustrated by the following:
a,b 1 4 7 2 5 8 a,b,c 1 4 7 2 5 8 3 6 9 table,a 1 2 3 4 5 6 7 8 9 1 4 7 table,>:>:>:>:>:>:>:>:>:table 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18The function denoted by
:
can be used to transpose a
table as follows:
:table 1 4 7 2 5 8 3 6 9 :table,>:c 1 4 7 4 2 5 8 7 3 6 9 10Write various expressions employing the functions used in the preceding examples, and show the results produced.
next for list list
, and compare your
result with that produced by entering it on the computer.
1
), our
lists could contain neither negative numbers nor zero; but now that we
have extended our domain to the integers this restriction is removed. We
may therefore introduce the functions i.
and i:
that produce
lists of integers as illustrated below:
i.5 NB. The first five nonnegative integers 0 1 2 3 4 i:5 NB. The integers from _5 to 5 _5 _4 _3 _2 _1 0 1 2 3 4 5In the foregoing we used
NB.
which indicates that what follows
it is a note or comment that has no effect on the meaning of the preceding sentence.
The function denoted by +:
doubles its argument.
For example:
x=:i:5 x _5 _4 _3 _2 _1 0 1 2 3 4 5 +:x _10 _8 _6 _4 _2 0 2 4 6 8 10 double=:+: double x _10 _8 _6 _4 _2 0 2 4 6 8 10 y=:double for 2 x y _20 _16 _12 _8 _4 0 4 8 12 16 20 double for _1 y NB. Inverse of double _10 _8 _6 _4 _2 0 2 4 6 8 10 double for _1 x _2.5 _2 _1.5 _1 _0.5 0 0.5 1 1.5 2 2.5Some of the results of the last expression are not integers. Just as the inverse of the successor function led us out of the domain of the counting numbers, so the inverse of
double
has led out
of the domain of integers  this time into fractions or
rationals. These matters are treated further in Section 1J.
= > <. <: 
and !
Compare your definitions with those given below.
a=:i.6 a 0 1 2 3 4 5 =table a +++  0 1 2 3 4 5 +++ 01 0 0 0 0 0 10 1 0 0 0 0 20 0 1 0 0 0 30 0 0 1 0 0 40 0 0 0 1 0 50 0 0 0 0 1 +++ (=table a),.(>table a),.(<.table a) +++++++  0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 +++++++ 01 0 0 0 0 000 0 0 0 0 000 0 0 0 0 0 10 1 0 0 0 011 0 0 0 0 010 1 1 1 1 1 20 0 1 0 0 021 1 0 0 0 020 1 2 2 2 2 30 0 0 1 0 031 1 1 0 0 030 1 2 3 3 3 40 0 0 0 1 041 1 1 1 0 040 1 2 3 4 4 50 0 0 0 0 151 1 1 1 1 050 1 2 3 4 5 +++++++ (<:table a),.(table a),.(!table a) +++++++  0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 +++++++ 01 1 1 1 1 100 1 2 3 4 501 1 1 1 1 1 10 1 1 1 1 110 0 0 0 0 010 1 2 3 4 5 20 0 1 1 1 120 1 0 1 0 120 0 1 3 6 10 30 0 0 1 1 130 1 2 0 1 230 0 0 1 4 10 40 0 0 0 1 140 1 2 3 0 140 0 0 0 1 5 50 0 0 0 0 150 1 2 3 4 050 0 0 0 0 1 +++++++
=
is a truth function that compares its arguments for
equality, giving 1
if the relation is true, and 0
if it is false.
>
is a truth function called greater than.
<.
is called lesserof or minimum.
<:
is a truth function called less than or equal.

is remainder on dividing by the left argument.
!
is the binomial coefficient (m!n
is the number of different ways of choosing m
things from n
things).
This table is commonly shown without the zeros, and called Pascal's Triangle.
with=:&
) to some of the functions
= < >. <: 
introduced in Section S1E, and show
their results. Compare your results with the following:
with=: & a=:i:3 a _3 _2 _1 0 1 2 3 = with 2 a 0 0 0 0 0 1 0 < with 2 a 1 1 1 1 1 0 0 <: with 2 a 1 1 1 1 1 1 0 <. with 2 a _3 _2 _1 0 1 2 2 2 with  a 1 0 1 0 1 0 1 3 with  a 0 1 2 0 1 2 0
* table i:4 +++   _4 _3 _2 _1 0 1 2 3 4 +++ _4 16 12 8 4 0 _4 _8 _12 _16 _3 12 9 6 3 0 _3 _6 _9 _12 _2 8 6 4 2 0 _2 _4 _6 _8 _1 4 3 2 1 0 _1 _2 _3 _4  0 0 0 0 0 0 0 0 0 0  1 _4 _3 _2 _1 0 1 2 3 4  2 _8 _6 _4 _2 0 2 4 6 8  3_12 _9 _6 _3 0 3 6 9 12  4_16 _12 _8 _4 0 4 8 12 16 +++The idea of multiplication can be introduced at an elementary level by pictures of rectangles. For example:
a=:3 4 $ 1 a 1 1 1 1 1 1 1 1 1 1 1 1 ,a 1 1 1 1 1 1 1 1 1 1 1 1 +/,a 12 +/a 3 3 3 3 +/+/a 12 b=::a b 1 1 1 1 1 1 1 1 1 1 1 1 ,b 1 1 1 1 1 1 1 1 1 1 1 1 +/,b 12 +/b 4 4 4 +/+/b 12Discussion of the notation used here (such as
$
)
may be found in Sections 2E and 2F.
In his imaginative and persuasive Vision in Elementary Mathematics [22], W.W. Sawyer uses similar (handdrawn) pictures to introduce elementary concepts in arithmetic and algebra, clarifying the ideas by "translating" from pictures to notation and back.
Sawyer's pictures do not even require the somewhat abstract
notion of the numeral 1
used above, but uses dots:
c=: a { ' .' c .... .... .... :c ... ... ... ... c='.' 1 1 1 1 1 1 1 1 1 1 1 1 +/+/c='.' 12Moreover, he draws a tied bag (rather similar to &) to denote an unknown quantity, and translates to algebraic expressions that denote unknowns by letters such as x and y. For example:
g=:'&&...' g &&...translates to
2x+3
.
Addition is shown as:
g,g &&...&&...which is denoted by
(2x+3)+(2x+3)
and
is (pictorially) equivalent to that shown above, or to
&&&&......
which, in turn, translates
to 4x+6
.
p.
and
show the results they produce. Include cases with negative coefficients and
negative arguments, and compare your results with the following:
b=:i:4 b _4 _3 _2 _1 0 1 2 3 4 1 3 3 1 p. b _27 _8 _1 0 1 8 27 64 125 _1 3 _3 1 p. b _125 _64 _27 _8 _1 0 1 8 27 (b1)^3 _125 _64 _27 _8 _1 0 1 8 27 1 _4 6 _4 1 p. b 625 256 81 16 1 0 1 16 81 (b1)^4 625 256 81 16 1 0 1 16 81
c=:i:5r1 c _5 _4 _3 _2 _1 0 1 2 3 4 5 %table c +++   _5 _4 _3 _2 _1 0 1 2 3 4 5 +++ _5 1 5r4 5r3 5r2 5 __ _5 _5r2 _5r3 _5r4 _1 _4 4r5 1 4r3 2 4 __ _4 _2 _4r3 _1 _4r5 _3 3r5 3r4 1 3r2 3 __ _3 _3r2 _1 _3r4 _3r5 _2 2r5 1r2 2r3 1 2 __ _2 _1 _2r3 _1r2 _2r5 _1 1r5 1r4 1r3 1r2 1 __ _1 _1r2 _1r3 _1r4 _1r5  0 0 0 0 0 0 0 0 0 0 0 0  1_1r5 _1r4 _1r3 _1r2 _1 _ 1 1r2 1r3 1r4 1r5  2_2r5 _1r2 _2r3 _1 _2 _ 2 1 2r3 1r2 2r5  3_3r5 _3r4 _1 _3r2 _3 _ 3 3r2 1 3r4 3r5  4_4r5 _1 _4r3 _2 _4 _ 4 2 4r3 1 4r5  5 _1 _5r4 _5r3 _5r2 _5 _ 5 5r2 5r3 5r4 1 +++Comment on the patterns in the following extension of the power table to negative arguments. In particular, note the value of
0^0
(which
may have surprised you in the power table in Section 1H).
For further justification of the choice of 1
for
the value of the "indeterminate" expression 0^0
, see
page 785 of Gullberg [20].
^table c +++   _5 _4 _3 _2 _1 0 1 2 3 4 5 +++ _5_1r3125 1r625 _1r125 1r25 _1r5 1 _5 25 _125 625 _3125 _4_1r1024 1r256 _1r64 1r16 _1r4 1 _4 16 _64 256 _1024 _3 _1r243 1r81 _1r27 1r9 _1r3 1 _3 9 _27 81 _243 _2 _1r32 1r16 _1r8 1r4 _1r2 1 _2 4 _8 16 _32 _1 _1 1 _1 1 _1 1 _1 1 _1 1 _1  0 _ _ _ _ _ 1 0 0 0 0 0  1 1 1 1 1 1 1 1 1 1 1 1  2 1r32 1r16 1r8 1r4 1r2 1 2 4 8 16 32  3 1r243 1r81 1r27 1r9 1r3 1 3 9 27 81 243  4 1r1024 1r256 1r64 1r16 1r4 1 4 16 64 256 1024  5 1r3125 1r625 1r125 1r25 1r5 1 5 25 125 625 3125 +++
Click on any one of the Chapters listed at the beginning of the text, and then click on the chapter heading to return to the list of chapters.
Click on any one of the Sections listed at the beginning of the selected chapter, and then click on the Section heading to return to the chapter.
Again select a chapter and a section within it. Then click on the label beginning with S that appears to the right of the section heading.
Click on the heading of the supplemental section to return to the corresponding main section.
!:
used in the expression set=:9!:11
to
define the function for setting the number of digits displayed
is called the foreign conjunction, because it concerns matters other than
the normal verbs such as + *
and %
.
Click on the Help menu to display the items for which information is
available. Then click on Foreign Conjunction, and then on item 9 to see the
case used in defining set
. Also click on the button marked >> to
see further pages.
Finally press the Escape key (Esc) to remove the Help display.
In the Japanese Hiragana alphabet, each character represents a sound such as ka, ru, si, or o. There are 10 possible beginnings  the consonants k, s, t, n, m, y, r, w, and 'blank'; ... The ending is always one one of the five sounds a, e, i, o, u. How many characters are there in this alphabet? We could show this as a tree with 10 branches and 5 twigs on each ... This problem could equally well be solved by the rectangle ...
Beginnings=:' KSTNHMYRW' Endings=:'aeiou' { Beginnings;Endings ++++++  a e i o u ++++++ KaKeKiKoKu ++++++ SaSeSiSoSu ++++++ TaTeTiToTu ++++++ NaNeNiNoNu ++++++ HaHeHiHoHu ++++++ MaMeMiMoMu ++++++ YaYeYiYoYu ++++++ RaReRiRoRu ++++++ WaWeWiWoWu ++++++The catalogue function (
{
) used above may
be further illustrated as follows:
{ 0 1 2;0 1 2;0 1 2 ++++ 0 0 00 0 10 0 2 ++++ 0 1 00 1 10 1 2 ++++ 0 2 00 2 10 2 2 ++++ ++++ 1 0 01 0 11 0 2 ++++ 1 1 01 1 11 1 2 ++++ 1 2 01 2 11 2 2 ++++ ++++ 2 0 02 0 12 0 2 ++++ 2 1 02 1 12 1 2 ++++ 2 2 02 2 12 2 2 ++++ { 'cht';'oa';'gtw' ++++ cogcotcow ++++ cagcatcaw ++++ ++++ hoghothow ++++ haghathaw ++++ ++++ togtottow ++++ tagtattaw ++++
%table i:4 +++ _4 1 1.33333 2 4 __ _4 _2 _1.33333 _1 _3 0.75 1 1.5 3 __ _3 _1.5 _1 _0.75 _2 0.5 0.666667 1 2 __ _2 _1 _0.666667 _0.5 _1 0.25 0.333333 0.5 1 __ _1 _0.5 _0.333333 _0.25  0 0 0 0 0 0 0 0 0 0  1_0.25 _0.333333 _0.5 _1 _ 1 0.5 0.333333 0.25  2 _0.5 _0.666667 _1 _2 _ 2 1 0.666667 0.5  3_0.75 _1 _1.5 _3 _ 3 1.5 1 0.75  4 _1 _1.33333 _2 _4 _ 4 2 1.33333 1 +++ %table i:4r1 +++   _4 _3 _2 _1 0 1 2 3 4 +++ _4 1 4r3 2 4 __ _4 _2 _4r3 _1 _3 3r4 1 3r2 3 __ _3 _3r2 _1 _3r4 _2 1r2 2r3 1 2 __ _2 _1 _2r3 _1r2 _1 1r4 1r3 1r2 1 __ _1 _1r2 _1r3 _1r4  0 0 0 0 0 0 0 0 0 0  1_1r4 _1r3 _1r2 _1 _ 1 1r2 1r3 1r4  2_1r2 _2r3 _1 _2 _ 2 1 2r3 1r2  3_3r4 _1 _3r2 _3 _ 3 3r2 1 3r4  4 _1 _4r3 _2 _4 _ 4 2 4r3 1 +++

;
one (called Negate) for use with one argument,
and the other (called Minus) for use with two arguments. For example:
 i.7 NB. Monadic use 0 _1 _2 _3 _4 _5 _6 3  i.7 NB. Dyadic use 3 2 1 0 _1 _2 _3Other functions also have both monadic and dyadic cases. For example,
a * b
denotes the product of a
and b
, while *b
denotes
the sign of b
.
A deinition may be displayed directly without displaying the Vocabulary: simply place the cursor just to the left of the symbol, and press F1 while holding down the control key (Ctrl).
/
modifies a verb to which it applies,
the prefix adverb \
modifies its argument verb, applying
it to each prefix of the eventual argument. For example:
a=:1 2 3 4 5 +/a 15 +/\a 1 3 6 10 15 sum=:+/ sum\a 1 3 6 10 15 (sum 1),(sum 1 2),(sum 1 2 3),(sum 1 2 3 4),(sum 1 2 3 4 5) 1 3 6 10 15 b=:1 2 3 4 5 6r1 */\b 1 2 6 24 120 720 !b 1 2 6 24 120 720 %/\b 1 1r2 3r2 3r8 15r8 5r16Consulting the Vocabulary if necessary, state the results of the following expressions, and check your results by executing them on the computer:
c=:18 3 96 17 24 12 <./c <./\c >./\c +./c +./\c c % +./\c *./\c (*./\c) % c
;
) used in the expression
PLOT x;f x
in Section 3A boxes its arguments and
catenates them to form a twoelement list. Together with the laminate
function also introduced in Section 3A and the ,
and
,.
introduced in Section S1B, they provide four ways
of forming lists and tables.
Experiment with their joint use, employing the shape function
$
to examine the shapes of results.
o.
used in Section 3 B. In particular,
experiment with the monadic case in expressions such as
o.1
and o.2
and o.1r2
.
Examine a plot of the sine function (sin=:1 with o.
)
to determine the approximate area under one of its arches. Then define
cos=:2 with o.
and use plot
to plot each of sin
and cos
against the argument,
and against one another.
Look up the definition of +:
(the double function) and plot
sin on +:
against sin
.
Finally, plot 5 with o.
against 6 with o.
on
the argument 1r12*i:10
to draw a hyperbola.
0 0 1 with p.
and 2 0 1 with p.
and 1 4 6 4 1 with p.
.
c
and d
are the same length
(that is, have the same number of elements), then the polynomial (c+d) with p.
is equivalent to the sum c with p. + d with p.
. If one is shorter
than the other, it must be extended by trailing zeros before adding it.
Test this assertion for various values of c
and d
.
with=:& x=:i:4 x _4 _3 _2 _1 0 1 2 3 4 0 0 1 with p. x 16 9 4 1 0 1 4 9 16 x^2 16 9 4 1 0 1 4 9 16 0 0 3 with p. x 48 27 12 3 0 3 12 27 48 3*x^2 48 27 12 3 0 3 12 27 48
e
is the diagonal sum(s) of the multiplication table
c */ d
, then the function e with p.
is
equivalent to the product g=: c with p. * d with p.
. Test
this assertion for various values of the coefficients c
and
d
.
1 1 with p. x
yields the result
1+x
, and (1 1 with p. * 1 1 with p.) x
yields (1+x)^2
. Determine (by hand and by computer) the
coefficients of polynomials equivalent to further powers of 1+x
.
Compare your results with the table of binomial coefficients !table i.8
.
d
obtained by multiplying a list of
coefficients c
by its indices i.#c
and then deleting
the leading element gives the polynomial d with p.
that is the
derivative or rate of change of the function c with p.
. Thus:
c=:1 2 1 c 1 2 1 i.#c 0 1 2 c*i.#c 0 2 2 d=:2 2 x=:i:3 x _3 _2 _1 0 1 2 3 (c with p. ,: d with p.) x 4 1 0 1 4 9 16 _4 _2 0 2 4 6 8Use the expression
PLOT x;(c with p. ,: d with p.) x
to plot
the function together with its derivative, and observe that the derivative does
represent the rate of change. Repeat for other polynomials.
d.1
(discussed in Chapter 6) as
illustrated below:
c with p. d.1 x _4 _2 0 2 4 6 8 c with p. d.1 t. i.5 2 2 0 0 0
d.2
gives the second derivative, the
derivative of the derivative. Experiment with its use.
t.
to determine the coessicients of sums,
differences, products, and composition of various polynomials.
d._1
yields the antiderivative or
integral discussed in Chapter 18. Experiment with its use on various polynomials.
!  _1: 3: ]
used in the definition of the
power series function ps
. Then experiment with each of the
following "components" of ps
, and explain their behaviour:
a=:4:  ] b=:3: = a c=:_1: ^ b d=:2 with  e=: d * c f=:% on ! g=:f * e
pg=:% on !
is the power series function for the
growth or exponential function discussed in Chapter 7. Evaluate,
plot, and otherwise experiment with, its use.
Experiment with the growth function g=:(pg 0 1 2 3 4 5 6) with p.
DER=: 1: }. ] * i. on # der=: 1: . ] * i. on #Note that their results are equivalent as polynomial coefficients, but that the latter has the (sometimes convenient) property of yielding a result with the same number of elements as the argument.
f
reaches its lowest
point (and therefore changes from decreasing to increasng) is called a
point of inflection of f
. Enter the following expressions, and
comment on the resulting graphs:
der=: 1: . ] * i. on # c=: 4 _3 _2 1 PLOT x2;(c with p.,(der c)with p.,:(der der c)with p.)x2
x=: i: 1j5 x _1 _0.6 _0.2 0.2 0.6 1
x=:i:2 x ^x ^  x %^x (^x)*(^x) (^*^ on ) x
y=:i:3j100
.
INV=:^:_1 a=:i.5 a 0 1 2 3 4 ^&3 a 0 1 8 27 64 ^&3 INV a 0 1 1.25992 1.44225 1.5874 ^&3 ^&3 INV a 0 1 2 3 4 ^&1r3 a 0 1 1.25992 1.44225 1.5874 ^ a 1 2.71828 7.38906 20.0855 54.5982 ^INV ^ a 0 1 2 3 4 a+2 2 3 4 5 6 !a+2 2 6 24 120 720 ! INV ! a+2 2 3 4 5 6
g
defined therein.
g
as follows:
c=: 4 6 _8 2 g=: c with p.Use the function
tighten
of Section 9C with the initial bracket
ab=: _1 1
to get approximations to one of the roots of g
.
Then use other initial brackets to approximate the other two roots, and apply
g
to the results to confirm that they are indeed (near) roots. Compare
your roots with the result of p. c
.
Experiment with other polynomial functions. Note that a polynomial will have one less root than the number of elements in its coefficient, but that some of them will be complex in the sense defined in Chapter 19.
The method of false position will find only the real (that is, noncomplex)
roots. The result of p. c
shows each complex root with a j
separating its real and imaginary parts.
We will use the function j.
which multiplies
its single argument by the square root of negative one, and
which forms a complex number from two arguments. For example:
j.4 0j4 (j.4)*(j.4) _16 3+j.4 3j4 3 j. 4 3j4 3j4 * 5j12 _33j56 (3*5)+(3*0j12)+(0j4*5)+(0j4*0j12) _33j56The last result illustrates the fact that the multiplication of complex numbers follows the normal rules for the product of the sums of their components (
3 0j4 5
and 0j12
).
Experiment with multiplying other pairs of complex numbers.
In particular, verify that the product of 3j4
with
its conjugate 3j_4
yields a real number.
The (monadic) function +
yields the conjugate
of its argument. For example:
+5j12 5j_12 5j12 * +5j12 169 %: 5j12 * +5j12 13  5j12 13The foregoing illustrates that the square root of the product of a number with its conjugate is its magnitude (given by the function

). Verify that the magnitude of a real
number is itself, as is its conjugate.
+/i.n
(the sum
of the first n
nonnegative integers) is equivalent
to n*(n1)%2
.
Make a table of the sum of squares (+/*:i.n
)
and try to find an equivalent expression that is easier to
calculate. Then write an informal proof of the discovered
relation.
f=:1:`(+//.@(,:~)@($:@<:))@.* g=:1:`((],+/@(_2&{.))@$:@<:)@.*See page 286 of Gullberg for a discussion of Fibonacci numbers.
a=: 'episcopal' p=:1 0 6 3 2 4 5 8 7 p{a !#a NB. Number of permutations of a index=: A. p index index A. a
+
for
or. In a broader domain it is necessary to distinguish between
the arithmetic and logical functions, and we therefore use
+ *
for the arithmetic functions, and
+. *.
for the logical.
Consult the Vocabulary for the significance of other
arithmetic functions used as Booleans. Also note that
p <: q
tests whether p
implies q
.
2
or
5
.
+
and *
were
seen to be both associative and commutative, whereas

and %
were neither associative
nor commutative. Try to find a function that is commutative
but not associative.
Hint: Consult the Vocabulary for the functions +:
(notor) and *:
(notand).
An associative function g
defined on a domain
d
is said to form a group if the table
d g/ d
has the following properties:
a) there is a unit element e
such that
e&g
and g&e
are identity
functions; that is, both e&g d
and
g&e d
yield d
.
b) Each element x
of d
has an inverse
xi
in d
such that (x&g)@(xi&)
is the identity function.
For example:
d=:0 1 2 3 g=:4&@+ NB. Addition modulo 4 d g table d +++  0 1 2 3 +++ 00 1 2 3 11 2 3 0 22 3 0 1 33 0 1 2 +++In the foregoing table it is clear that
0
is the
identity element. Thus:e=:0 NB. Identity element e&g d 0 1 2 3 g&e d 0 1 2 3Moreover, a little experimentation will show that
3
is the inverse of 1
, and that 2
is
selfinverse:1 g d 1 2 3 0 3 g 1 g d NB. 3 is inverse of 1 0 1 2 3 2 g d 2 3 0 1 2 g 2 g d NB. 2 is selfinverse 0 1 2 3A group function on a given domain may also form a subgroup on a subset of the domain. For example:
0 2 g table 0 2 +++  0 2 +++ 00 2 22 0 +++A function on the domain of the leading integers can be easily mapped onto another domain, so as to give a more abstract appearance to a group. For example:
ad=:'ABCD' map=: ad&i."0 map ad 0 1 2 3 ad g&.map table ad +++  ABCD +++ AABCD BBCDA CCDAB DDABC +++Define a group of order eight as follows:
d=:i.8 g=:8&@+Then display the group table, and try to find any subgroups. Also show that the element
1
is a generator
of the group by entering the expression
1&g ^:(i.12) d
. The result shows
that the powers of the
function 1&g
generate all rows of the
group table.
dp=:+/ . *
must include a space
before the dot, for otherwise the phrase /.
would
be recognized as the single entity that represents the
oblique operator as shown in the Vocabulary. Compare the
results of applying the wordformation function ;:
to the lists '+/ . *'
and '+/. *'
.
sop=:+/\
(sum over prefixes), then
sopinv=: sop^:_1
is its inverse.Test this assertion
by entering expressions such
as sopinv sop x=:2 3 5 7 11
and
sop sopinv x
.
Guess at the value of a matrix mi
such that
mi & dp=:+/ . *
is equivalent to the function
sopinv
. Compare your guess with the result of
applying sopinv
to an identity matrix.
NORM=:4 : 0 base=. x. list=: y. result=. i.0 carry=. 0 while. 0<#list do. next=. carry + {: list NB. carry plus last of list list=. }: list NB. Delete last from list rem=. base  next NB. Remainder on div by base result=. rem , result carry=. (nextrem) % base end. result )For example:
a=: 2 34 56 c=:10 NORM a c 5 9 6 10 #. a NB. Base 10 value of a 596 10 #. c 596However, an argument such as
23 4 5
requires a result with more
elements than the argument, and the function NORM
fails to
account for this. Thus:
b=: 23 4 5 10 NORM b 3 4 5The following function produces the correct result:
norm=:4 : 0 base=. x. list=: y. result=. i.0 carry=. 0 while. .*./0=carry,list do. NB. Not all zero next=. carry + {: list NB. carry plus last of list list=. 0,}: list NB. Delete last from list rem=. base  next NB. Remainder on div by base result=. rem , result carry=. (nextrem) % base end. result ) 10 norm b 2 3 4 5Choose a pair of rather large numbers (of eight or more digits) and multiply them by the conventional method taught in elementary school. Then multiply them by the method given in Section 16C and compare the results.
norm
of Section S16C with bases other than 10
.
Also define and use the functions n10=: 10 with norm
and
n2=:2 with norm
.
Repeat the exercise suggested in Section S16C, but using
base 8
.
and =: *. NB. 13B ant =: 0:,] % next i. on # NB. 18C anti =: d. _1 NB. 18A cos =: 2&o. NB. 19D cube =: ^ with 3 NB. 14G dec =: rat^:_1 NB. 2A der =: 1: . ] * i. on # NB. 6B derv =: d.1 NB. 18A decay =: ^ on  NB. 8C det =: / . * NB. 20B diag =: /. NB. 11F dp =: +/ . * NB. 15A each =: "0 NB. 11F eachbox =: &.> NB. 11F eachrow =: "1 NB. 13D exp =: ^ NB. 6C for =: ^: NB. 1C gcd =: +. NB. 2E INV =: ^:_1 NB. 9A lcm =: *. NB. 2E load 'plot' NB. 3A mean =: +/ % # NB. 9C next =: >: NB. 1A not =: . NB. 13B on =: @ NB. 2D or =: +. NB. 13B over =: 2 :'(u.@v.)=((u.@[)v.(u.@]))'"0 NB. 14E pa =: p. NB. 16A pc =: +//. on (*/) NB. 16B pd =: . on [ pa ] NB. 16A PLOT =: 'line,stick'&plot NB. 3A pref =: \ NB. 11F previous =: <: NB. 1A pw =: 1 : '2 with (u.\)' NB. 3C rat =: x: NB. 2A roots =: > on {: on p. NB. 9E set =: 9!:11 NB. 2B sign =: * NB. 2D sin =: 1&o. NB. 5B sort =: /:~ NB. 12A sqr =: *: NB. 9A sqrt =: %: NB. 9A sum =: +/ NB. 11F trans =: : NB. 12A under =: &. NB. 10D with =: & NB. 1F zero =: ** NB. 9E
1. Hogben, Lancelot, Mathematics for the Million, 1983 paperback edition, W.W. Norton. First published 1937.
2. Graham, R.L., and Knuth, D.E., Patashnik, O., Concrete Mathematics, AddisonWesley, 1988.
3. Cajori, F., A History of Mathematical Notations, The Open Court Publishing Company, La Salle, Illinois, 1928 (Now available from Dover).
4. Cajori, F., William Oughtred: A great SeventeenthCentury Teacher of Mathematics, Open Court, 1916.
5. Staff of the Computation Laboratory, A Description of the Mark IV Calculator, Annals of the Computation Laboratory, Volume XXVIII, Harvard Press, 1952.
6. Backus, J., “The History of FORTRAN I, II, and III”, ACM Sigplan Notices 13 # 7, 1978.
7. Heaviside, O., Electromagnetic Theory, Chelsea Publishing Co. Reprint 1971.
8. Falkoff, A.D., and K.E. Iverson, APL\360 User’s Manual, IBM Corp, 1966.
9. Boole, G., An investigation of the laws of thought on which are founded the mathematical theories of logic and probabilities, Dover, reprint, 1951.
10. March, H.W., and H.C. Wolf, Calculus, McGrawHill, New York, 1917.
11. Curry, H.B., and R. Feys, Combinatory Logic, North Holland Publishers, 1968.
12. Iverson, K.E. “A Personal View of APL”, IBM Systems Journal, v30 #4, 1991.
13. Synge, J.L., and A. Schild, Tensor Calculus, Dover, reprint, 1978.
14. Pinker, S., The Language Instinct, William Morrow, 1994.
15. Deacon, T.W., The Symbolic Species, Norton, 1997.
16. Iverson, K.E. Exploring Math, Iverson Software, Toronto, 1996
17. Lakatos, Imre, Proofs and Refutations: the logic of mathematical discovery, Cambridge University Press, 1976
18. Lanczos, C., Applied Analysis, PrenticeHall, 1956
19. Hardy, G.H., A Mathematician’s Apology, Cambridge University Press, 1940
20. Gullberg, Jan, Mathematics: From the Birth of Numbers, W.W. Norton, 1997
21. Iverson, K.E., Concrete Math Companion, Iverson Software, Toronto, 1995
22. Sawyer, W.W., Introducing Mathematics:1 Vision in Elementary Mathematics, Penguin Books, 1964