]> Axiom Book Contents 0 Introduction to Axiom
        0.1 Introduction to Axiom
                0.1.1 Symbolic Computation
                0.1.2 Numeric Computation
                0.1.3 Graphics
                0.1.4 HyperDoc
                0.1.5 Interactive Programming
                0.1.6 Data Structures
                0.1.7 Mathematical Structures
                0.1.8 Pattern Matching
                0.1.9 Polymorphic Algorithms
                0.1.10 Extensibility
        0.2 A Technical Introduction
                0.2.1 Types are Defined by Abstract Datatype Programs
                0.2.2 The Type of Basic Objects is a Domain or Subdomain
                0.2.3 Domains Have Types Called Categories
                0.2.4 Operations Can Refer To Abstract Types
                0.2.5 Categories Form Hierarchies
                0.2.6 Domains Belong to Categories by Assertion
                0.2.7 Packages Are Clusters of Polymorphic Operations
                0.2.8 The Interpreter Builds Domains Dynamically
                0.2.9 Axiom Code is Compiled
                0.2.10 Axiom is Extensible
        0.3 Using Axiom as a Pocket Calculator
                0.3.1 Basic Arithmetic
                0.3.2 Type Conversion
                0.3.3 Useful Functions
        0.4 Using Axiom as a Symbolic Calculator
                0.4.1 Expressions Involving Symbols
                0.4.2 Complex Numbers
                0.4.3 Number Representations
                0.4.4 Modular Arithmetic
        0.5 General Points about Axiom
                0.5.1 Computation Without Output
                0.5.2 Accessing Earlier Results
                0.5.3 Splitting Expressions Over Several Lines
                0.5.4 Comments and Descriptions
                0.5.5 Control of Result Types
        0.6 Data Structures in Axiom
                0.6.1 Lists
                0.6.2 Segmented Lists
                0.6.3 Streams
                0.6.4 Arrays, Vectors, Strings, and Bits
                0.6.5 Flexible Arrays
        0.7 Functions, Choices, and Loops
                0.7.1 Reading Code from a File
                0.7.2 Blocks
                0.7.3 Functions
                0.7.4 Choices
                0.7.5 Loops
                        0.7.5.1 The repeat loop
                        0.7.5.2 The while loop
                        0.7.5.3 The for loop
1 An Overview of Axiom
        1.1 Starting Up and Winding Down
                1.1.1 Clef
        1.2 Typographic Conventions
        1.3 The Axiom Language
                1.3.1 Arithmetic Expressions
                1.3.2 Previous Results
                1.3.3 Some Types
                1.3.4 Symbols, Variables, Assignments, and Declarations
                1.3.5 Conversion
                1.3.6 Calling Functions
                1.3.7 Some Predefined Macros
                1.3.8 Long Lines
                1.3.9 Comments
        1.4 Numbers
        1.5 Data Structures
        1.6 Expanding to Higher Dimensions
        1.7 Writing Your Own Functions
        1.8 Polynomials
        1.9 Limits
        1.10 Series
        1.11 Derivatives
        1.12 Integration
        1.13 Differential Equations
        1.14 Solution of Equations
        1.15 System Commands
                1.15.1 Undo
        1.16 Graphics
2 Using Types and Modes
        2.1 The Basic Idea
                2.1.1 Domain Constructors
        2.2 Writing Types and Modes
                2.2.1 Types with No Arguments
                2.2.2 Types with One Argument
                2.2.3 Types with More Than One Argument
                2.2.4 Modes
                2.2.5 Abbreviations
        2.3 Declarations
        2.4 Records
        2.5 Unions
                2.5.1 Unions Without Selectors
                2.5.2 Unions With Selectors
        2.6 The ``Any'' Domain
        2.7 Conversion
        2.8 Subdomains Again
        2.9 Package Calling and Target Types
        2.10 Resolving Types
        2.11 Exposing Domains and Packages
        2.12 Commands for Snooping
3 Using HyperDoc
        3.1 Headings
        3.2 Key Definitions
        3.3 Scroll Bars
        3.4 Input Areas
        3.5 Radio Buttons and Toggles
        3.6 Search Strings
                3.6.1 Logical Searches
        3.7 Example Pages
        3.8 X Window Resources for HyperDoc
