\contentsline {chapter}{\numberline {1}Axiom Features}{1}{chapter.1}
\contentsline {section}{\numberline {1.1}Introduction to Axiom}{1}{section.1.1}
\contentsline {subsection}{\numberline {1.1.1}Symbolic Computation}{1}{subsection.1.1.1}
\contentsline {subsection}{\numberline {1.1.2}Numeric Computation}{2}{subsection.1.1.2}
\contentsline {subsection}{\numberline {1.1.3}Mathematical Structures}{3}{subsection.1.1.3}
\contentsline {subsection}{\numberline {1.1.4}HyperDoc}{4}{subsection.1.1.4}
\contentsline {subsection}{\numberline {1.1.5}Interactive Programming }{5}{subsection.1.1.5}
\contentsline {subsection}{\numberline {1.1.6}Graphics}{6}{subsection.1.1.6}
\contentsline {subsection}{\numberline {1.1.7}Data Structures}{7}{subsection.1.1.7}
\contentsline {subsection}{\numberline {1.1.8}Pattern Matching}{8}{subsection.1.1.8}
\contentsline {subsection}{\numberline {1.1.9}Polymorphic Algorithms}{9}{subsection.1.1.9}
\contentsline {subsection}{\numberline {1.1.10}Extensibility}{10}{subsection.1.1.10}
\contentsline {subsection}{\numberline {1.1.11}Open Source}{11}{subsection.1.1.11}
\contentsline {chapter}{\numberline {2}Ten Fundamental Ideas}{13}{chapter.2}
\contentsline {subsection}{\numberline {2.0.12}Types are Defined by Abstract Datatype Programs}{14}{subsection.2.0.12}
\contentsline {subsection}{\numberline {2.0.13}The Type of Basic Objects is a Domain or Subdomain}{14}{subsection.2.0.13}
\contentsline {subsection}{\numberline {2.0.14}Domains Have Types Called Categories}{15}{subsection.2.0.14}
\contentsline {subsection}{\numberline {2.0.15}Operations Can Refer To Abstract Types}{15}{subsection.2.0.15}
\contentsline {subsection}{\numberline {2.0.16}Categories Form Hierarchies}{15}{subsection.2.0.16}
\contentsline {subsection}{\numberline {2.0.17}Domains Belong to Categories by Assertion}{16}{subsection.2.0.17}
\contentsline {subsection}{\numberline {2.0.18}Packages Are Clusters of Polymorphic Operations}{17}{subsection.2.0.18}
\contentsline {subsection}{\numberline {2.0.19}The Interpreter Builds Domains Dynamically}{17}{subsection.2.0.19}
\contentsline {subsection}{\numberline {2.0.20}Axiom Code is Compiled}{18}{subsection.2.0.20}
\contentsline {subsection}{\numberline {2.0.21}Axiom is Extensible}{18}{subsection.2.0.21}
\contentsline {chapter}{\numberline {3}Starting Axiom}{21}{chapter.3}
\contentsline {section}{\numberline {3.1}Starting Up and Winding Down}{21}{section.3.1}
\contentsline {subsection}{\numberline {3.1.1}Clef}{22}{subsection.3.1.1}
\contentsline {subsection}{\numberline {3.1.2}Typographic Conventions}{22}{subsection.3.1.2}
\contentsline {section}{\numberline {3.2}The Axiom Language}{23}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Arithmetic Expressions}{23}{subsection.3.2.1}
\contentsline {subsection}{\numberline {3.2.2}Previous Results}{24}{subsection.3.2.2}
\contentsline {subsection}{\numberline {3.2.3}Some Types}{25}{subsection.3.2.3}
\contentsline {subsection}{\numberline {3.2.4}Symbols, Variables, Assignments, and Declarations}{26}{subsection.3.2.4}
\contentsline {subsection}{\numberline {3.2.5}Conversion}{28}{subsection.3.2.5}
\contentsline {subsection}{\numberline {3.2.6}Calling Functions}{29}{subsection.3.2.6}
\contentsline {subsection}{\numberline {3.2.7}Some Predefined Macros}{30}{subsection.3.2.7}
\contentsline {subsection}{\numberline {3.2.8}Long Lines}{31}{subsection.3.2.8}
\contentsline {subsection}{\numberline {3.2.9}Comments}{31}{subsection.3.2.9}
\contentsline {section}{\numberline {3.3}Using Axiom as a Pocket Calculator}{31}{section.3.3}
\contentsline {subsection}{\numberline {3.3.1}Basic Arithmetic}{31}{subsection.3.3.1}
\contentsline {subsection}{\numberline {3.3.2}Type Conversion}{33}{subsection.3.3.2}
\contentsline {subsection}{\numberline {3.3.3}Useful Functions}{35}{subsection.3.3.3}
\contentsline {section}{\numberline {3.4}Using Axiom as a Symbolic Calculator}{38}{section.3.4}
\contentsline {subsection}{\numberline {3.4.1}Expressions Involving Symbols}{38}{subsection.3.4.1}
\contentsline {subsection}{\numberline {3.4.2}Complex Numbers}{39}{subsection.3.4.2}
\contentsline {subsection}{\numberline {3.4.3}Number Representations}{41}{subsection.3.4.3}
\contentsline {subsection}{\numberline {3.4.4}Modular Arithmetic}{45}{subsection.3.4.4}
\contentsline {section}{\numberline {3.5}General Points about Axiom}{46}{section.3.5}
\contentsline {subsection}{\numberline {3.5.1}Computation Without Output}{46}{subsection.3.5.1}
\contentsline {subsection}{\numberline {3.5.2}Accessing Earlier Results}{47}{subsection.3.5.2}
\contentsline {subsection}{\numberline {3.5.3}Splitting Expressions Over Several Lines}{47}{subsection.3.5.3}
\contentsline {subsection}{\numberline {3.5.4}Comments and Descriptions}{47}{subsection.3.5.4}
\contentsline {subsection}{\numberline {3.5.5}Control of Result Types}{48}{subsection.3.5.5}
\contentsline {subsection}{\numberline {3.5.6}Using system commands}{49}{subsection.3.5.6}
\contentsline {subsection}{\numberline {3.5.7}Using undo}{50}{subsection.3.5.7}
\contentsline {section}{\numberline {3.6}Data Structures in Axiom}{53}{section.3.6}
\contentsline {subsection}{\numberline {3.6.1}Lists}{53}{subsection.3.6.1}
\contentsline {subsection}{\numberline {3.6.2}Segmented Lists}{61}{subsection.3.6.2}
\contentsline {subsection}{\numberline {3.6.3}Streams}{62}{subsection.3.6.3}
\contentsline {subsection}{\numberline {3.6.4}Arrays, Vectors, Strings, and Bits}{64}{subsection.3.6.4}
\contentsline {subsection}{\numberline {3.6.5}Flexible Arrays}{67}{subsection.3.6.5}
\contentsline {section}{\numberline {3.7}Functions, Choices, and Loops}{70}{section.3.7}
\contentsline {subsection}{\numberline {3.7.1}Reading Code from a File}{70}{subsection.3.7.1}
\contentsline {subsection}{\numberline {3.7.2}Blocks}{70}{subsection.3.7.2}
\contentsline {subsection}{\numberline {3.7.3}Functions}{74}{subsection.3.7.3}
\contentsline {subsection}{\numberline {3.7.4}Choices}{77}{subsection.3.7.4}
\contentsline {subsection}{\numberline {3.7.5}Loops}{77}{subsection.3.7.5}
\contentsline {subsubsection}{The {\tt repeat} loop}{78}{section*.2}
\contentsline {subsubsection}{The {\tt while} loop}{79}{section*.3}
\contentsline {subsubsection}{The {\tt for} loop}{83}{section*.4}
\contentsline {section}{\numberline {3.8}Numbers}{87}{section.3.8}
\contentsline {section}{\numberline {3.9}Data Structures}{95}{section.3.9}
\contentsline {section}{\numberline {3.10}Expanding to Higher Dimensions}{102}{section.3.10}
\contentsline {section}{\numberline {3.11}Writing Your Own Functions}{104}{section.3.11}
\contentsline {section}{\numberline {3.12}Polynomials}{109}{section.3.12}
\contentsline {section}{\numberline {3.13}Limits}{111}{section.3.13}
\contentsline {section}{\numberline {3.14}Series}{113}{section.3.14}
\contentsline {section}{\numberline {3.15}Derivatives}{115}{section.3.15}
\contentsline {section}{\numberline {3.16}Integration}{118}{section.3.16}
\contentsline {section}{\numberline {3.17}Differential Equations}{121}{section.3.17}
\contentsline {section}{\numberline {3.18}Solution of Equations}{124}{section.3.18}
\contentsline {chapter}{\numberline {4}Graphics}{127}{chapter.4}
\contentsline {subsection}{\numberline {4.0.1}Plotting 2D graphs}{128}{subsection.4.0.1}
\contentsline {subsubsection}{Plotting 2D graphs of 1 variable}{129}{section*.5}
\contentsline {subsubsection}{Plotting 2D parametric plane curves}{130}{section*.6}
\contentsline {subsubsection}{Plotting 2D algebraic curves}{131}{section*.7}
\contentsline {subsubsection}{Colors}{132}{section*.8}
\contentsline {subsubsection}{Two-Dimensional Options}{132}{section*.9}
\contentsline {subsection}{\numberline {4.0.2}Palette}{133}{subsection.4.0.2}
\contentsline {subsection}{\numberline {4.0.3}Two-Dimensional Control-Panel}{134}{subsection.4.0.3}
\contentsline {subsubsection}{Transformations}{135}{section*.10}
\contentsline {subsubsection}{Messages}{136}{section*.11}
\contentsline {subsubsection}{Multiple Graphs}{136}{section*.12}
\contentsline {subsubsection}{Buttons}{137}{section*.13}
\contentsline {subsection}{\numberline {4.0.4}Operations for Two-Dimensional Graphics}{137}{subsection.4.0.4}
\contentsline {subsection}{\numberline {4.0.5}Building Two-Dimensional Graphs Manually}{140}{subsection.4.0.5}
\contentsline {subsubsection}{Creating a Two-Dimensional Viewport from a List of Points}{140}{section*.14}
\contentsline {subsubsection}{Creating a Two-Dimensional Viewport of a List of Points from a File}{147}{section*.15}
\contentsline {subsection}{\numberline {4.0.6}Appending a Graph to a Viewport Window Containing a Graph}{149}{subsection.4.0.6}
\contentsline {subsection}{\numberline {4.0.7}Plotting 3D Graphs}{150}{subsection.4.0.7}
\contentsline {subsubsection}{Plotting 3D functions of 2 variables}{150}{section*.16}
\contentsline {subsubsection}{Plotting 3D parametric space curves}{150}{section*.17}
\contentsline {subsubsection}{Plotting 3D parametric surfaces}{151}{section*.18}
\contentsline {subsection}{\numberline {4.0.8}Three-Dimensional Options}{152}{subsection.4.0.8}
\contentsline {subsection}{\numberline {4.0.9}Three-Dimensional Control-Panel}{153}{subsection.4.0.9}
\contentsline {subsubsection}{Transformations}{154}{section*.19}
\contentsline {subsubsection}{Messages}{155}{section*.20}
\contentsline {subsubsection}{Colormap}{155}{section*.21}
\contentsline {subsubsection}{Buttons}{155}{section*.22}
\contentsline {subsubsection}{Light}{157}{section*.23}
\contentsline {subsubsection}{View Volume}{157}{section*.24}
\contentsline {subsection}{\numberline {4.0.10}Operations for Three-Dimensional Graphics}{158}{subsection.4.0.10}
\contentsline {subsection}{\numberline {4.0.11}Customization using .Xdefaults}{161}{subsection.4.0.11}
\contentsline {chapter}{\numberline {5}Using Types and Modes}{163}{chapter.5}
\contentsline {section}{\numberline {5.1}The Basic Idea}{163}{section.5.1}
\contentsline {subsection}{\numberline {5.1.1}Domain Constructors}{165}{subsection.5.1.1}
\contentsline {section}{\numberline {5.2}Writing Types and Modes}{170}{section.5.2}
\contentsline {subsection}{\numberline {5.2.1}Types with No Arguments}{171}{subsection.5.2.1}
\contentsline {subsection}{\numberline {5.2.2}Types with One Argument}{171}{subsection.5.2.2}
\contentsline {subsection}{\numberline {5.2.3}Types with More Than One Argument}{173}{subsection.5.2.3}
\contentsline {subsection}{\numberline {5.2.4}Modes}{173}{subsection.5.2.4}
\contentsline {subsection}{\numberline {5.2.5}Abbreviations}{173}{subsection.5.2.5}
\contentsline {section}{\numberline {5.3}Declarations}{175}{section.5.3}
\contentsline {section}{\numberline {5.4}Records}{178}{section.5.4}
\contentsline {section}{\numberline {5.5}Unions}{182}{section.5.5}
\contentsline {subsection}{\numberline {5.5.1}Unions Without Selectors}{182}{subsection.5.5.1}
\contentsline {subsection}{\numberline {5.5.2}Unions With Selectors}{185}{subsection.5.5.2}
\contentsline {section}{\numberline {5.6}The ``Any'' Domain}{187}{section.5.6}
\contentsline {section}{\numberline {5.7}Conversion}{188}{section.5.7}
\contentsline {section}{\numberline {5.8}Subdomains Again}{191}{section.5.8}
\contentsline {section}{\numberline {5.9}Package Calling and Target Types}{194}{section.5.9}
\contentsline {section}{\numberline {5.10}Resolving Types}{198}{section.5.10}
\contentsline {section}{\numberline {5.11}Exposing Domains and Packages}{200}{section.5.11}
\contentsline {section}{\numberline {5.12}Commands for Snooping}{202}{section.5.12}
\contentsline {chapter}{\numberline {6}Using HyperDoc}{205}{chapter.6}
\contentsline {section}{\numberline {6.1}Headings}{206}{section.6.1}
\contentsline {section}{\numberline {6.2}Key Definitions}{206}{section.6.2}
\contentsline {section}{\numberline {6.3}Scroll Bars}{207}{section.6.3}
\contentsline {section}{\numberline {6.4}Input Areas}{207}{section.6.4}
\contentsline {section}{\numberline {6.5}Radio Buttons and Toggles}{208}{section.6.5}
\contentsline {section}{\numberline {6.6}Search Strings}{208}{section.6.6}
\contentsline {subsection}{\numberline {6.6.1}Logical Searches}{209}{subsection.6.6.1}
\contentsline {section}{\numberline {6.7}Example Pages}{209}{section.6.7}
\contentsline {section}{\numberline {6.8}X Window Resources for HyperDoc}{209}{section.6.8}
\contentsline {chapter}{\numberline {7}Input Files and Output Styles}{211}{chapter.7}
\contentsline {section}{\numberline {7.1}Input Files}{211}{section.7.1}
\contentsline {section}{\numberline {7.2}The .axiom.input File}{212}{section.7.2}
\contentsline {section}{\numberline {7.3}Common Features of Using Output Formats}{212}{section.7.3}
\contentsline {section}{\numberline {7.4}Monospace Two-Dimensional Mathematical Format}{214}{section.7.4}
\contentsline {section}{\numberline {7.5}TeX Format}{214}{section.7.5}
\contentsline {section}{\numberline {7.6}IBM Script Formula Format}{215}{section.7.6}
\contentsline {section}{\numberline {7.7}FORTRAN Format}{216}{section.7.7}
\contentsline {chapter}{\numberline {8}Axiom System Commands}{221}{chapter.8}
\contentsline {section}{\numberline {8.1}Introduction}{221}{section.8.1}
\contentsline {section}{\numberline {8.2})abbreviation}{222}{section.8.2}
\contentsline {section}{\numberline {8.3})boot}{224}{section.8.3}
\contentsline {section}{\numberline {8.4})cd}{224}{section.8.4}
\contentsline {section}{\numberline {8.5})close}{225}{section.8.5}
\contentsline {section}{\numberline {8.6})clear}{225}{section.8.6}
\contentsline {section}{\numberline {8.7})compile}{227}{section.8.7}
\contentsline {section}{\numberline {8.8})display}{229}{section.8.8}
\contentsline {section}{\numberline {8.9})edit}{230}{section.8.9}
\contentsline {section}{\numberline {8.10})fin}{231}{section.8.10}
\contentsline {section}{\numberline {8.11})frame}{231}{section.8.11}
\contentsline {section}{\numberline {8.12})hd}{233}{section.8.12}
\contentsline {section}{\numberline {8.13})help}{233}{section.8.13}
\contentsline {section}{\numberline {8.14})history}{234}{section.8.14}
\contentsline {section}{\numberline {8.15})library}{236}{section.8.15}
\contentsline {section}{\numberline {8.16})lisp}{237}{section.8.16}
\contentsline {section}{\numberline {8.17})ltrace}{238}{section.8.17}
\contentsline {section}{\numberline {8.18})pquit}{238}{section.8.18}
\contentsline {section}{\numberline {8.19})quit}{239}{section.8.19}
\contentsline {section}{\numberline {8.20})read}{239}{section.8.20}
\contentsline {section}{\numberline {8.21})set}{240}{section.8.21}
\contentsline {section}{\numberline {8.22})show}{241}{section.8.22}
\contentsline {section}{\numberline {8.23})spool}{242}{section.8.23}
\contentsline {section}{\numberline {8.24})synonym}{242}{section.8.24}
\contentsline {section}{\numberline {8.25})system}{243}{section.8.25}
\contentsline {section}{\numberline {8.26})trace}{243}{section.8.26}
\contentsline {section}{\numberline {8.27})undo}{247}{section.8.27}
\contentsline {section}{\numberline {8.28})what}{249}{section.8.28}
\contentsline {section}{\numberline {8.29}Makefile}{250}{section.8.29}
