This file is indexed.

/usr/share/doc/axiom-doc/hypertex/glossarypage.xhtml is in axiom-hypertex-data 20120501-8.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:xlink="http://www.w3.org/1999/xlink"
      xmlns:m="http://www.w3.org/1998/Math/MathML">
 <head>
  <meta http-equiv="Content-Type" content="text/html" charset="us-ascii"/>
  <title>Axiom Documentation</title>
  <style>

   html {
     background-color: #ECEA81;
   }

   body { 
     margin: 0px;
     padding: 0px;
   }

   div.command { 
     color:red;
   }

   div.center {
     color:blue;
   }

   div.reset {
     visibility:hidden;
   }

   div.mathml { 
     color:blue;
   }

   input.subbut {
     background-color:#ECEA81;
     border: 0;
     color:green;
     font-family: "Courier New", Courier, monospace;
   }

   input.noresult {
     background-color:#ECEA81;
     border: 0;
     color:black;
     font-family: "Courier New", Courier, monospace;
   }

   span.cmd { 
     color:green;
     font-family: "Courier New", Courier, monospace;
   }

   pre {
     font-family: "Courier New", Courier, monospace;
   }
  </style>
 <style>
  div.glabel    { color:blue; }
  div.gsyntax   { color:blue; }
  div.gspad     { color:blue; }
  div.gfunction { color:blue; }
  div.gtype     { color:blue; }
  div.gcmd      { color:blue; }
 </style>
 </head>
 <body>
  <div align="center"><img align="middle" src="doctitle.png"/></div>
  <hr/>