4 Input Files and Output Styles
        4.1 Input Files
        4.2 The .axiom.input File
        4.3 Common Features of Using Output Formats
        4.4 Monospace Two-Dimensional Mathematical Format
        4.5 TeX Format
        4.6 IBM Script Formula Format
        4.7 FORTRAN Format
5 Overview of Interactive Language
        5.1 Immediate and Delayed Assignments
        5.2 Blocks
        5.3 if-then-else
        5.4 Loops
                5.4.1 Compiling vs. Interpreting Loops
                5.4.2 return in Loops
                5.4.3 break in Loops
                5.4.4 break vs. => in Loop Bodies
                5.4.5 More Examples of break
                5.4.6 iterate in Loops
                5.4.7 while Loops
                5.4.8 for Loops
                5.4.9 for i in n..m repeat
                5.4.10 for i in n..m by s repeat
                5.4.11 for i in n.. repeat
                5.4.12 for x in l repeat
                5.4.13 ``Such that'' Predicates
                5.4.14 Parallel Iteration
                5.4.15 Mixing Loop Modifiers
        5.5 Creating Lists and Streams with Iterators
        5.6 An Example: Streams of Primes
6 User-Defined Functions, Macros and Rules
        6.1 Functions vs. Macros
        6.2 Macros
        6.3 Introduction to Functions
        6.4 Declaring the Type of Functions
        6.5 One-Line Functions
        6.6 Declared vs. Undeclared Functions
        6.7 Functions vs. Operations
        6.8 Delayed Assignments vs. Functions with No Arguments
        6.9 How Axiom Determines What Function to Use
        6.10 Compiling vs. Interpreting
        6.11 Piece-Wise Function Definitions
                6.11.1 A Basic Example
                6.11.2 Picking Up the Pieces
                6.11.3 Predicates
        6.12 Caching Previously Computed Results
        6.13 Recurrence Relations
        6.14 Making Functions from Objects
        6.15 Functions Defined with Blocks
        6.16 Free and Local Variables
        6.17 Anonymous Functions
                6.17.1 Some Examples
                6.17.2 Declaring Anonymous Functions
        6.18 Example: A Database
        6.19 Example: A Famous Triangle
        6.20 Example: Testing for Palindromes
        6.21 Rules and Pattern Matching
7 Graphics
        7.1 Two-Dimensional Graphics
                7.1.1 Plotting Two-Dimensional Functions of One Variable
                7.1.2 Plotting Two-Dimensional Parametric Plane Curves
                7.1.3 Plotting Plane Algebraic Curves
                7.1.4 Two-Dimensional Options
                7.1.5 Color
                7.1.6 Palette
                7.1.7 Two-Dimensional Control-Panel
                        7.1.7.1 Transformations
                        7.1.7.2 Messages
                        7.1.7.3 Multiple Graphs
                        7.1.7.4 Buttons
                7.1.8 Operations for Two-Dimensional Graphics
                7.1.9 Addendum: Building Two-Dimensional Graphs
                        7.1.9.1 Creating a Two-Dimensional Viewport from a List of Points
                        7.1.9.2 Creating a Two-Dimensional Viewport of a List of Points from a File
                7.1.10 Addendum: Appending a Graph to a Viewport Window Containing a Graph
        7.2 Three-Dimensional Graphics
                7.2.1 Plotting Three-Dimensional Functions of Two Variables
                7.2.2 Plotting Three-Dimensional Parametric Space Curves
                7.2.3 Plotting Three-Dimensional Parametric Surfaces
                7.2.4 Three-Dimensional Options
                7.2.5 The makeObject Command
                7.2.6 Building Three-Dimensional Objects From Primitives
                        7.2.6.1 Cube Example
                7.2.7 Coordinate System Transformations
                7.2.8 Three-Dimensional Clipping
                7.2.9 Three-Dimensional Control-Panel
                        7.2.9.1 Transformations
                        7.2.9.2 Messages
                        7.2.9.3 Colormap
                        7.2.9.4 Buttons
                        7.2.9.5 Light
                        7.2.9.6 View Volume
                7.2.10 Operations for Three-Dimensional Graphics
                7.2.11 Customization using .Xdefaults
