0
Introduction to FriCAS
0.1
Symbolic computation
0.2
Numeric computation
0.3
Graphics
0.4
HyperDoc
0.5
Interactive Programming
0.6
Data Structures
0.7
Mathematical Structures
0.8
Pattern Matching
0.9
Polymorphic Algorithms
0.10
Extensibility
I
Basic Features of FriCAS
1
An Overview of FriCAS
1.1
Starting Up and Winding Down
1.1.1
Clef
1.2
Typographic Conventions
1.3
The FriCAS 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
Graphics
1.5
Numbers
1.6
Data Structures
1.7
Expanding to Higher Dimensions
1.8
Writing Your Own Functions
1.9
Polynomials
1.10
Limits
1.11
Series
1.12
Derivatives
1.13
Integration
1.14
Differential Equations
1.15
Solution of Equations
1.16
System Commands
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 .fricas.input File
4.3
Common Features of Using Output Formats
4.4
Monospace Two-Dimensional Mathematical Format
4.5
TeX Format
4.6
MathML Format
4.7
TeXmacs Format
4.8
FORTRAN Format
4.9
General Fortran-generation utilities in FriCAS
4.9.1
Template Manipulation
4.9.2
Manipulating the Fortran Output Stream
4.9.3
Fortran Types
4.9.4
FortranScalarType
4.9.5
FortranType
4.9.6
SymbolTable
4.9.7
TheSymbolTable
4.9.8
Advanced Fortran Code Generation
4.9.9
Switch
4.9.10
FortranCode
4.9.11
FortranProgram
5
Introduction to the FriCAS 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.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 FriCAS 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.8
Operations for Two-Dimensional Graphics
7.1.9
Addendum: Building Two-Dimensional Graphs
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.7
Coordinate System Transformations
7.2.8
Three-Dimensional Clipping
7.2.9
Three-Dimensional Control-Panel
7.2.10
Operations for Three-Dimensional Graphics
7.2.11
Customization using .Xdefaults
II
Advanced Problem Solving and Examples
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
8.15
Matrix Manipulation
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
DecimalExpansion
9.15
DeRhamComplex
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
FreeMagma
9.30
FullPartialFractionExpansion
9.31
GeneralQuaternion
9.32
GeneralSparseTable
9.33
GroebnerFactorizationPackage
9.34
GroupPresentation
9.35
GuessPolynomialInteger
9.36
Heap
9.37
HexadecimalExpansion
9.38
Integer
9.38.1
Basic Functions
9.38.2
Primes and Factorization
9.38.3
Some Number Theoretic Functions
9.39
IntegerLinearDependence
9.40
IntegerNumberTheoryFunctions
9.41
Kernel
9.42
KeyedAccessFile
9.43
LazardSetSolvingPackage
9.44
LexTriangularPackage
9.45
Library
9.46
LieExponentials
9.47
LiePolynomial
9.48
LinearOrdinaryDifferentialOperator
9.48.1
Differential Operators with Series Coefficients
9.49
LinearOrdinaryDifferentialOperator1
9.49.1
Differential Operators with Rational Function Coefficients
9.50
LinearOrdinaryDifferentialOperator2
9.50.1
Differential Operators with Constant Coefficients
9.50.2
Differential Operators with Matrix Coefficients Operating on Vectors
9.51
List
9.51.1
Creating Lists
9.51.2
Accessing List Elements
9.51.3
Changing List Elements
9.51.4
Other Functions
9.51.5
Dot, Dot
9.52
LLLReduction
9.53
LyndonWord
9.54
MakeFunction
9.55
MappingPackage1
9.56
Matrix
9.56.1
Creating Matrices
9.56.2
Operations on Matrices
9.57
Multiset
9.58
MultivariatePolynomial
9.59
None
9.60
Octonion
9.61
OneDimensionalArray
9.62
Operator
9.63
OrderedVariableList
9.64
OrderlyDifferentialPolynomial
9.65
PartialFraction
9.66
Permanent
9.67
Polynomial
9.68
Quaternion
9.69
RadixExpansion
9.70
RealClosure
9.71
RegularTriangularSet
9.72
RomanNumeral
9.73
Segment
9.74
SegmentBinding
9.75
Set
9.76
SingleInteger
9.77
SparseTable
9.78
SquareFreeRegularTriangularSet
9.79
SquareMatrix
9.80
Stream
9.81
String
9.82
StringTable
9.83
Symbol
9.84
Table
9.85
TextFile
9.86
TwoDimensionalArray
9.87
UnivariatePolynomial
9.88
UniversalSegment
9.89
Vector
9.90
Void
9.91
WuWenTsunTriangularSet
9.92
XPBWPolynomial
9.93
XPolynomial
9.94
XPolynomialRing
9.95
ZeroDimensionalSolvePackage
III
Advanced Programming in FriCAS
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
Drawing Complex Vector Fields
10.7
Drawing Complex Functions
10.8
Functions Producing Functions
10.9
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
Categories as 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.2
Views Of Constructors
14.2.3
Giving Parameters to Constructors
14.3
Miscellaneous Features of Browse
14.3.1
The Description Page for Operations
14.3.2
Views of Operations
14.3.3
Capitalization Convention
15
What’s New in FriCAS
15.1
Release Notes
15.2
Changes to Spad language
15.3
Online Information
15.4
Old News about AXIOM Version 2.x
15.4.1
The NAG Library Link
15.4.2
Interactive Front-end and Language
15.4.3
Library
15.4.4
HyperDoc
15.4.5
Documentation
15.4.6
AXIOM-XL compiler - Enhancements and Additions
15.4.7
New polynomial domains and algorithms
15.4.8
Enhancements to HyperDoc and Graphics
15.4.9
Enhancements to NAGLink
15.4.10
Enhancements to the Lisp system
A
FriCAS System Commands
A.1
Introduction
A.2
)abbreviation
A.3
)boot
A.4
)cd
A.5
)close
A.6
)clear
A.7
)compile
A.8
)display
A.9
)edit
A.10
)fin
A.11
)frame
A.12
)help
A.13
)history
A.14
)library
A.15
)lisp
A.16
)ltrace
A.17
)pquit
A.18
)quit
A.19
)read
A.20
)set
A.21
)show
A.22
)spool
A.23
)synonym
A.24
)system
A.25
)trace
A.26
)undo
A.27
)what
B
Programs for FriCAS Images
B.1
images1.input
B.2
images2.input
B.3
images3.input
B.4
images5.input
B.5
images6.input
B.6
images7.input
B.7
images8.input
B.8
conformal.input
B.9
tknot.input
B.10
ntube.input
B.11
dhtri.input
B.12
tetra.input
B.13
antoine.input
B.14
scherk.input