1.15 System Commands¶
We conclude our tour of FriCAS with a brief discussion of system
commands. System commands are special statements that start with a
closing parenthesis )
. They are used to control or display your FriCAS
environment, start the HyperDoc system, issue operating system commands
and leave FriCAS. For example, )system
is used to issue commands to the
operating system from FriCAS. Here is a brief description of some of
these commands. For more information on specific commands, see Appendix
A .
Perhaps the most important user command is the )clear all
command that
initializes your environment. Every section and subsection in this
document has an invisible )clear all
that is read prior to the examples
given in the section. )clear all
gives you a fresh, empty environment
with no user variables defined and the step number reset to 1. The
)clear
command can also be used to selectively clear values and
properties of system variables.
Another useful system command is )read
. A preferred way to develop an
application in FriCAS is to put your interactive commands into a file,
say my.input file. To get FriCAS to read this file, you use the system
command )read my.input
. If you need to make changes to your approach or
definitions, go into your favorite editor, change my.input, then )read
my.input again.
Other system commands include: )history
, to display previous input
and/or output lines; )display
, to display properties and values of
workspace variables; and )what
.
Issue )what
to get a list of FriCAS objects that contain a given
substring in their name.
)what operations integrate
Operations whose names satisfy the above pattern(s):
HermiteIntegrate algintegrate complexIntegrate
expintegrate extendedIntegrate fintegrate
infieldIntegrate integrate internalIntegrate
internalIntegrate0 lazyGintegrate lazyIntegrate
lfintegrate limitedIntegrate monomialIntegrate
nagPolygonIntegrate palgintegrate pmComplexintegrate
pmintegrate primintegrate tanintegrate
To get more information about an operation such as
limitedIntegrate , issue the command )display op limitedIntegrate
1.15.1 Undo¶
A useful system command is )undo
. Sometimes while computing
interactively with FriCAS, you make a mistake and enter an incorrect
definition or assignment. Or perhaps you need to try one of several
alternative approaches, one after another, to find the best way to
approach an application. For this, you will find the undo facility of
FriCAS helpful.
System command )undo n
means undo back to step n; it restores the values
of user variables to those that existed immediately after input
expression n was evaluated. Similarly, )undo -n
undoes changes caused by
the last n input expressions. Once you have done an )undo, you can
continue on from there, or make a change and redo all your input
expressions from the point of the )undo forward. The )undo is completely
general: it changes the environment like any user expression. Thus you
can )undo any previous undo.
Here is a sample dialogue between user and FriCAS.
Let me define two mutually dependent functions f and g piece-wise.
f(0) == 1; g(0) == 1
Type: Void
Here is the general term for f.
f(n) == e/2*f(n-1) - x*g(n-1)
Type: Void
And here is the general term for g.
g(n) == -x*f(n-1) + d/3*g(n-1)
Type: Void
What is value of f(3)?
f(3)
Type: Polynomial Fraction Integer
Hmm, I think I want to define f differently. Undo to the environment right after I defined f.
)undo 2
Here is how I think I want f to be defined instead.
f(n) == d/3*f(n-1) - x*g(n-1)
1 old definition(s) deleted for function or rule f
Type: Void
Redo the computation from expression 3 forward.
)undo )redo
g(n) == -x*f(n-1) + d/3*g(n-1)
Type: Void
f(3)
Compiling function g with type Integer -> Polynomial Fraction
Integer
Compiling function g as a recurrence relation.
+++ |*1;g;1;G82322;AUX| redefined
+++ |*1;g;1;G82322| redefined
Compiling function g with type Integer -> Polynomial Fraction
Integer
Compiling function g as a recurrence relation.
+++ |*1;g;1;G82322;AUX| redefined
+++ |*1;g;1;G82322| redefined
Compiling function f with type Integer -> Polynomial Fraction
Integer
Compiling function f as a recurrence relation.
+++ |*1;f;1;G82322;AUX| redefined
+++ |*1;f;1;G82322| redefined
Type: Polynomial Fraction Integer
I want my old definition of f after all. Undo the undo and restore the environment to that immediately after (4).
)undo 4
Check that the value of f(3) is restored.
f(3)
Compiling function g with type Integer -> Polynomial Fraction
Integer
Compiling function g as a recurrence relation.
+++ |*1;g;1;G82322;AUX| redefined
+++ |*1;g;1;G82322| redefined
Compiling function g with type Integer -> Polynomial Fraction
Integer
Compiling function g as a recurrence relation.
+++ |*1;g;1;G82322;AUX| redefined
+++ |*1;g;1;G82322| redefined
Compiling function f with type Integer -> Polynomial Fraction
Integer
Compiling function f as a recurrence relation.
+++ |*1;f;1;G82322;AUX| redefined
+++ |*1;f;1;G82322| redefined
Type: Polynomial Fraction Integer
After you have gone off on several tangents, then backtracked to previous points in your conversation using )undo, you might want to save all the correct input commands you issued, disregarding those undone. The system command )history )write mynew.input writes a clean straight-line program onto the file mynew.input on your disk.