8 Advanced Problem Solving
        8.1 Numeric Functions
        8.2 Polynomial Factorization
                8.2.1 Integer and Rational Number Coefficients
                8.2.2 Finite Field Coefficients
                8.2.3 Simple Algebraic Extension Field Coefficients
                8.2.4 Factoring Rational Functions
        8.3 Manipulating Symbolic Roots of a Polynomial
                8.3.1 Using a Single Root of a Polynomial
                8.3.2 Using All Roots of a Polynomial
        8.4 Computation of Eigenvalues and Eigenvectors
        8.5 Solution of Linear and Polynomial Equations
                8.5.1 Solution of Systems of Linear Equations
                8.5.2 Solution of a Single Polynomial Equation
                8.5.3 Solution of Systems of Polynomial Equations
        8.6 Limits
        8.7 Laplace Transforms
        8.8 Integration
        8.9 Working with Power Series
                8.9.1 Creation of Power Series
                8.9.2 Coefficients of Power Series
                8.9.3 Power Series Arithmetic
                8.9.4 Functions on Power Series
                8.9.5 Converting to Power Series
                8.9.6 Power Series from Formulas
                8.9.7 Substituting Numerical Values in Power Series
                8.9.8 Example: Bernoulli Polynomials and Sums of Powers
        8.10 Solution of Differential Equations
                8.10.1 Closed-Form Solutions of Linear Differential Equations
                8.10.2 Closed-Form Solutions of Non-Linear Differential Equations
                8.10.3 Power Series Solutions of Differential Equations
        8.11 Finite Fields
                8.11.1 Modular Arithmetic and Prime Fields
                8.11.2 Extensions of Finite Fields
                8.11.3 Irreducible Modulus Polynomial Representations
                8.11.4 Cyclic Group Representations
                8.11.5 Normal Basis Representations
                8.11.6 Conversion Operations for Finite Fields
                8.11.7 Utility Operations for Finite Fields
        8.12 Primary Decomposition of Ideals
        8.13 Computation of Galois Groups
        8.14 Non-Associative Algebras and Modelling Genetic Laws