<ul>
 <li><a name="p0" class="glabel"/><b>!</b>
  <div class="gsyntax">(syntax)</div> Suffix character for 
  <a href="#p14365">destructive operations</a>.
 </li>
 <li><a name="p74" class="glabel"/><b>,</b>
  <div class="gsyntax">(syntax)</div> a separator for items in a 
  <a href="#p50262">tuple</a>,  e.g. to separate arguments of a function 
  <div class="gspad">f(x, y)</div>.
 </li>
 <li><a name="p210" class="glabel"/><b>=></b>
  <div class="gsyntax">(syntax)</div> the expression 
  <div class="gspad">a => b</div> is equivalent to 
  <div class="gspad">if a then</div> <a href="#p19348">exit</a> 
  <div class="gspad">b</div>.
 </li>
 <li><a name="p317" class="glabel"/><b>?</b>
  <ol>
   <li> 
    <div class="gsyntax">(syntax)</div> a suffix character for 
    Boolean-valued <div class="gfunction">function</div> names,  
    e.g. <div class="gfunction">odd?</div>. 
   </li>
   <li> 
    Suffix character for pattern variables. 
   </li>
   <li> The special type <div class="gspad">?</div> means 
    <div class="gsyntax">don't care</div>. For example,  the declaration 
    <div align="center" class="gspad">x : Polynomial ?</div>  means that 
    values assigned to <div class="gspad">x</div> must be polynomials over 
    an arbitrary <a href="#p51532">underlying domain</a>.
   </li>
  </ol>
 </li>
 <li><a name="p725" class="glabel"/><b>abstract datatype</b>
  a programming language principle used in Axiom  where a datatype is 
  defined in two parts: (1) a <div class="gsyntax">public</div> part 
  describing a set of <a href="#p20171">exports</a>, principally operations
  that apply to objects of that type,  and (2) a
  <div class="gsyntax">private</div> part describing the implementation of
  the datatype usually in terms of a <a href="#p44277">representation</a> for
  objects of the type. Programs which create and otherwise manipulate objects
  of the type may only do so through its exports. The representation and
  other implementation information is specifically hidden.
 </li>
 <li><a name="p1287" class="glabel"/><b>abstraction</b>
  described functionally or conceptually without regard to implementation
 </li>
 <li><a name="p1362" class="glabel"/><b>accuracy</b>
  the degree of exactness of an approximation or measurement. In computer
  algebra systems,  computations are typically carried out with complete 
  accuracy using integers or rational numbers of indefinite size. Domain
  <div class="gtype">Float</div> provides a function
  <div class="gfunction">precision</div> from
  <div class="gtype">Float</div> to change the precision for floating point
  computations. Computations using <div class="gtype">DoubleFloat</div>
  have a fixed precision but uncertain accuracy.
 </li>
 <li><a name="p1794" class="glabel"/><b>add-chain</b>
  a hierarchy formed by <a href="#p16819">domain extensions</a>. If domain
  <div class="gspad">A</div> extends domain <div class="gspad">B</div> and
  domain <div class="gspad">B</div> extends domain <div class="gspad">C</div>,
  then <div class="gspad">A</div> has <div class="gsyntax">add-chain</div>
  <div class="gspad">B</div>-<div class="gspad">C</div>.
 </li>
 <li><a name="p1993" class="glabel"/><b>aggregate</b>
  a data structure designed to hold multiple values. Examples of aggregates
  are <div class="gtype">List</div>,  <div class="gtype">Set</div>, 
  <div class="gtype">Matrix</div> and <div class="gtype">Bits</div>.
 </li>
 <li><a name="p2150" class="glabel"/><b>AKCL</b>
  Austin Kyoto Common LISP,  a version of
  <a href="#p30645"><div class="gspad">KCL</div></a> produced by
  William Schelter, Austin, Texas.
 </li>
 <li><a name="p2267" class="glabel"/><b>algorithm</b>
  a step-by-step procedure for a solution of a problem; a program
 </li>
 <li><a name="p2335" class="glabel"/><b>ancestor</b>
  (of a domain) a category which is a <a href="#p38095">parent</a> of the
  domain,  or a <a href="#p38095">parent</a> of a
  <a href="#p38095">parent</a> and so on.
 </li>
 <li><a name="p2473" class="glabel"/><b>application</b>
  <div class="gsyntax">(syntax)</div> an expression denoting "application"
  of a function to a set of <a href="#p2885">argument</a> parameters.
  Applications are written as a <a href="#p38004">parameterized form</a>.
  For example,  the form <div class="gspad">f(x, y)</div> indicates the
  "application of the function <div class="gspad">f</div> to the tuple of
  arguments <div class="gspad">x</div> and <div class="gspad">y</div>". 
  See also <a href="#p19167">evaluation</a> and
  <a href="#p29675">invocation</a>.
 </li>
 <li><a name="p2852" class="glabel"/><b>apply</b>
  See <a href="#p2473">application</a>.
 </li>
 <li><a name="p2885" class="glabel"/><b>argument</b>
  <ol>
   <li>
    (actual argument) a value passed to a function at the time of a
    <a href="#p22911">function</a> call application; also called an
    <div class="gsyntax">actual parameter</div>. 
   </li>
   <li>
    (formal argument) a variable used in the definition of a function
    to denote the actual argument passed when the function is called.
   </li>
  </ol>
 </li>
 <li><a name="p3173" class="glabel"/><b>arity</b>
  <ol>
   <li>
    (function) the number of arguments. 
   </li>
   <li>
    (operator or operation) corresponds to the arity of a function
    implementing the operator or operation.
   </li>
  </ol>
 </li>
 <li><a name="p3322" class="glabel"/><b>assignment</b>
  <div class="gsyntax">(syntax)</div> an expression of the form
  <div class="gspad">x := e</div>,  meaning "assign the value of
  <div class="gspad">e</div> to <div class="gspad">x"</div>. After
  <a href="#p19167">evaluation</a>,  the <a href="#p52894">variable</a>
  <div class="gspad">x</div> <a href="#p39600">pointer</a> to an object
  obtained by evaluating the expression <div class="gspad">e</div>. If
  <div class="gspad">x</div> has a <a href="#p50664">type</a> as a result
  of a previous <a href="#p12903">declaration</a>, the object assigned to
  <div class="gspad">x</div> must have that type. An interpreter must often
  <a href="#p9572">coercion</a> the value of <div class="gspad">e</div>
  to make that happen. For example,  in the interpreter,  
  <div align="center" class="gspad">x : Float := 11</div> first
  <a href="#p12903">declaration</a> <div class="gspad">x</div> to be a float.
  This declaration causes the interpreter to coerce 11 to 11.0 in order to
  assign a floating point value to <div class="gspad">x</div>.
 </li>
 <li><a name="p4093" class="glabel"/><b>attribute</b>
  a name or functional form denoting <div class="gsyntax">any</div> useful
  computational property. For example,  
  <div class="gfunction">commutative(<div class="gspad">"*"</div>)</div>
  asserts that "<div class="gfunction">*</div> is commutative". Also,
  <div class="gfunction">finiteAggregate</div> is used to assert that an
  aggregate has a finite number of immediate components.
 </li>
 <li><a name="p4380" class="glabel"/><b>basis</b>
  <div class="gsyntax">(algebra)</div> <div class="gspad">S</div> is a
  basis of a module <div class="gspad">M</div> over a
  <a href="#p45405">ring</a> if <div class="gspad">S</div> generates 
  <div class="gspad">M</div>,  and <div class="gspad">S</div> is linearly
  independent
 </li>
 <li><a name="p4536" class="glabel"/><b>benefactor</b>
  (of a given domain) a domain or package that the given domain explicitly
   references (for example,  calls functions from) in its implementation
 </li>
 <li><a name="p4684" class="glabel"/><b>binary</b>
  operation or function with <a href="#p3173">arity</a> 2
 </li>
 <li><a name="p4735" class="glabel"/><b>binding</b>
  the association of a variable with properties such as
  <a href="#p52710">value</a> and <a href="#p50664">type</a>. The
  top-level <a href="#p19131">environment</a> in the interpreter consists 
  of bindings for all user variables and functions. Every
  <a href="#p22911">function</a> has an associated set of bindings,  one
  for each formal <a href="#p2885">argument</a> and
  <a href="#p32278">local variable</a>.
 </li>
 <li><a name="p5086" class="glabel"/><b>block</b>
  <div class="gsyntax">(syntax)</div> a control structure where
  expressions are sequentially <a href="#p19167">evaluation</a>.
 </li>
 <li><a name="p5198" class="glabel"/><b>body</b>
  a <a href="#p23911">function body</a> or <a href="#p33300">loop body</a>.
 </li>
 <li><a name="p5256" class="glabel"/><b>boolean</b>
  objects denoted by the <a href="#p31774">literals</a>
  <div class="gspad">true</div> and <div class="gspad">false</div>; 
  elements of domain <div class="gtype">Boolean</div>. 
  See also <div class="gtype">Bits</div>.
 </li>
 <li><a name="p5399" class="glabel"/><b>built-in function</b>
  a <a href="#p22911">function</a> in the standard Axiom  library. 
  Contrast <a href="#p52526">user function</a>.
 </li>
 <li><a name="p5499" class="glabel"/><b>cache</b>
  <ol>
   <li> 
    (noun) a mechanism for immediate retrieval of previously computed data.
    For example,  a function which does a lengthy computation might store
    its values in a <a href="#p25428">hash table</a> using argument as a
    key. The hash table then serves as a cache for the function (see also
    <div class="gcmd">)set function cache</div>). Also,  when
    <a href="#p43448">recurrence relations</a> which depend upon
    <div class="gspad">n</div> previous values are compiled,  the previous
    <div class="gspad">n</div> values are normally cached
    (use <div class="gcmd">)set functions recurrence</div> to change this). 
   </li>
   <li>
    (verb) to save values in a cache.
   </li>
  </ol>
 </li>
 <li><a name="p6070" class="glabel"/><b>capsule</b>
  the part of the <a href="#p23911">function body</a> of a
  <a href="#p16173">domain constructor</a> that defines the functions 
  implemented by the constructor.
 </li>
 <li><a name="p6220" class="glabel"/><b>case</b>
  <div class="gsyntax">(syntax)</div> an operator used to
  conditionally evaluate code based on the branch of a
  <a href="#p51780">Union</a>. For example,  if value
  <div class="gspad">u</div> is 
  <div class="gspad">Union(Integer, "failed")</div>,  the conditional
  expression <div class="gspad">if u case Integer then A else B</div> 
  evaluate <div class="gspad">A</div> if <div class="gspad">u</div> is
  an integer and <div class="gspad">B</div> otherwise.
 </li>
 <li><a name="p6537" class="glabel"/><b>Category</b>
  the distinguished object denoting the type of a category; the class of
  all categories.
 </li>
 <li><a name="p6628" class="glabel"/><b>category</b>
  <div class="gsyntax">(basic concept)</div> second-order types which
  serve to define useful "classification worlds" for domains, such as
  algebraic constructs (e.g. groups, rings, fields), and data structures
  (e.g. homogeneous aggregates, collections, dictionaries). Examples of
  categories are <div class="gtype">Ring</div> ("the class of all
  rings") and <div class="gtype">Aggregate</div> ("the class of all
  aggregates"). The categories of a given world are arranged in a
  hierarchy (formally, a directed acyclic graph). Each category inherits
  the properties of all its ancestors. Thus, for example, the category
  of ordered rings (<div class="gtype">OrderedRing</div>) inherits the
  properties of the category of rings (<div class="gtype">Ring</div>)
  and those of the ordered sets 
  (<div class="gtype">OrderedSet</div>). Categories provide a database of
  algebraic knowledge and ensure mathematical correctness, e.g. that
  "matrices of polynomials" is correct but "polynomials of hash tables"
  is not, that the multiply operation for "polynomials of continued
  fractions" is commutative, but that for "matrices of power series" is
  not. optionally provide "default definitions" for operations they
  export. Categories are defined in Axiom by functions called 
  <a href="#p8355">category constructors</a>. Technically, a category
  designates a class of domains with common 
  <a href="#p36041">operations</a> and <a href="#p4093">attributes</a> but
  usually with different <a href="#p22911">functions</a> and 
  <a href="#p44277">representations</a> for its constituent 
  <a href="#p35301">objects</a>. Categories are always defined using the
  Axiom library language (see also 
  <a href="#p8634">category extension</a>). 
  See also file <div class="gsyntax">catdef.spad</div>
  for definitions of basic algebraic categories in Axiom .
 </li>
 <li><a name="p8355" class="glabel"/><b>category constructor</b>
  a function that creates categories, described by an abstract
  datatype in the Axiom programming language. For example, the category
  constructor <div class="gtype">Module</div> is a function which takes
  a domain parameter <div class="gspad">R</div> and creates the category
  "modules over <div class="gspad">R</div>".
 </li>
 <li><a name="p8634" class="glabel"/><b>category extension</b>
  created by a category definition, an expression usually of the form
  <div class="gspad">A == B with ...</div>. In English, this means
  "category A is a <div class="gspad">B</div> with the new operations
  and attributes as given by ... . See, for example, file 
  <div class="gsyntax">catdef.spad</div> for a definitions of the algebra
  categories in Axiom , <div class="gsyntax">aggcat.spad</div> for data
  structure categories.
 </li>
 <li><a name="p8996" class="glabel"/><b>category hierarchy</b>
  hierarchy formed by category extensions. The root category is 
  <div class="gtype">Object</div>. A category can be defined as a 
  <a href="#p30459">Join</a> of two or more categories so as to have
  multiple <a href="#p38095">parents</a>. Categories may also have
  parameterized so as to allow conditional inheritance.
 </li>
 <li><a name="p9278" class="glabel"/><b>character</b>
  <ol>
   <li> 
    an element of a character set,  as represented by a keyboard key. 
   </li>
   <li>
    a component of a string. For example, the 0th element of the string
    <div class="gspad">"hello there"</div> is the character 
    <div class="gsyntax">h</div>.
   </li>
  </ol>
 </li>
 <li><a name="p9472" class="glabel"/><b>client</b>
  (of a given domain) any domain or package that explicitly calls
  functions from the given domain
 </li>
 <li><a name="p9572" class="glabel"/><b>coercion</b>
  an automatic transformation of an object of one 
  <a href="#p50664">type</a> to an object of a similar or desired target
  type. In the interpreter, coercions and 
  <a href="#p45044">retractions</a> are done automatically by the
  interpreter when a type mismatch occurs. Compare 
  <a href="#p12242">conversion</a>.
 </li>
 <li><a name="p9854" class="glabel"/><b>comment</b>
  textual remarks imbedded in code. Comments are preceded by a double
  dash (<div class="gsyntax">--</div>). For Axiom library code,
  stylized comments for on-line documentation are preceded by a two plus
  signs (<div class="gsyntax">++</div>).
 </li>
 <li><a name="p10064" class="glabel"/><b>Common LISP</b>
  A version of <a href="#p31518">LISP</a> adopted as an informal
  standard by major users and suppliers of LISP
 </li>
 <li><a name="p10167" class="glabel"/><b>compile-time</b>
  the time when category or domain constructors are compiled. Contrast
  <a href="#p45818">run-time</a>.
 </li>
 <li><a name="p10262" class="glabel"/><b>compiler</b>
  a program that generates low-level code from a higher-level source
  language. Axiom has three compilers. 
  <ol>
   <li>
    A <div class="gsyntax">graphics
    compiler</div> converts graphical formulas to a compiled subroutine so
    that points can be rapidly produced for graphics commands. 
   </li>
   <li>
    An <div class="gsyntax">interpreter compiler</div> optionally compiles 
    <a href="#p52526">user functions</a> when first 
    <a href="#p29675">invocation</a> 
    (use <div class="gcmd">)set functions compile</div> 
    to turn this feature on). 
   </li>
   <li> 
    A <div class="gsyntax">library compiler</div> compiles all 
    constructors.
   </li>
  </ol>
 </li>
 <li><a name="p10792" class="glabel"/><b>computational object</b>
   In Axiom , domains are objects. This term is used to distinquish the
  objects which are members of domains rather than domains themselves.
 </li>
 <li><a name="p10941" class="glabel"/><b>conditional</b>
  a <a href="#p12001">control structure</a> of the form 
  <div class="gspad">if A then B else C</div>; The 
  <a href="#p19167">evaluation</a> of <div class="gspad">A</div> produces
  <div class="gspad">true</div> or <div class="gspad">false</div>. If
  <div class="gspad">true</div>, <div class="gspad">B</div> evaluates to
  produce a value; otherwise <div class="gspad">C</div> evaluates to
  produce a value. When the value is not used, 
  <div class="gspad">else C</div> part can be omitted.
 </li>
 <li><a name="p11264" class="glabel"/><b>constant</b>
  <div class="gsyntax">(syntax)</div> a reserved word used in 
  <a href="#p46813">signatures</a> in Axiom programming language to signify
  that mark an operation always returns the same value. For example, the
  signature <div class="gspad">0: constant -> $</div> in the source code
  of <div class="gtype">AbelianMonoid</div> tells the Axiom compiler
  that <div class="gspad">0</div> is a constant so that suitable
  optimizations might be performed.
 </li>
 <li><a name="p11642" class="glabel"/><b>constructor</b>
  a <a href="#p22911">function</a> which creates a 
  <a href="#p6628">category</a>, <a href="#p15041">domain</a>, or 
  <a href="#p36778">package</a>.
 </li>
 <li><a name="p11755" class="glabel"/><b>continuation</b>
  when a line of a program is so long that it must be broken into
  several lines, then all but the first line are called 
  <div class="gsyntax">continuation lines</div>. If such a line is given
  interactively, then each incomplete line must end with an underscore.
 </li>
 <li><a name="p12001" class="glabel"/><b>control structure</b>
  program structures which can specify a departure from normal
  sequential execution. Axiom has four kinds of control structures: 
  <a href="#p5086">blocks</a>, <a href="#p6220">case</a> statements, 
  <a href="#p10941">conditionals</a>, and <a href="#p33121">loops</a>.
 </li>
 <li><a name="p12242" class="glabel"/><b>conversion</b>
  the transformation of an object on one <a href="#p50664">type</a> to
  one of another type. Conversions performed automatically are called 
  <a href="#p9572">coercions</a>. These happen when the interpreter has a
  type mismatch and a similar or declared target type is needed. In
  general, the user must use the infix operation 
  <div class="gspad">::</div> to cause this transformation.
 </li>
 <li><a name="p12604" class="glabel"/><b>copying semantics</b>
  the programming language semantics used in Pascal but 
  <div class="gsyntax">not</div> in Axiom . See also 
  <a href="#p39949">pointer semantics</a> for details.
 </li>
 <li><a name="p12740" class="glabel"/><b>data structure</b>
  a structure for storing data in the computer. Examples are 
  <a href="#p31730">lists</a> and <a href="#p25428">hash tables</a>.
 </li>
 <li><a name="p12850" class="glabel"/><b>datatype</b>
  equivalent to <a href="#p15041">domain</a> in Axiom .
 </li>
 <li><a name="p12903" class="glabel"/><b>declaration</b>
  <div class="gsyntax">(syntax)</div> an expression of the form 
  <div class="gspad">x : T</div> where <div class="gspad">T</div> is some
  <div class="gspad">type</div>. A declaration forces all values 
  <a href="#p3322">assigned</a> to <div class="gspad">T</div> to be of that
  type. If a value is of a different type, the interpreter will try to
  <a href="#p9572">coerce</a> the value to type 
  <div class="gspad">T</div>. Declarations are necessary in case of 
  ambiguity or when a user wants to introduce an an 
  <a href="#p20259">unexposed</a> domain.
 </li>
 <li><a name="p13351" class="glabel"/><b>default definition</b>
  a function defined by a <a href="#p6628">category</a>. Such
  definitions appear category definitions of the form 
  <div class="gspad">C: Category == T add I</div> in an optional
  implmentation part <div class="gspad">I</div> to the right of the
  keyword <div class="gspad">add</div>.
 </li>
 <li><a name="p13571" class="glabel"/><b>default package</b>
  a optional <a href="#p36778">package</a> of 
  <a href="#p22911">functions</a> associated with a category. Such
  functions are necessarily defined in terms over other functions
  exported by the category.
 </li>
 <li><a name="p13754" class="glabel"/><b>definition</b>
  <div class="gsyntax">(syntax)</div> 
  <ol>
   <li> 
    An expression of the form
    <div class="gspad">f(a) == b</div> defining function 
    <div class="gspad">f</div> with <a href="#p21594">formal arguments</a> 
    <div class="gspad">a</div> and <a href="#p5198">body</a> 
    <div class="gspad">b</div>; equivalent to the statement 
    <div class="gspad">f == (a) +-> b</div>. 
   </li>
   <li> 
    An expression of the form 
    <div class="gspad">a == b</div> where <div class="gspad">a</div> is a 
    <a href="#p49347">symbol</a>, equivalent to 
    <div class="gspad">a() == b</div>.
    See also <a href="#p33585">macro</a> where a similar
    substitution is done at <a href="#p38242">parse</a> time.
   </li>
  </ol>
 </li>
 <li><a name="p14178" class="glabel"/><b>delimiter</b>
  a <a href="#p9278">character</a> which marks the beginning or end of
  some syntactically correct unit in the language, e.g. " for strings,
  blanks for identifiers.
 </li>
 <li><a name="p14365" class="glabel"/><b>destructive operation</b>
  An operation which changes a component or structure of a value. In
  Axiom , all destructive operations have names which end with an
  exclamation mark (<div class="gsyntax">!</div>). For example, domain
  <div class="gtype">List</div> has two operations to reverse the
  elements of a list, one named <div class="gfunction">reverse</div>
  from <div class="gtype">List</div> which returns a copy of the
  original list with the elements reversed, another named 
  <div class="gfunction">reverse!</div> from <div class="gtype">List</div>
  which reverses the elements <div class="gsyntax">in place</div> thus
  destructively changing the original list.
 </li>
 <li><a name="p14877" class="glabel"/><b>documentation</b>
  <ol>
   <li> 
    on-line or hard copy descriptions of Axiom; 
   </li>
   <li> 
    text in library code preceded by 
    <div class="gsyntax">++</div> comments as opposed to general comments
    preceded by <div class="gsyntax">--</div>.
   </li>
  </ol>
 </li>
 <li><a name="p15041" class="glabel"/><b>domain</b>
  <div class="gsyntax">(basic concept)</div> a domain corresponds to
  the usual notion of abstract datatypes: that of a set of values and a
  set of "exported operations" for the creation and manipulation of
  these values. Datatypes are parameterized, dynamically constructed,
  and can combine with others in any meaningful way, e.g. "lists of
  floats" (<div class="gtype">List Float</div>), "fractions of
  polynomials with integer coefficients" 
  (<div class="gtype">Fraction Polynomial Integer</div>), 
  "matrices of infinite <a href="#p47825">streams</a> of cardinal numbers" 
  (<div class="gtype">Matrix Stream CardinalNumber</div>). The term 
  <div class="gsyntax">domain</div> is actually abbreviates 
  <div class="gsyntax">domain of computation</div>. Technically, a domain
  denotes a class of objects, a class of 
  <a href="#p36041">operations</a> for creating and other manipulating
  these objects, and a class of <a href="#p4093">attributes</a>
  describing computationally useful properties. Domains also provide 
  <a href="#p22911">functions</a> for each operation often in terms of some
  <a href="#p44277">representation</a> for the objects. A domain itself
  is an <a href="#p35301">object</a> created by a 
  <a href="#p22911">function</a> called a <a href="#p16173">domain
  constructor</a>.
 </li>
 <li><a name="p16173" class="glabel"/><b>domain constructor</b>
   a function that creates domains, described by an abstract datatype in
  the Axiom programming language. Simple domains like 
  <div class="gtype">Integer</div> and <div class="gtype">Boolean</div> are
  created by domain constructors with no arguments. Most domain
  constructors take one or more parameters, one usually denoting an 
  <a href="#p51532">underlying domain</a>. For example, the domain 
  <div class="gtype">Matrix(R)</div> denotes "matrices over 
  <div class="gspad">R"</div>. Domains <div class="gsyntax">Mapping</div>,
  <div class="gsyntax">Record</div>, and 
  <div class="gsyntax">Union</div> are primitive domains. All other domains
  are written in the Axiom programming language and can be modified by
  users with access to the library source code.
 </li>
 <li><a name="p16819" class="glabel"/><b>domain extension</b>
  a domain constructor <div class="gspad">A</div> is said to 
  <div class="gsyntax">extend</div> a domain constructor 
  <div class="gspad">B</div> if <div class="gspad">A</div>
  <div class="gspad">'s</div> definition has the form 
  <div class="gspad">A == B add ...</div>. 
  This intuitively means "functions not defined by <div
  class="gspad">A</div> are assumed to come from 
  <div class="gspad">B</div>". Successive domain extensions form 
  <a href="#p1794">add-chains</a> affecting the the 
  <a href="#p46200">search order</a> for functions not implemented directly
  by the domain during <a href="#p17853">dynamic lookup</a>.
 </li>
 <li><a name="p17269" class="glabel"/><b>dot notation</b>
  using an infix dot (<div class="gsyntax">.</div>) for function
  application. If <div class="gspad">u</div> is the list 
  <div class="gspad">[7, 4, -11]</div> then both 
  <div class="gspad">u(2)</div> and <div class="gspad">u.2</div> return
  4. Dot notation nests to left. Thus <div class="gspad">f . g . h</div>
  is equivalent to <div class="gspad">(f . g) . h</div>.
 </li>
 <li><a name="p17507" class="glabel"/><b>dynamic</b>
  that which is done at <a href="#p45818">run-time</a> as opposed to 
  <a href="#p10167">compile-time</a>. For example, the interpreter will
  build the domain "matrices over integers" dynamically in response to
  user input. However, the compilation of all functions for matrices and
  integers is done during <a href="#p10167">compile-time</a>. Constrast
  <a href="#p47594">static</a>.
 </li>
 <li><a name="p17853" class="glabel"/><b>dynamic lookup</b>
  In Axiom , a <a href="#p17507">domain</a> may or may not explicitly
  provide <a href="#p22911">function</a> definitions for all of its
  exported <a href="#p36041">operations</a>. These definitions may
  instead come from domains in the <a href="#p1794">add-chain</a> or
  from <a href="#p13571">default packages</a>. When a 
  <a href="#p2400">function call</a> is made for an operation in the
  domain, up to five steps are carried out.
  <ol>
   <li> 
    If the domain itself implements a function for the operation,  
    that function is returned. 
   </li>
   <li> 
    Each of the domains in the <a href="#p1794">add-chain</a> are searched
    for one which implements the function; if found, the function is returned.
   </li>
   <li> 
    Each of the <a href="#p13571">default packages</a> for the domain are
    searched in order of the <a href="#p30933">lineage</a>. If any of the
    default packages implements the function, the first one found is
    returned.
   </li>
   <li> 
    Each of the <a href="#p13571">default packages</a> for each of the
    domains in the <a href="#p1794">add-chain</a> are searched in the
    order of their <a href="#p30933">lineage</a>. If any of the default
    packages implements the function, the first one found is returned.
   </li>
   <li> If all of the above steps fail,  an error message is reported. 
   </li>
  </ol>
 </li>
 <li><a name="p19071" class="glabel"/><b>empty</b>
  the unique value of objects with type <div class="gtype">Void</div>.
 </li>
 <li><a name="p19131" class="glabel"/><b>environment</b>
  a set of <a href="#p4735">bindings</a>.
 </li>
 <li><a name="p19167" class="glabel"/><b>evaluation</b>
  a systematic process which transforms an 
  <a href="#p20659">expression</a> into an object called the 
  <a href="#p52710">value</a> of the expression. Evaluation may produce 
  <a href="#p46699">side effects</a>.
 </li>
 <li><a name="p19348" class="glabel"/><b>exit</b>
  <div class="gsyntax">(reserved word)</div> an 
  <a href="#p36278">operator</a> which forces an exit from the current
  block. For example, the <a href="#p5086">block</a> 
  <div class="gspad">(a := 1; if i > 0 then exit a; a := 2)</div> will
  prematurely exit at the second statement with value 1 if the value of
  <div class="gspad">i</div> is greater than 0. See 
  <a href="#p210"><div class="gspad">=></div></a> for an alternate syntax.
 </li>
 <li><a name="p19681" class="glabel"/><b>explicit export</b>
  <ol>
   <li> 
    (of a domain <div class="gspad">D</div>) any 
    <a href="#p4093">attribute</a>, <a href="#p36041">operation</a>, or 
    <a href="#p6628">category</a> explicitly mentioned in the 
    <a href="#p50664">type</a> specification part <div class="gspad">T</div>
    for the domain constructor definition  <div class="gspad">D: T == I</div>
   </li>
   <li> 
    (of a category <div class="gspad">C</div>) any 
    <a href="#p4093">attribute</a>, <a href="#p36041">operation</a>, or 
    <a href="#p6628">category</a> explicitly mentioned in the 
    <a href="#p50664">type</a> specification part <div class="gspad">T</div>
    for the domain constructor definition 
    <div class="gspad">C: <a href="#p6537">Category</a> == T</div>
   </li>
  </ol>
 </li>
 <li><a name="p20171" class="glabel"/><b>export</b>
   <a href="#p19681">explicit export</a> or <a href="#p27325">implicit
  export</a> of a domain or category
 </li>
 <li><a name="p20259" class="glabel"/><b>expose</b>
  some constructors are <div class="gsyntax">exposed</div>, others
  <div class="gsyntax">unexposed</div>. Exposed domains and packages
  are recognized by the interpreter. Use 
  <div class="gcmd">)set expose</div> 
  to control change what is exposed. To see both exposed
  and unexposed constructors, use the browser with give the system
  command <div class="gcmd">)set hyperdoc browse exposure
  on</div>. Unexposed constructors will now appear prefixed by star
  (<div class="gspad">*</div>).
 </li>
 <li><a name="p20659" class="glabel"/><b>expression</b>
  <ol>
   <li> any syntactically correct program fragment. 
   </li>
   <li> an element of domain <div class="gtype">Expression</div>
   </li>
  </ol>
 </li>
 <li><a name="p20757" class="glabel"/><b>extend</b>
  see <a href="#p8634">category extension</a> or <a href="#p16819">domain 
  extension</a>
 </li>
 <li><a name="p20829" class="glabel"/><b>field</b>
  <div class="gsyntax">(algebra)</div> a <a href="#p17507">domain</a>
  which is <a href="#p45405">ring</a> where every non-zero element is
  invertible and where <div class="gspad">xy=yx</div>; a member of
  category <div class="gtype">Field</div>. For a complete list of
  fields, click on <div class="gsyntax">Domains</div> under 
  <div class="gsyntax">Cross Reference</div> for 
  <div class="gtype">Field</div>.
 </li>
 <li><a name="p21109" class="glabel"/><b>file</b>
  a program or collection of data stored on disk,  tape or other medium.
 </li>
 <li><a name="p21186" class="glabel"/><b>float</b>
  a floating-point number with user-specified precision; an element of
  domain <div class="gtype">Float</div>. Floats are 
  <a href="#p31774">literals</a> which are written two ways: without an
  exponent (e.g. <div class="gspad">3.1416</div>), or with an exponent
  (e.g. <div class="gspad">3.12E-12</div>). Use function 
  <a href="#p42318">precision</a> to change the precision of the mantissage
  (20 digits by default). See also <a href="#p47066">small float</a>.
 </li>
 <li><a name="p21594" class="glabel"/><b>formal parameter</b>
  (of a function) an identifier <a href="#p4735">bound</a> to the value
  of an actual <a href="#p2885">argument</a> on 
  <a href="#p29675">invocation</a>. In the function definition 
  <div class="gspad">f(x, y) == u</div>, for example, 
  <div class="gspad">x</div> and <div class="gspad">y</div> are the formal
  parameter.
 </li>
 <li><a name="p21847" class="glabel"/><b>frame</b>
  the basic unit of an interactive session; each frame has its own
  <a href="#p47691">step number</a>, <a href="#p19131">environment</a>, and
  <a href="#p26034">history</a>. In one interactive session, users can
  can create and drop frames, and have several active frames simultaneously.
 </li>
 <li><a name="p22113" class="glabel"/><b>free</b>
   <div class="gsyntax">(syntax)</div> A keyword used in user-defined
  functions to declare that a variable is a 
  <a href="#p22739">free variable</a> of that function. 
  For example, the statement 
  <div class="gspad">free x</div> declares the variable 
  <div class="gspad">x</div> within the body of a function 
  <div class="gspad">f</div> to be a free variable in 
  <div class="gspad">f</div>. Without such a declaration, any variable 
  <div class="gspad">x</div> which appears on the left hand side of an
  assignment is regarded as a <a href="#p32278">local variable</a> of
  that function. If the intention of the assignment is to give an value
  to a <a href="#p24833">global variable</a> <div class="gspad">x</div>,
  the body of that function must contain the statement 
  <div class="gspad">free x</div>.
 </li>
 <li><a name="p22739" class="glabel"/><b>free variable</b>
   (of a function) a variable which appears in a body of a function but
  is not <a href="#p4735">bound</a> by that function. See 
  <a href="#p32278">local variable</a> by default.
 </li>
 <li><a name="p22911" class="glabel"/><b>function</b>
   implementation of <a href="#p36041">operation</a>; it takes zero or
  more <a href="#p2885">argument</a> parameters and produces zero or
  more values. Functions are objects which can be passed as parameters
  to functions and can be returned as values of functions. Functions can
  also create other functions (see also 
  <div class="gtype">InputForm</div>). See also 
  <a href="#p2473">application</a> and 
  <a href="#p29675">invocation</a>. The terms 
  <div class="gsyntax">operation</div> and 
  <div class="gsyntax">function</div> are distinct notions in Axiom . An
  operation is an abstraction of a function, described by declaring a 
  <a href="#p46813">signature</a>. A function is created by providing an
  implementation of that operation by some piece of Axiom code. Consider
  the example of defining a user-function <div class="gspad">fact</div>
  to compute the <div class="gfunction">factorial</div> of a nonnegative
  integer. The Axiom statement 
  <div class="gspad">fact: Integer -> Integer</div> 
  describes the operation, whereas the statement 
  <div class="gspad">fact(n) = reduce(*, [1..n])</div> defines the
  functions. See also <a href="#p24495">generic function</a>.
 </li>
 <li><a name="p23911" class="glabel"/><b>function body</b>
   the part of a <a href="#p22911">function</a>
  <div class="gspad">'s</div> definition which is evaluated when the function
  is called at <a href="#p45818">run-time</a>; the part of the function
  definition to the right of the <div class="gspad">==</div>.
 </li>
 <li><a name="p2400" class="glabel"/><b>function call</b>
   <div class="gsyntax">(syntax)</div> an expression denoting
  "application" of a function to a set of <a href="#p2885">argument</a>
  parameters. Applications are written as a 
  <a href="#p38004">parameterized form</a>. For example, the form 
  <div class="gspad">f(x, y)</div> indicates the "application of the function
  <div class="gspad">f</div> to the tuple of arguments 
  <div class="gspad">x</div> and <div class="gspad">y</div>". See also 
  <a href="#p19167">evaluation</a> and <a href="#p29675">invocation</a>.
 </li>
 <li><a name="p24123" class="glabel"/><b>garbage collection</b>
   a system function that automatically recycles memory cells from the
  <a href="#p25771">heap</a>. Axiom is built upon 
  <a href="#p10064">Common LISP</a> which provides this facility.
 </li>
 <li><a name="p24294" class="glabel"/><b>garbage collector</b>
  a mechanism for reclaiming storage in the <a href="#p25771">heap</a>.
 </li>
 <li><a name="p24359" class="glabel"/><b>Gaussian</b>
   a complex-valued expression, e.g. one with both a real and imaginary
  part; a member of a <div class="gtype">Complex</div> domain.
 </li>
 <li><a name="p24495" class="glabel"/><b>generic function</b>
   the use of one function to operate on objects of different types; One
  might regard Axiom as supporting generic 
  <a href="#p36041">operations</a> but not generic functions. One operation
  <div class="gspad">+: (D, D) -> D</div> exists for adding elements in
  a ring; each ring however provides its own type-specific function for
  implementing this operation.
 </li>
 <li><a name="p24833" class="glabel"/><b>global variable</b>
   A variable which can be referenced freely by functions. In Axiom ,
  all top-level user-defined variables defined during an interactive
  user session are global variables. Axiom does not allow <div
  class="gsyntax">fluid variables</div>, that is, variables 
  <a href="#p4735">bound</a> by functions which can be referenced by
  functions those functions call.
 </li>
 <li><a name="p25189" class="glabel"/><b>Groebner basis</b>
   <div class="gsyntax">(algebra)</div> a special basis for a
  polynomial ideal that allows a simple test for membership. It is
  useful in solving systems of polynomial equations.
 </li>
 <li><a name="p25348" class="glabel"/><b>group</b>
   <div class="gsyntax">(algebra)</div> a <a href="#p34266">monoid</a>
  where every element has a multiplicative inverse.
 </li>
 <li><a name="p25428" class="glabel"/><b>hash table</b>
   A data structure that efficiency maps a given object to another. A
  hash table consists of a set of <div class="gsyntax">entries</div>,
  each of which associates a <div class="gsyntax">key</div> with a 
  <div class="gsyntax">value</div>. Finding the object stored under a key
  can be very fast even if there are a large number of entries since
  keys are <div class="gsyntax">hashed</div> into numerical codes for
  fast lookup.
 </li>
 <li><a name="p25771" class="glabel"/><b>heap</b>
   an area of storage used by data in programs. For example, AXIOM will
  use the heap to hold the partial results of symbolic
  computations. When cancellations occur, these results remain in the
  heap until <a href="#p24294">garbage collected</a>.
 </li>
 <li><a name="p26034" class="glabel"/><b>history</b>
   a mechanism which records the results for an interactive
  computation. Using the history facility, users can save computations,
  review previous steps of a computation, and restore a previous
  interactive session at some later time. For details, issue the system
  command <div class="gsyntax">)history ?</div> to the interpreter. See
  also <a href="#p21847">frame</a>.
 </li>
 <li><a name="p26380" class="glabel"/><b>ideal</b>
   <div class="gsyntax">(algebra)</div> a subset of a ring that is
  closed under addition and multiplication by arbitrary ring elements,
  i.e. it<div class="gspad">'s</div> a module over the ring.
 </li>
 <li><a name="p26553" class="glabel"/><b>identifier</b>
   <div class="gsyntax">(syntax)</div> an Axiom name; a 
  <a href="#p31774">literal</a> of type <div class="gtype">Symbol</div>. An
  identifier begins with an alphabetical character or % and may be
  followed by alphabetic characters, digits, ? or !. Certain
  distinquished <a href="#p44698">reserved words</a> are not allowed as
  identifiers but have special meaning in the Axiom .
 </li>
 <li><a name="p26892" class="glabel"/><b>immutable</b>
   an object is immutable if it cannot be changed by an 
  <a href="#p36041">operation</a>; not a <a href="#p34398">mutable
  object</a>. Algebraic objects generally immutable: changing an
  algebraic expression involves copying parts of the original
  object. One exception is a matrix object of type 
  <div class="gtype">Matrix</div>. Examples of mutable objects are data
  structures such as those of type <div class="gtype">List</div>. See
  also <a href="#p39949">pointer semantics</a>.
 </li>
 <li><a name="p27325" class="glabel"/><b>implicit export</b>
   (of a domain or category) any <a href="#p4093">attribute</a> or 
  <a href="#p36041">operation</a> which is either an explicit export or
  else an explicit export of some category which an explicit category
  export <a href="#p20757">extends</a>.
 </li>
 <li><a name="p27564" class="glabel"/><b>index</b>
  <ol>
   <li> 
    a variable that counts the number of times a 
    <a href="#p33121">loop</a> is repeated. 
   </li>
   <li> 
    the "address" of an element in a data structure (see also category 
    <div class="gtype">LinearAggregate</div>).
   </li>
  </ol>
 </li>
 <li><a name="p27746" class="glabel"/><b>infix</b>
   <div class="gsyntax">(syntax)</div> an 
  <a href="#p36278">operator</a> placed between two 
  <a href="#p35946">operands</a>; also called a 
  <div class="gsyntax">binary operator</div>, e.g. 
  <div class="gspad">a + b</div>. An infix operator may also be used as a 
  <a href="#p42559">prefix</a>, e.g. <div class="gspad">+(a, b)</div> is
  also permissable in the Axiom language. Infix operators have a
  relative <a href="#p42098">precedence</a>.
 </li>
 <li><a name="p28103" class="glabel"/><b>input area</b>
  a rectangular area on a screen into which users can enter text.
 </li>
 <li><a name="p28185" class="glabel"/><b>instantiate</b>
  to build a <a href="#p6628">category</a>,  <a href="#p17507">domain</a>,  
  or <a href="#p36778">package</a> at run-time
 </li>
 <li><a name="p28282" class="glabel"/><b>integer</b>
   a <a href="#p31774">literal</a> object of domain 
  <div class="gtype">Integer</div>, the class of integers with an unbounded
  number of digits. Integer literals consist of one or more consecutive
  digits (0-9) with no embedded blanks. Underscores can be used to
  separate digits in long integers if desirable.
 </li>
 <li><a name="p28570" class="glabel"/><b>interactive</b>
  a system where the user interacts with the computer step-by-step
 </li>
 <li><a name="p28640" class="glabel"/><b>interpreter</b>
   the subsysystem of Axiom responsible for handling user input during
  an interactive session. The following somewhat simplified description
  of the typical action of the interpreter. The interpreter parsers the
  user<div class="gspad">'s</div> input expression to create an
  expression tree then does a bottom-up traversal of the tree. Each
  subtree encountered which is not a value consists of a root node
  denoting an operation name and one or more leaf nodes denoting 
  <a href="#p35946">operands</a>. The interpreter resolves type mismatches
  and uses type-inferencing and a library database to determine
  appropriate types of the operands and the result, and an operation to
  be performed. The interpreter then builds a domain to perform the
  indicated operation, then invokes a function from the domain to
  compute a value. The subtree is then replaced by that value and the
  process continues. Once the entire tree has been processed, the value
  replacing the top node of the tree is displayed back to the user as
  the value of the expression.
 </li>
 <li><a name="p29675" class="glabel"/><b>invocation</b>
   (of a function) the run-time process involved in 
  <a href="#p19167">evaluating</a> a <a href="#p22911">function</a> 
  <a href="#p2473">application</a>. This process has two steps. First, a
  local <a href="#p19131">environment</a> is created where 
  <a href="#p21594">formal arguments</a> are locally 
  <a href="#p4735">bound</a> by <a href="#p3322">assignment</a> to their
  respective actual <a href="#p2885">argument</a>. Second, the 
  <a href="#p23911">function body</a> is evaluated in that local
  environment. The evaluation of a function is terminated either by
  completely evaluating the function body or by the evaluation of a 
  <div class="gfunction">return</div> expression.
 </li>
 <li><a name="p30286" class="glabel"/><b>iteration</b>
  repeated evaluation of an expression or a sequence of
  expressions. Iterations use the reserved words 
  <div class="gfunction">for</div>, <div class="gfunction">while</div>, and
  <div class="gfunction">repeat</div>.
 </li>
 <li><a name="p30459" class="glabel"/><b>Join</b>
   a primitive Axiom function taking two or more categories as arguments
  and producing a category containing all of the operations and
  attributes from the respective categories.
 </li>
 <li><a name="p30645" class="glabel"/><b>KCL</b>
   Kyoto Common LISP, a version of <a href="#p10064">Common LISP</a>
  which features compilation of the compilation of LISP into the 
  <div class="gspad">C</div> Programming Language
 </li>
 <li><a name="p30801" class="glabel"/><b>library</b>
   In Axiom , a coolection of compiled modules respresenting the a 
  <a href="#p6628">category</a> or <a href="#p17507">domain</a>
  constructor.
 </li>
 <li><a name="p30933" class="glabel"/><b>lineage</b>
   the sequence of <a href="#p13571">default packages</a> for a given
  domain to be searched during 
  <a href="#p17853">dynamic lookup</a>. 
  This sequence is computed first by ordering the category
  <a href="#p2335">ancestors</a> of the domain according to their <div
  class="gsyntax">level number</div>, an integer equal to to the
  minimum distance of the domain from the category. Parents have level
  1, parents of parents have level 2, and so on. Among categories with
  equal level numbers, ones which appear in the left-most branches of
  <div class="gsyntax">Join</div><div class="gspad">s</div> in the
  source code come first. See also <a href="#p17853">dynamic lookup</a>.
 </li>
 <li><a name="p31518" class="glabel"/><b>LISP</b>
   acronymn for List Processing Language, a language designed for the
  manipulation of nonnumerical data. The Axiom library is translated
  into LISP then compiled into machine code by an underlying LISP.
 </li>
 <li><a name="p31730" class="glabel"/><b>list</b>
  an object of a <div class="gtype">List</div> domain.
 </li>
 <li><a name="p31774" class="glabel"/><b>literal</b>
   an object with a special syntax in the language. In Axiom , there are
  five types of literals: <a href="#p5256">booleans</a>, 
  <a href="#p28282">integers</a>, <a href="#p21186">floats</a>, 
  <a href="#p48077">strings</a>, and <a href="#p49347">symbols</a>.
 </li>
 <li><a name="p31998" class="glabel"/><b>local</b>
   <div class="gsyntax">(syntax)</div> A keyword used in user-defined
  functions to declare that a variable is a 
  <a href="#p32278">local variable</a> of that function. 
  Because of default assumptions on
  variables, such a declaration is not necessary but is available to the
  user for clarity when appropriate.
 </li>
 <li><a name="p32278" class="glabel"/><b>local variable</b>
   (of a function) a variable <a href="#p4735">bound</a> by that
  function and such that its binding is invisible to any function that
  function calls. Also called a <div class="gsyntax">lexical</div>
  variable. By default in the interpreter:
  <ol>
   <li> 
    any variable <div class="gspad">x</div> which appears on the left hand
    side of an assignment is regarded a local variable of that
    function. If the intention of an assignment is to change the value of
    a <a href="#p24833">global variable</a> <div class="gspad">x</div>,
    the body of the function must then contain the statement 
    <div class="gspad">free x</div>.
   </li>
   <li> 
    any other variable is regarded as a <a href="#p22739">free variable</a>. 
   </li>
   <li>
     An optional declaration <div class="gspad">local x</div> is available
    to explicitly declare a variable to be a local variable. All 
    <a href="#p21594">formal parameters</a> to the function can be regarded
    as local variables to the function.
   </li>
  </ol>
 </li>
 <li><a name="p33121" class="glabel"/><b>loop</b>
  <ol>
   <li> an expression containing a <div class="gfunction">repeat</div>
   </li>
   <li> 
    a collection expression having a <div class="gfunction">for</div> or a
    <div class="gfunction">while</div>, e.g. 
    <div class="gspad">[f(i) for i in S]</div>.
  </li>
  </ol>
 </li>
 <li><a name="p33300" class="glabel"/><b>loop body</b>
   the part of a loop following the <div class="gfunction">repeat</div>
  that tells what to do each iteration. For example, the body of the
  loop <div class="gspad">for x in S repeat B</div> is 
  <div class="gspad">B</div>. For a collection expression, the body of the
  loop precedes the initial <div class="gfunction">for</div> or 
  <div class="gfunction">while</div>.
 </li>
 <li><a name="p33585" class="glabel"/><b>macro</b>
  <ol>
   <li> 
    <div class="gsyntax">(syntax)</div> An expression of the form 
    <div class="gspad">macro a == b</div> where <div class="gspad">a</div> is a
    <a href="#p49347">symbol</a> causes <div class="gspad">a</div> to be
    textually replaced by the expression <div class="gspad">b</div> at 
    <a href="#p38242">parse</a> time.
   </li>
   <li> 
    An expression of the form <div class="gspad">macro f(a) == b</div>
    defines a parameterized macro expansion for a parameterized form 
    <div class="gspad">f</div> This macro causes a form 
    <div class="gspad">f</div>(<div class="gspad">x</div>) to be textually
    replaced by the expression <div class="gspad">c</div> at parse time,
    where <div class="gspad">c</div> is the expression obtained by
    replacing <div class="gspad">a</div> by <div class="gspad">x</div>
    everywhere in <div class="gspad">b</div>. See also 
    <a href="#p13754">definition</a> where a similar substitution is done
    during <a href="#p19167">evaluation</a>.
   </li>
  </ol>
 </li>
 <li><a name="p34233" class="glabel"/><b>mode</b>
   a type expression containing a question-mark 
  (<div class="gsyntax">?</div>). For example, the mode 
  <div class="gsyntax">P ?</div> designates <div class="gsyntax">the class
  of all polynomials over an arbitrary ring</div>.
 </li>
 <li><a name="p34266" class="glabel"/><b>monoid</b>
  is a set with a single, associative operation and an identity element
 </li>
 <li><a name="p34398" class="glabel"/><b>mutable</b>
   objects which contain <a href="#p39600">pointers</a> to other objects
  and which have operations defined on them which alter these
  pointers. Contrast <a href="#p26892">immutable</a>. Axiom uses 
  <a href="#p39949">pointer semantics</a> as does 
  <a href="#p31518">LISP</a> in contrast with many other languages such as
  Pascal which use <a href="#p12604">copying semantics</a>. See 
  <a href="#p39949">pointer semantics</a> for details.
 </li>
 <li><a name="p34778" class="glabel"/><b>name</b>
  <ol>
   <li>
    a <a href="#p49347">symbol</a> denoting a <a href="#p52894">variable</a>,
    i.e. the variable <div class="gspad">x</div>. 
   </li>
   <li> 
    a <a href="#p49347">symbol</a> denoting an 
    <a href="#p36041">operation</a>,  i.e. the operation
    <div class="gspad">divide: (Integer, Integer) -> Integer</div>.
   </li>
  </ol>
 </li>
 <li><a name="p35023" class="glabel"/><b>nullary</b>
  a function with no arguments,  
  e.g. <div class="gfunction">characteristic</div>.
 </li>
 <li><a name="p35104" class="glabel"/><b>nullary</b>
  operation or function with <a href="#p3173">arity</a> 0
 </li>
 <li><a name="p35156" class="glabel"/><b>Object</b>
   a category with no operations or attributes,  from which most categories
   in Axiom  are <a href="#p8634">category extensions</a>.
 </li>
 <li><a name="p35301" class="glabel"/><b>object</b>
   a data entity created or manipulated by programs. Elements of
  domains, functions, and domains themselves are objects. Whereas
  categories are created by functions, they cannot be dynamically
  manipulated in the current system and are thus not considered as
  objects. The most basic objects are <a href="#p31774">literals</a>;
  all other objects must be created 
  <a href="#p22911">functions</a>. Objects can refer to other objects using
  <a href="#p39600">pointers</a>. Axiom language uses 
  <a href="#p39949">pointer semantics</a> when dealing with 
  <a href="#p34398">mutable</a> objects.
 </li>
 <li><a name="p35854" class="glabel"/><b>object code</b>
   code which can be directly executed by hardware; also known as 
  <div class="gsyntax">machine language</div>.
 </li>
 <li><a name="p35946" class="glabel"/><b>operand</b>
   an argument of an <a href="#p36278">operator</a> (regarding an
  operator as a <a href="#p22911">function</a>).
 </li>
 <li><a name="p36041" class="glabel"/><b>operation</b>
   an abstraction of a <a href="#p22911">function</a>, described by a 
  <a href="#p46813">signature</a>. For example, 
  <div align="center" class="gspad">
   fact: NonNegativeInteger -> NonNegativeInteger
  </div>
  describes an operation for "the factorial of a (non-negative) integer".
 </li>
 <li><a name="p36278" class="glabel"/><b>operator</b>
   special reserved words in the language such as 
  <div class="gfunction">+</div> and <div class="gfunction">*</div>;
  operators can be either <a href="#p42559">prefix</a> or 
  <a href="#p27746">infix</a> and have a relative 
  <a href="#p42098">precedence</a>.
 </li>
 <li><a name="p36465" glabel="class"/><b>overloading</b>
   the use of the same name to denote distinct functions; a function is
  identified by a <a href="#p46813">signature</a> identifying its name,
  the number and types of its arguments, and its return types. If two
  functions can have identical signatures, a
  <a href="#p37520">package call</a> must be made to distinquish the two.
 </li>
 <li><a name="p36778" class="glabel"/><b>package</b>
   a domain whose exported operations depend solely on the parameters
  and other explicit domains, e.g. a package for solving systems of
  equations of polynomials over any field, e.g. floats, rational
  numbers, complex rational functions, or power series. Facilities for
  integration, differential equations, solution of linear or polynomial
  equations, and group theory are provided by "packages". Technically, a
  package is a domain which has no <a href="#p46813">signature</a>
  containing the symbol $. While domains intuitively provide
  computational objects you can compute with, packages intuitively
  provide functions (<a href="#p41450">polymorphic</a> functions) which
  will work over a variety of datatypes.
 </li>
 <li><a name="p37520" class="glabel"/><b>package call</b>
   <div class="gsyntax">(syntax)</div> an expression of the form 
  <div class="gspad">e $ D</div> where <div class="gspad">e</div> is an 
  <a href="#p2473">application</a> and <div class="gspad">D</div> denotes
  some <a href="#p36778">package</a> (or <a href="#p17507">domain</a>).
 </li>
 <li><a name="p37696" class="glabel"/><b>package call</b>
   <div class="gsyntax">(syntax)</div> an expression of the form 
  <div class="gspad">f(x, y)$D</div> used to identify that the function 
  <div class="gspad">f</div> is to be one from <div class="gspad">D</div>.
 </li>
 <li><a name="p37833" class="glabel"/><b>package constructor</b>
  same as <a href="#p16173">domain constructor</a>.
 </li>
 <li><a name="p37878" class="glabel"/><b>parameter</b>
  see <a href="#p2885">argument</a>
 </li>
 <li><a name="p37908" class="glabel"/><b>parameterized datatype</b>
   a domain that is built on another, for example, polynomials with
  integer coefficients.
 </li>
 <li><a name="p38004" class="glabel"/><b>parameterized form</b>
   a expression of the form <div class="gspad">f(x, y)</div>, an 
  <a href="#p2473">application</a> of a function.
 </li>
 <li><a name="p38095" class="glabel"/><b>parent</b>
   (of a domain) a category which is explicitly declared in the source
  code definition for the domain to be an <a href="#p20171">export</a>
  of the domain.
 </li>
 <li><a name="p38242" class="glabel"/><b>parse</b>
  <ol>
   <li>
     (verb) to produce an internal representation of a user input string;
    the resultant internal representation is then "interpreted" by Axiom
    to perform some indicated action.
   </li>
   <li>
    the transformation of a user input string representing a valid Axiom
    expression into an internal representation as a tree-structure.
   </li>
  </ol>
 </li>
 <li><a name="p38572" class="glabel"/><b>partially ordered set</b>
   a set with a reflexive, transitive and antisymetric 
  <a href="#p4684">binary</a> operation.
 </li>
 <li><a name="p38600" class="glabel"/><b>pattern</b>
  The left hand side of a rewrite rule is called a pattern. Rewrite rules
  can be used to perform pattern matching, usually for simplification.
  The right hand side of a rule is called the 
  <a href="p49000">substitution</a>.
 </li>
 <li><a name="p38661" class="glabel"/><b>pattern match</b>
  <ol>
   <li>
     (on expressions) Given a expression called a "subject" 
    <div class="gspad">u</div>, the attempt to rewrite 
    <div class="gspad">u</div> using a set of "rewrite rules". Each rule has
    the form <div class="gspad">A == B</div> where 
    <div class="gspad">A</div> indicates a expression called a "pattern" and
    <div class="gspad">B</div> denotes a "replacement". The meaning of
    this rule is "replace <div class="gspad">A</div> by 
    <div class="gspad">B"</div>. If a given pattern <div class="gspad">A</div>
    matches a subexpression of <div class="gspad">u</div>, that
    subexpression is replaced by <div class="gspad">B</div>. Once
    rewritten, pattern matching continues until no further changes occur.
   </li>
   <li>
     (on strings) the attempt to match a string indicating a "pattern" to
    another string called a "subject", for example, for the purpose of
    identifying a list of names. In a browser, users may enter 
    <a href="#p46294">search strings</a> for the purpose of identifying
    constructors, operations, and attributes.
   </li>
  </ol>
 </li>
 <li><a name="p39400" class="glabel"/><b>pattern variable</b>
  In a rule a symbol which is not a recognized function acts as a
  pattern variable and is free to match any subexpression.
 </li>
 <li><a name="p39494" class="glabel"/><b>pile</b>
   alternate syntax for a block, using indentation and column alignment
  (see also <a href="#p5086">block</a>).
 </li>
 <li><a name="p39600" class="glabel"/><b>pointer</b>
   a reference implemented by a link directed from one object to another
  in the computer memory. An object is said to 
  <div class="gsyntax">refer</div> to another if it has a pointer to that
  other object. Objects can also refer to themselves (cyclic references
  are legal). Also more than one object can refer to the same
  object. See also <a href="#p39949">pointer semantics</a>.
 </li>
 <li><a name="p39949" class="glabel"/><b>pointer semantics</b>
   the programming language semantics used in languages such as LISP
  which allow objects to be <a href="#p34398">mutable</a>. Consider the
  following sequence of Axiom statements:
  <ol>
   <li> <div class="gspad">x : Vector Integer := [1, 4, 7]</div> 
   </li>
   <li> <div class="gspad">y := x</div> 
   </li>
   <li> <div class="gspad">swap!(x, 2, 3)</div> 
   </li>
  </ol>
  The function <div class="gfunction">swap!</div> from 
  <div class="gtype">Vector</div> is used to interchange the 2nd and 3rd
  value in the list <div class="gspad">x</div> producing the value 
  <div class="gspad">[1, 7, 4]</div>. What value does 
  <div class="gspad">y</div> have after evaluation of the third statement?
  The answer is different in Axiom than it is in a language with 
  <a href="#p12604">copying semantics</a>. In Axiom , first the vector 
  [1, 2, 3] is created and the variable <div class="gspad">x</div> set to 
  <a href="#p39600">point</a> to this object. Let
  <div class="gspad">'s</div> call this object 
  <div class="gspad">V</div>. Now <div class="gspad">V</div> refers to its 
  <a href="#p26892">immutable</a> components 1, 2, and 3. Next, the
  variable <div class="gspad">y</div> is made to point to 
  <div class="gspad">V</div> just as <div class="gspad">x</div> does. Now the
  third statement interchanges the last 2 elements of 
  <div class="gspad">V</div> (the <div class="gsyntax">!</div> at the end of
  the name <div class="gfunction">swap!</div> from 
  <div class="gtype">Vector</div> tells you that this operation is
  destructive, that is, it changes the elements <div class="gsyntax">in
  place</div>). Both <div class="gspad">x</div> and 
  <div class="gspad">y</div> perceive this change to 
  <div class="gspad">V</div>. Thus both <div class="gspad">x</div> and 
  <div class="gspad">y</div> then have the value 
  <div class="gspad">[1, 7, 4]</div>. 
  In Pascal, the second statement causes a copy of 
  <div class="gspad">V</div> to be stored under 
  <div class="gspad">y</div>. Thus the change to <div class="gspad">V</div>
  made by the third statement does not affect 
  <div class="gspad">y</div>.
 </li>
 <li><a name="p41450" class="glabel"/><b>polymorphic</b>
   a <a href="#p22911">function</a> parameterized by one or more 
  <a href="#p17507">domains</a>; a <a href="#p2267">algorithm</a> defined
  <a href="#p6628">categorically</a>. Every function defined in a domain
  or package constructor with a domain-valued parameter is
  polymorphic. For example, the same matrix 
  <div class="gfunction">*</div> function is used to multiply "matrices over
  integers" as "matrices over matrices over integers"
 </li>
 <li><a name="p41972" class="glabel"/><b>postfix</b>
   an <a href="#p36278">operator</a> that follows its single 
  <a href="#p35946">operand</a>. Postfix operators are not available in
  Axiom.
 </li>
 <li><a name="p42098" class="glabel"/><b>precedence</b>
   <div class="gsyntax">(syntax)</div> refers to the so-called 
  <div class="gsyntax">binding power</div> of an operator. For example, 
  <div class="gspad">*</div> has higher binding power than 
  <div class="gspad">+</div> so that the expression
  <div class="gspad">a + b * c</div> is equivalent to
  <div class="gspad">a + (b * c)</div>.
 </li>
 <li><a name="p42318" class="glabel"/><b>precision</b>
   the number of digits in the specification of a number, e.g. as set by
  <div class="gfunction">precision</div> from <div class="gtype">Float</div>.
 </li>
 <li><a name="p42440" class="glabel"/><b>predicate</b>
  <ol>
   <li> a Boolean valued function,  e.g. 
        <div class="gspad">odd: Integer -> Boolean</div>. 
   </li>
   <li> an Boolean valued expression
   </li>
  </ol>
 </li>
 <li><a name="p42559" class="glabel"/><b>prefix</b>
   <div class="gsyntax">(syntax)</div> an 
  <a href="#p36278">operator</a> such as <div class="gspad">-</div> and
  <div class="gspad">not</div> that is written 
  <div class="gsyntax">before</div> its single 
  <a href="#p35946">operand</a>. Every function of one argument can be used
  as a prefix operator. For example, all of the following have
  equivalent meaning in Axiom : <div class="gspad">f(x)</div>, 
  <div class="gspad">f x</div>, and <div class="gspad">f.x</div>. See also 
  <a href="#p17269">dot notation</a>.
 </li>
 <li><a name="p42917" class="glabel"/><b>quote</b>
   the prefix <a href="#p36278">operator</a> 
  <div class="gfunction">'</div> meaning <div class="gsyntax">do not
  evaluate</div>.
 </li>
 <li><a name="p43000" class="glabel"/><b>Record</b>
   (basic domain constructor) a domain constructor used to create a
  inhomogeneous aggregate composed of pairs of "selectors" and 
  <a href="#p52710">values</a>. A Record domain is written in the form 
  <div class="gspad">Record(a1:D1, ..., an:Dn)</div> 
  (<div class="gspad">n</div> > 0) where <div class="gspad">a1</div>, ...,
  <div class="gspad">an</div> are identifiers called the 
  <div class="gsyntax">selectors</div> of the record, and 
  <div class="gspad">D1</div>, ..., <div class="gspad">Dn</div> are domains
  indicating the type of the component stored under selector 
  <div class="gspad">an</div>.
 </li>
 <li><a name="p43448" class="glabel"/><b>recurrence relation</b>
   A relation which can be expressed as a function 
  <div class="gspad">f</div> with some argument <div class="gspad">n</div>
  which depends on the value of <div class="gspad">f</div> at 
  <div class="gspad">k</div> previous values. In many cases, Axiom will
  rewrite a recurrence relation on compilation so as to 
  <a href="#p5499">cache</a> its previous <div class="gspad">k</div> values
  and therefore make the computation significantly more efficient.
 </li>
 <li><a name="p43806" class="glabel"/><b>recursion</b>
   use of a self-reference within the body of a function. Indirect
  recursion is when a function uses a function below it in the call
  chain.
 </li>
 <li><a name="p43948" class="glabel"/><b>recursive</b>
  <ol>
   <li> A function that calls itself,  either directly or indirectly through
        another function. 
   </li>
   <li> self-referential. See also <a href="#p43948">recursive</a>.
   </li>
  </ol>
 </li>
 <li><a name="p44097" class="glabel"/><b>reference</b>
  see <a href="#p39600">pointer</a>
 </li>
 <li><a name="p44126" class="glabel"/><b>Rep</b>
   a special identifier used as <a href="#p32278">local variable</a> of
  a domain constructor body to denote the representation domain for
  objects of a domain.
 </li>
 <li><a name="p44277" class="glabel"/><b>representation</b>
   a <a href="#p17507">domain</a> providing a data structure for
  elements of a domain; generally denoted by the special identifier 
  <a href="#p44126">Rep</a> in the Axiom programming language. As domains
  are <a href="#p725">abstract datatypes</a>, this representation is not
  available to users of the domain, only to functions defined in the 
  <a href="#p23911">function body</a> for a domain constructor. Any domain
  can be used as a representation.
 </li>
 <li><a name="p44698" class="glabel"/><b>reserved word</b>
   a special sequence of non-blank characters with special meaning in
  the Axiom language. Examples of reserved words are names such as 
  <div class="gfunction">for</div>, <div class="gfunction">if</div>, and 
  <div class="gfunction">free</div>, operator names such as 
  <div class="gfunction">+</div> and <div class="gspad">mod</div>, special
  character strings such as <div class="gspad">==</div> and 
  <div class="gspad">:=</div>.
 </li>
 <li><a name="p45044" class="glabel"/><b>retraction</b>
   to move an object in a parameterized domain back to the underlying
  domain, for example to move the object <div class="gspad">7</div> from
  a "fraction of integers" 
  (domain <div class="gtype">Fraction Integer</div>) to
  "the integers" (domain <div class="gtype">Integer</div>).
 </li>
 <li><a name="p45280" class="glabel"/><b>return</b>
   when leaving a function, the value of the expression following 
  <div class="gfunction">return</div> becomes the value of the function.
 </li>
 <li><a name="p45405" class="glabel"/><b>ring</b>
   a set with a commutative addition, associative multiplication, a unit
  element, and multiplication distributes over addition and subtraction.
 </li>
 <li><a name="p45557" class="glabel"/><b>rule</b>
   <div class="gsyntax">(syntax)</div> 1. An expression of the form
  <div class="gspad">rule A == B</div> indicating a "rewrite
  rule". 2. An expression of the form 
  <div class="gspad">rule(R1;...;Rn)</div> 
  indicating a set of "rewrite rules" 
  <div class="gspad">R1</div>, ..., <div class="gspad">Rn</div>. See 
  <a href="#p38661">pattern matching</a> for details.
 </li>
 <li><a name="p45818" class="glabel"/><b>run-time</b>
   the time of doing a computation. Contrast 
  <a href="#p10167">compile-time</a>. rather than prior to it; 
  <a href="#p17507">dynamic</a> as opposed to 
  <a href="#p47594">static</a>. For example, the decision of the intepreter
  to build a structure such as "matrices with power series entries" in
  response to user input is made at run-time.
 </li>
 <li><a name="p46129" class="glabel"/><b>run-time check</b>
   an error-checking which can be done only when the program receives
  user input; for example, confirming that a value is in the proper
  range for a computation.
 </li>
 <li><a name="p46200" class="glabel"/><b>search order</b>
   the sequence of <a href="#p13571">default packages</a> for a given
  domain to be searched during <a href="#p17853">dynamic
  lookup</a>. This sequence is computed first by ordering the category
  <a href="#p2335">ancestors</a> of the domain according to their 
  <div class="gsyntax">level number</div>, an integer equal to to the
  minimum distance of the domain from the category. Parents have level
  1, parents of parents have level 2, and so on. Among categories with
  equal level numbers, ones which appear in the left-most branches of
  <div class="gsyntax">Join</div><div class="gspad">s</div> in the
  source code come first. See also <a href="#p17853">dynamic lookup</a>.
 </li>
 <li><a name="p46294" class="glabel"/><b>search string</b>
  a string entered into an <a href="#p28103">input area</a> on a screen
 </li>
 <li><a name="p46372" class="glabel"/><b>selector</b>
  an identifier used to address a component value of a
  <a href="p43000">Record</a> datatype.
 </li>
 <li><a name="p46454" class="glabel"/><b>semantics</b>
   the relationships between symbols and their meanings. The rules for
  obtaining the <div class="gsyntax">meaning</div> of any syntactically
  valid expression.
 </li>
 <li><a name="p46594" class="glabel"/><b>semigroup</b>
   <div class="gsyntax">(algebra)</div> a <a href="#p34266">monoid</a>
  which need not have an identity; it is closed and associative.
 </li>
 <li><a name="p46699" class="glabel"/><b>side effect</b>
   action which changes a component or structure of a value. See 
  <a href="#p14365">destructive operation</a> for details.
 </li>
 <li><a name="p46813" class="glabel"/><b>signature</b>
   <div class="gsyntax">(syntax)</div> an expression describing an 
  <a href="#p36041">operation</a>. A signature has the form as 
  <div class="gspad">name : source -> target</div>, where 
  <div class="gspad">source</div> gives the type of the arguments of the
  operation, and <div class="gspad">target</div> gives the type of the
  result.
 </li>
 <li><a name="p47066" class="glabel"/><b>small float</b>
  the domain for hardware floating point arithmetic as provided by the
  computer hardware.
 </li>
 <li><a name="p47159" class="glabel"/><b>small integer</b>
  the domain for hardware integer arithmetic. as provided by the computer 
  hardware.
 </li>
 <li><a name="p47246" class="glabel"/><b>source</b>
   the <a href="#p50664">type</a> of the argument of a 
  <a href="#p22911">function</a>; the type expression before the 
  <div class="gspad">-></div> in a <a href="#p46813">signature</a>. For
  example, the source of 
  <div class="gspad">f : (Integer, Integer) -> Integer</div> 
  is <div class="gspad">(Integer, Integer)</div>.
 </li>
 <li><a name="p47486" class="glabel"/><b>sparse</b>
   data structure whose elements are mostly identical (a sparse matrix
  is one filled with mostly zeroes).
 </li>
 <li><a name="p47594" class="glabel"/><b>static</b>
  that computation done before run-time, such as compilation. Contrast
  <a href="#p17507">dynamic</a>.
 </li>
 <li><a name="p47691" class="glabel"/><b>step number</b>
   the number which precedes user input lines in an interactive session;
  the output of user results is also labeled by this number.
 </li>
 <li><a name="p47825" class="glabel"/><b>stream</b>
   an object of <div class="gtype">Stream(R)</div>, a generalization of
  a <a href="#p31730">list</a> to allow an infinite number of
  elements. Elements of a stream are computed "on demand". Strings are
  used to implement various forms of power series.
 </li>
 <li><a name="p48077" class="glabel"/><b>string</b>
   an object of domain <div class="gtype">String</div>. Strings are 
  <a href="#p31774">literals</a> consisting of an arbitrary sequence of 
  <a href="#p9278">characters</a> surrounded by double-quotes 
  (<div class="gfunction">"</div>), e.g. 
  <div class="gspad">"Look here!"</div>.
 </li>
 <li><a name="p48303" class="glabel"/><b>subdomain</b>
   <div class="gsyntax">(basic concept)</div> a 
  <a href="#p17507">domain</a> together with a 
  <a href="#p42440">predicate</a> characterizing which members of the
  domain belong to the subdomain. The exports of a subdomain are usually
  distinct from the domain itself. A fundamental assumption however is
  that values in the subdomain are automatically 
  <a href="#p9572">coerceable</a> to values in the domain. For example, if
  <div class="gspad">n</div> and <div class="gspad">m</div> are declared
  to be members of a subdomain of the integers, then 
  <div class="gsyntax">any</div> <a href="#p4684">binary</a> operation from
  <div class="gtype">Integer</div> is available on 
  <div class="gspad">n</div> and <div class="gspad">m</div>. On the other
  hand, if the result of that operation is to be assigned to, say, 
  <div class="gspad">k</div>, also declared to be of that subdomain, a 
  <a href="#p45818">run-time</a> check is generally necessary to ensure
  that the result belongs to the subdomain.
 </li>
 <li><a name="p49000" class="glabel"/><b>substitution</b>
  The right hand side of a rule is called the substitution.
  The left hand side of a rewrite rule is called a 
  <a href="p38600">pattern</a>. Rewrite rules
  can be used to perform pattern matching, usually for simplification.
 </li>
 <li><a name="p49128" class="glabel"/><b>such that clause</b>
   the use of <div class="gfunction">|</div> followed by an expression
  to filter an iteration.
 </li>
 <li><a name="p49209" class="glabel"/><b>suffix</b>
   <div class="gsyntax">(syntax)</div> an 
  <a href="#p36278">operator</a> which placed after its operand. Suffix
  operators are not allowed in the Axiom language.
 </li>
 <li><a name="p49347" class="glabel"/><b>symbol</b>
   objects denoted by <a href="#p26553">identifier</a> 
  <a href="#p31774">literals</a>; an element of domain 
  <div class="gtype">Symbol</div>. The interpreter defaultly converts a
  symbol <div class="gspad">x</div> into 
  <div class="gtype">Variable(x)</div>.
 </li>
 <li><a name="p49538" class="glabel"/><b>syntax</b>
  rules of grammar,  punctuation etc. for forming correct expressions.
 </li>
 <li><a name="p49613" class="glabel"/><b>system commands</b>
   top-level Axiom statements that begin with 
  <div class="gsyntax">)</div>. System commands allow users to query the
  database, read files, trace functions, and so on.
 </li>
 <li><a name="p49773" class="glabel"/><b>tag</b>
  an identifier used to discriminate a branch of a
  <a href="#p51780">Union</a> type.
 </li>
 <li><a name="p49851" class="glabel"/><b>target</b>
   the <a href="#p50664">type</a> of the result of a 
  <a href="#p22911">function</a>; the type expression following the 
  <div class="gspad">-></div> in a <a href="#p46813">signature</a>.
 </li>
 <li><a name="p49990" class="glabel"/><b>top-level</b>
  refers to direct user interactions with the Axiom  interpreter.
 </li>
 <li><a name="p50064" class="glabel"/><b>totally ordered set</b>
   <div class="gsyntax">(algebra)</div> a partially ordered set where
  any two elements are comparable.
 </li>
 <li><a name="p50148" class="glabel"/><b>trace</b>
   use of system function <div class="gcmd">)trace</div> to track the
  arguments passed to a function and the values returned.
 </li>
 <li><a name="p50262" class="glabel"/><b>tuple</b>
   an expression of two or more other expressions separated by commas,
  e.g. <div class="gspad">4, 7, 11</div>. Tuples are also used for
  multiple arguments both for <a href="#p2473">applications</a>
  (e.g. <div class="gspad">f(x, y)</div>) and in 
  <a href="#p46813">signatures</a> (e.g. 
  <div class="gspad">(Integer, Integer) -> Integer</div>). 
  A tuple is not a data structure, rather a
  syntax mechanism for grouping expressions.
 </li>
 <li><a name="p50664" class="glabel"/><b>type</b>
   The type of any <a href="#p48303">subdomain</a> is the unique symbol
  <div class="gsyntax">Category</div>. The type of a
  <a href="#p17507">domain</a> is any <a href="#p6628">category</a> that
  domain belongs to. The type of any other object is either the (unique)
  domain that object belongs to or any <a href="#p48303">subdomain</a>
  of that domain. The type of objects is in general not unique.
 </li>
 <li><a name="p51002" class="glabel"/><b>type checking</b>
  a system function which determines whether the datatype of an object is
  appropriate for a given operation.
 </li>
 <li><a name="p51114" class="glabel"/><b>type constructor</b>
  a <a href="#p16173">domain constructor</a> or
  <a href="#p8355">category constructor</a>.
 </li>
 <li><a name="p51189" class="glabel"/><b>type inference</b>
   when the interpreter chooses the type for an object based on
  context. For example, if the user interactively issues the definition
  <div align="center" class="gspad">f(x) == (x + %i)**2</div> then
  issues <div class="gspad">f(2)</div>, the interpreter will infer the
  type of <div class="gspad">f</div> to be 
  <div class="gspad">Integer -> Complex Integer</div>.
 </li>
 <li><a name="p51480" class="glabel"/><b>unary</b>
  operation or function with <a href="#p3173">arity</a> 1
 </li>
 <li><a name="p51532" class="glabel"/><b>underlying domain</b>
   for a <a href="#p17507">domain</a> that has a single domain-valued
  parameter, the <div class="gsyntax">underlying domain</div> refers to
  that parameter. For example, the domain "matrices of integers" 
  (<div class="gtype">Matrix Integer</div>) has underlying domain 
  <div class="gtype">Integer</div>.
 </li>
 <li><a name="p51780" class="glabel"/><b>Union</b>
   <div class="gsyntax">(basic domain constructor)</div> a domain
  constructor used to combine any set of domains into a single domain. A
  Union domain is written in the form 
  <div class="gspad">Union(a1:D1,..., an:Dn)</div> 
  (<div class="gspad">n</div> > 0) where 
  <div class="gspad">a1</div>, ..., <div class="gspad">an</div> are
  identifiers called the <div class="gsyntax">tags</div> of the union,
  and <div class="gspad">D1</div>, ..., <div class="gspad">Dn</div> are
  domains called the <div class="gsyntax">branches</div> of the
  union. The tags <div class="gspad">ai</div> are optional, but required
  when two of the <div class="gspad">Di</div> are equal, e.g. 
  <div class="gspad">Union(inches:Integer, centimeters:Integer)</div>. In the
  interpreter, values of union domains are automatically coerced to
  values in the branches and vice-versa as appropriate. See also 
  <a href="#p6220">case</a>.
 </li>
 <li><a name="p52482" class="glabel"/><b>unit</b>
  <div class="gsyntax">(algebra)</div> an invertible element.
 </li>
 <li><a name="p52526" class="glabel"/><b>user function</b>
  a function defined by a user during an interactive session. Contrast
  <a href="#p5399">built-in function</a>.
 </li>
 <li><a name="p52631" class="glabel"/><b>user variable</b>
  a variable created by the user at top-level during an interactive session
 </li>
 <li><a name="p52710" class="glabel"/><b>value</b>
  <ol>
   <li>
    the result of <a href="#p19167">evaluating</a> an expression. 
   </li>
   <li> 
    a property associated with a <a href="#p52894">variable</a> in a
    <a href="#p4735">binding</a> in an <a href="#p19131">environment</a>.
   </li>
  </ol>
 </li>
 <li><a name="p52894" class="glabel"/><b>variable</b>
  a means of referring to an object but itself is not an object. A
  variable has a name and an associated <a href="#p4735">binding</a>
  created by <a href="#p19167">evaluation</a> of Axiom expressions such
  as <a href="#p12903">declarations</a>, 
  <a href="#p3322">assignments</a>, and 
  <a href="#p13754">definitions</a>. In the top-level 
  <a href="#p19131">environment</a> of the interpreter, variables are 
  <a href="#p24833">global variables</a>. Such variables can be freely
  referenced in user-defined functions although a 
  <a href="#p22113">free</a> declaration is needed to assign values to
  them. See <a href="#p32278">local variable</a> for details.
 </li>
 <li><a name="p53484" class="glabel"/><b>Void</b>
   the type given when the <a href="#p52710">value</a> and <a
  href="#p50664">type</a> of an expression are not needed. Also used
  when there is no guarantee at run-time that a value and predictable
  mode will result.
 </li>
 <li><a name="p53681" class="glabel"/><b>wild card</b>
   a symbol which matches any substring including the empty string; for
  example, the search string <div class="gsyntax">*an*</div> matches an
  word containing the consecutive letters <div class="gsyntax">a</div>
  and <div class="gsyntax">n</div>
 </li>
 <li><a name="p53866" class="glabel"/><b>workspace</b>
   an interactive record of the user input and output held in an
  interactive history file. Each user input and corresponding output
  expression in the workspace has a corresponding <a href="#p47691">step
  number</a>. The current output expression in the workspace is referred
  to as <div class="gspad">%</div>. The output expression associated
  with step number <div class="gspad">n</div> is referred to by <div
  class="gspad">%%(n)</div>. The <div class="gspad">k</div>-th previous
  output expression relative to the current step number <div
  class="gspad">n</div> is referred to by <div class="gspad">%%(-
  k)</div>. Each interactive <a href="#p21847">frame</a> has its own
  workspace.
 </li>
</ul>
 </body>
</html>