]>
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