9 Some Examples of Domains and Packages
        9.1 AssociationList
        9.2 BalancedBinaryTree
        9.3 BasicOperator
        9.4 BinaryExpansion
        9.5 BinarySearchTree
        9.6 CardinalNumber
        9.7 CartesianTensor
        9.8 Character
        9.9 CharacterClass
        9.10 CliffordAlgebra
                9.10.1 The Complex Numbers as a Clifford Algebra
                9.10.2 The Quaternion Numbers as a Clifford Algebra
                9.10.3 The Exterior Algebra on a Three Space
                9.10.4 The Dirac Spin Algebra
        9.11 Complex
        9.12 ContinuedFraction
        9.13 CycleIndicators
        9.14 DeRhamComplex
        9.15 DecimalExpansion
        9.16 DistributedMultivariatePolynomial
        9.17 DoubleFloat
        9.18 EqTable
        9.19 Equation
        9.20 Exit
        9.21 Expression
        9.22 Factored
                9.22.1 Decomposing Factored Objects
                9.22.2 Expanding Factored Objects
                9.22.3 Arithmetic with Factored Objects
                9.22.4 Creating New Factored Objects
                9.22.5 Factored Objects with Variables
        9.23 FactoredFunctions2
        9.24 File
        9.25 FileName
        9.26 FlexibleArray
        9.27 Float
                9.27.1 Introduction to Float
                9.27.2 Conversion Functions
                9.27.3 Output Functions
                9.27.4 An Example: Determinant of a Hilbert Matrix
        9.28 Fraction
        9.29 FullPartialFractionExpansion
        9.30 GeneralSparseTable
        9.31 GroebnerFactorizationPackage
        9.32 Heap
        9.33 HexadecimalExpansion
        9.34 Integer
                9.34.1 Basic Functions
                9.34.2 Primes and Factorization
                9.34.3 Some Number Theoretic Functions
        9.35 IntegerLinearDependence
        9.36 IntegerNumberTheoryFunctions
        9.37 Kernel
        9.38 KeyedAccessFile
        9.39 LexTriangularPackage
        9.40 LazardSetSolvingPackage
        9.41 Library
        9.42 LieExponentials
        9.43 LiePolynomial
        9.44 LinearOrdinaryDifferentialOperator
                9.44.1 Differential Operators with Series Coefficients
        9.45 LinearOrdinaryDifferentialOperator1
                9.45.1 Differential Operators with Rational Function Coefficients
        9.46 LinearOrdinaryDifferentialOperator2
                9.46.1 Differential Operators with Constant Coefficients
                9.46.2 Differential Operators with Matrix Coefficients Operating on Vectors
        9.47 List
                9.47.1 Creating Lists
                9.47.2 Accessing List Elements
                9.47.3 Changing List Elements
                9.47.4 Other Functions
                9.47.5 Dot, Dot
        9.48 LyndonWord
        9.49 Magma
        9.50 MakeFunction
        9.51 MappingPackage1
        9.52 Matrix
                9.52.1 Creating Matrices
                9.52.2 Operations on Matrices
        9.53 MultiSet
        9.54 MultivariatePolynomial
        9.55 None
        9.56 Octonion
        9.57 OneDimensionalArray
        9.58 Operator
        9.59 OrderedVariableList
        9.60 OrderlyDifferentialPolynomial
        9.61 PartialFraction
        9.62 Permanent
        9.63 Polynomial
        9.64 Quaternion
        9.65 RadixExpansion
        9.66 RealClosure
        9.67 RegularTriangularSet
        9.68 RomanNumeral
        9.69 Segment
        9.70 SegmentBinding
        9.71 Set
        9.72 SingleInteger
        9.73 SparseTable
        9.74 SquareMatrix
        9.75 SquareFreeRegularTriangularSet
        9.76 Stream
        9.77 String
        9.78 StringTable
        9.79 Symbol
        9.80 Table
        9.81 TextFile
        9.82 TwoDimensionalArray
        9.83 UnivariatePolynomial
        9.84 UniversalSegment
        9.85 Vector
        9.86 Void
        9.87 WuWenTsunTriangularSet
        9.88 XPBWPolynomial
        9.89 XPolynomial
        9.90 XPolynomialRing
        9.91 ZeroDimensionalSolvePackage
10 Interactive Programming
        10.1 Drawing Ribbons Interactively
        10.2 A Ribbon Program
        10.3 Coloring and Positioning Ribbons
        10.4 Points, Lines, and Curves
        10.5 A Bouquet of Arrows
        10.6 Diversion: When Things Go Wrong
        10.7 Drawing Complex Vector Fields
        10.8 Drawing Complex Functions
        10.9 Functions Producing Functions
        10.10 Automatic Newton Iteration Formulas
11 Packages
        11.1 Names, Abbreviations, and File Structure
        11.2 Syntax
        11.3 Abstract Datatypes
        11.4 Capsules
        11.5 Input Files vs. Packages
        11.6 Compiling Packages
        11.7 Parameters
        11.8 Conditionals
        11.9 Testing
        11.10 How Packages Work
12 Categories
        12.1 Definitions
        12.2 Exports
        12.3 Documentation
        12.4 Hierarchies
        12.5 Membership
        12.6 Defaults
        12.7 Axioms
        12.8 Correctness
        12.9 Attributes
        12.10 Parameters
        12.11 Conditionals
        12.12 Anonymous Categories
13 Domains
        13.1 Domains vs. Packages
        13.2 Definitions
        13.3 Category Assertions
        13.4 A Demo
        13.5 Browse
        13.6 Representation
        13.7 Multiple Representations
        13.8 Add Domain
        13.9 Defaults
        13.10 Origins
        13.11 Short Forms
        13.12 Example 1: Clifford Algebra
        13.13 Example 2: Building A Query Facility
                13.13.1 A Little Query Language
                13.13.2 The Database Constructor
                13.13.3 Query Equations
                13.13.4 DataLists
                13.13.5 Index Cards
                13.13.6 Creating a Database
                13.13.7 Putting It All Together
                13.13.8 Example Queries
