>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Dictionary

28. Identity Functions and Neutral
The monads`0&+` and`1&*` are identity functions, and`0` and 1 are said to be identity elements or neutrals of the dyads`+` and`*` respectively. Insertion on an empty list yields the neutral of the dyad inserted. For example:

       +/ i.0         +/''           +/0{. 2 3 5
    0              0              0

       */i.0          */''           */0{. 2 3 5
    1              1              1

These results are useful in partitioning lists; they ensure that certain obvious relations continue to hold even when one of the partitions is empty. For example:

       +/ a=: 2 3 5 7 11
    28

       (+/4{.a)+(+/4}.a)
    28

       (+/0{.a)+(+/0}.a)
    28

       */a
    2310

       (*/4{.a)*(*/4}.a)
    2310

       (*/0{.a)*(*/0}.a)
    2310

The identity functions and other basic characteristics of functions (such as rank) are given by the adverb`b.` ,`` as illustrated below:

       ^ b. _1     Inverse
    ^.

       ^ b. 0      Ranks
    _ 0 0

       ^ b. 1      Identity function
    $&1@(}.@$)

Exercises

28.1

Predict and test the results of the following expressions:

    */''
    <./''
    >./''
    >./0 4 4 $ 0
    +/ . */ 0 4 4 $ 0
    1 2 3 4 +&.^./ 5 6 7 8

28.2 | Experiment with the dyad`{@;` and give the term used to describe it in mathematics. Answer: Cartesian product
28.3 | Test the assertion that the monads`(%:@~. +/ . * =)` and`%:` are equivalent, and state the utility of the former when applied to a list such as`1 4 1 4 2` that has repeated elements. Answer: The function`%:` (which could be a function costly to execute) is applied only to the distinct elements the argument (as selected by the nub function`~.`).

28.4

Comment on the following experiments before reading the comments on the right:

`a=: 2 3 5 [ b=: 1 2 4`
`a (f=: *:@+) b` | Square of sum
`a (g=: +&*: + +:@*) b` | Sum of squares plus double product
`a (f=g) b` | Expression of the identity of the functions
`a (f-:g) b` | `f` and`g` in a tautology (whose result is
`taut=: f-:g` | always true; that is,`1`).

28.5

A phrase such as`f-:g` may be a tautology for the dyadic case only, for the monadic case only, or for both. Use the following tautologies as reading and writing exercises, including statements of applicability (Dyad only, etc.):

`t1=: >: -: > +. =` | (Dyad only) The primitive`>:` is identical to greater than or equal
`t2=: <. -: -@>.&-` | (Both) Lesser-of is neg on greater-of on neg; Floor is neg on ceiling on neg
`t3=: <. -: >.&.-` | Same as`t2` but uses under
`t4=: *:@>: -: *: + +: + 1:` | (Monad) Square of`a+1` is square of`a` plus twice`a `plus`1```
`t5=: *:@>: -: #.&1 2 1"0` | Same as`t4` using polynomial
`t6=: ^&3@>: -: #.&1 3 3 1"0` | Like`t5` for cube
`bc=: i.@>: ! ]` | Binomial coefficients
`t7=: (>:@]^[) -: (]#.bc@[)"0` | Like`t6` with`k&t7` for`k`th power
`s=: 1&o.` | Sine
`c=: 2&o.` | Cosine
`t8=: s@+-:(s@[*c@])+(c@[*s@])` | (Dyad) Addition and Subtraction
`t9=: s@--:(s@[*c@])-(c@[*s@])` | Formulas for sine
`det=: -/ . *` | Determinant
`perm=: +/ . *` | Permanent
`sct=: 1 2&o."0@(,"0)` | Sine and cosine tables
`t10=: s@- -: det@sct` | Same as`t9` but using the determinant of the sin and cos table
`t11=: s@+ -: perm@sct` | Like`t8` using the permanent
`S=: 5&o.` | Hyperbolic sine
`C=: 6&o.` | Hyperbolic cosine
`SCT=: 5 6&o."0@(,"0)` | Sinh and Cosh table
`t12=: S@+ -: perm@SCT` | Addition theorem for sinh
`SINH=: ^ .: -` | Odd part of exponential
`COSH=: ^ .. -` | Even part of exponential
`t13=: SINH -: S` | Sinh is odd part of exponential
`t14=: COSH -: C` | Cosh is the even part of exponential
`sine=: ^&.j. .: -` | Sine is the odd part of exponential
`t15=: sine -: s` | under multiplication by`0j1`

28.6

Comment on the following expressions before reading the comments on the right:

`g=: + > >.` | Test if sum exceeds maximum
`5 g 2` | True for positive arguments
`5 g _2 _1 0 1 2` | but not true in general
`f=: *.&(0&<)` | Test if both arguments exceed`0`
`theorem=: f <: g` | The truth value of the result of`f` does not exceed that of`g` .`` This may also be stated as "if`f` (is true) then`g` (is true)" or as "`f` implies`g`"
`5 theorem _2 _1 0 1 2`

>> << Ndx Usr Pri Phr Dic Rel Voc !: wd Help Dictionary