14 Browse
        14.1 The Front Page: Searching the Library
        14.2 The Constructor Page
                14.2.1 Constructor Page Buttons
                        14.2.1.1 Description
                        14.2.1.2 Operations
                        14.2.1.3 Attributes
                        14.2.1.4 Examples
                        14.2.1.5 Exports
                        14.2.1.6 Related Operations
                14.2.2 Cross Reference
                        14.2.2.1 Parents
                        14.2.2.2 Ancestors
                        14.2.2.3 Relatives
                        14.2.2.4 Dependents
                        14.2.2.5 Lineage
                        14.2.2.6 Clients
                        14.2.2.7 Benefactors
                        14.2.2.8 Children
                        14.2.2.9 Descendants
                        14.2.2.10 Domains
                14.2.3 Views Of Constructors
                        14.2.3.1 names
                        14.2.3.2 abbrs
                        14.2.3.3 kinds
                        14.2.3.4 files
                        14.2.3.5 parameters
                        14.2.3.6 filter
                        14.2.3.7 documentation
                        14.2.3.8 conditions
                14.2.4 Giving Parameters to Constructors
        14.3 Miscellaneous Features of Browse
                14.3.1 The Description Page for Operations
                        14.3.1.1 Arguments
                        14.3.1.2 Returns
                        14.3.1.3 Origin
                        14.3.1.4 Conditions
                        14.3.1.5 Description
                        14.3.1.6 Where
                14.3.2 Views of Operations
                        14.3.2.1 names
                        14.3.2.2 filter
                        14.3.2.3 documentation
                        14.3.2.4 signatures
                        14.3.2.5 parameters
                        14.3.2.6 origins
                        14.3.2.7 conditions
                        14.3.2.8 usage
                        14.3.2.9 implementation
                        14.3.2.10 generalize
                        14.3.2.11 all domains
                14.3.3 Capitalization Convention
                14.3.4 Browse Options
                        14.3.4.1 Exposure
                        14.3.4.2 Threshold
15 What's New in Axiom Version 2.0
        15.1 Important Things to Read First
        15.2 The New Axiom Library Compiler
        15.3 The NAG Library Link
                15.3.1 Interpreting NAG Documentation
                        15.3.1.1 Correspondence Between Fortran and Axiom types
                        15.3.1.2 Classification of NAG parameters
                        15.3.1.3 IFAIL
                15.3.2 Using the Link
                15.3.3 Providing values for Argument Subprograms
                        15.3.3.1 Providing ASPs via FortranExpression
                        15.3.3.2 Providing ASPs via FortranCode
                        15.3.3.3 Providing ASPs via FileName
                15.3.4 General Fortran-generation utilities in Axiom
                        15.3.4.1 Template Manipulation
                        15.3.4.2 Manipulating the Fortran Output Stream
                        15.3.4.3 Fortran Types
                        15.3.4.4 FortranScalarType
                        15.3.4.5 FortranType
                        15.3.4.6 SymbolTable
                        15.3.4.7 TheSymbolTable
                        15.3.4.8 Advanced Fortran Code Generation
                        15.3.4.9 Switch
                        15.3.4.10 FortranCode
                        15.3.4.11 FortranProgram
                15.3.5 Some technical information
        15.4 Interactive Front-end and Language
        15.5 Library
        15.6 HyperTex
        15.7 Documentation
16 Axiom System Commands
        16.1 Introduction
        16.2 )abbreviation
        16.3 )boot
        16.4 )cd
        16.5 )close
        16.6 )clear
        16.7 )compile
        16.8 )display
        16.9 )edit
        16.10 )fin
        16.11 )frame
        16.12 )help
        16.13 )history
        16.14 )library
        16.15 )lisp
        16.16 )load
        16.17 )trace
        16.18 )pquit
        16.19 )quit
        16.20 )read
        16.21 )set
        16.22 )show
        16.23 )spool
        16.24 )synonym
        16.25 )system
        16.26 )trace
        16.27 )undo
        16.28 )what
17 Categories
18 Domains
19 Packages
21 Programs for AXIOM Images
        21.1 images1.input
        21.2 images2.input
        21.3 images3.input
        21.4 images5.input
        21.5 images6.input
        21.6 images7.input
        21.7 images8.input
        21.8 conformal.input
        21.9 tknot.input
        21.10 ntube.input
        21.11 dhtri.input
        21.12 tetra.input
        21.13 antoine.input
        21.14 scherk.input
Index