restart;
IntMaplet := module()
############################################################
############################################################
export iniMathML, addMathML, addMathML2, addMathML3,
runIntMaplet,
startRule, applyRule, applyOtherRule,
applyMathFuncRule, getHint, applyHint,
getFinalAnswer, showAllSteps, clearSteps,
applyRuleParts, applyRuleSplit,
applyRuleRewrite, applyRuleChange,
changeUnderstoodRules, forgetUnderstoodRule,
aboutRule, aboutDefRule,
helpStr, partsStr, rewriteStr, changeStr,
getLastMath, getLastString, getRMISingle2, getRMISingle3:
local steps, mlSteps, iniMlStr, save_settingsTB, save_settingsML, save_RMISingle2, save_RMISingle3:
steps:=[]:
mlSteps:=[]:
iniMlStr := "":
############################################################
getLastMath:= proc()
save_settingsML;
end proc:
############################################################
getLastString:= proc()
save_settingsTB;
end proc:
############################################################
getRMISingle2:= proc(value)
save_RMISingle2:=value;
end proc:
############################################################
getRMISingle3:= proc(value)
save_RMISingle3:=value;
end proc:
############################################################
helpStr :=
"This maplet guides you through a integration problem step-by-step. You can apply integration rules one at a time to a function f and see the resulting expression. At any step of the problem, you can request a hint for the next rule to apply. You can a
lso specify in advance that you already understand a certain set of rules, in which case those rules are automatically applied (when possible) at any step of the problem.
Instructions
To start, enter a function with its independent variable, and press the 'Start' button. This will clear the problem history and begin a new one.
Integration rules can be applied by pressing the corresponding buttons or selecting rules from the menus.
To show all steps in the solution, you can press the 'All Steps' button. You can also go directly to the final answer by pressing the 'Final Ans' button, or by selecting 'Get the Final Answer' in Menu/File.
When a rule is applied, the display of the problem will be updated with the result of the applied rule.
If you select a rule that is not applicable to the problem in its current state, the message box will say so.
You may ask for a hint by pressing the 'Obtain a Hint' button or by selecting 'Receive a Hint' in Menu/File. Pressing the 'Apply the Hint' button or selecting 'Apply the Hint' in Menu/File applies the hint to the problem (this should always work unless th
e problem is done).
The 'Clear' button clears the problem solving history.
Once a rule becomes familiar to you, you can check off the rule in the 'Understood Rules' menu. The maplet will then apply that rule automatically whenever possible at any step of a problem.": # end helpStr
############################################################
############################################################
partsStr :=
"parts - Integrate By Parts
solve - Solve the Integral
The parts rule implements integration by parts:
Int(f(x)*g'(x),x) = f(x)*g(x) - Int(g(x)*f'(x),x).
To apply the rule, you must specify the two functions f(x) and g(x):
[parts, f(x), g(x)]
That is, the first parameter (f(x)) is the term to be differentiated, and the second parameter (g(x)) is the integral of the term to be integrated when applying the rule.
Often after multiple applications of integration by parts, the same integral appears more than once on both sides of the equation, then you can use 'solve' rule to solve the integral algebraically.": # end partsStr
############################################################
############################################################
rewriteStr :=
"rewrite - Rewrite the form of expression
The rewrite rule changes the form of the integrand when the integration variable is not changed.
This rule has the general form: [rewrite, f1(x) = g1(x), f2(x) = g2(x), ...],
where parameters of rewrite rule are input in the TextBox beside the rewrite rule button, separated by commas.
The effect of applying the rewrite rule is to perform each substitution listed as a parameter to the rule, where occurrences of the left-hand side of each substitution are replaced by the corresponding right-hand side. ": # end rewriteStr
############################################################
############################################################
changeStr :=
"change - Change Integral Variable
revert - Revert Integral Variable
The change rule changes the integration variable.
It can take the following forms.
[change, F(x,u) = G(x,u), u]
[change, F(x,u) = G(x,u), u = H(x)]
where parameters of rewrite rule are input in the TextBox beside the rewrite rule button, separated by commas.
The first parameter (F(x,u) = G(x,u)) defines the relationship between the old variable (x) and the new variable (u). This most commonly takes the form x = G(u) or u = F(x), but can be much more general, provided it can be solved for x.
Note: The name of the new variable (u in the preceding paragraph) must be previously unused in the problem to which you are applying this change of variables rule.
If you use a name which has already appeared, the system just makes up a new name for you.
Once the integration has been completed, you can use the revert rule to transform back to the original variable, if necessary.": # end revertStr
############################################################
# pre: iniEqn :: algebraic expression
# post: returns the Presentation MathML of iniEqn
iniMathML := proc(iniEqn)
MathML:-ExportPresentation(iniEqn);
end proc:
############################################################
###########################################################
# pre: mathMLStr :: string, in form of Presentation MathML
# addEqn :: algebraic expression
# post: addEqn appends to the next line of mathMLStr,
# returns the updated mathMLStr
addMathML := proc(mathMLStr, addEqn)
local tree, cmc, child, children, nl, eqnSign;
use XMLTools in
tree := FromString(mathMLStr);
cmc := ContentModelCount(tree);
child := FromString(MathML:-ExportPresentation(addEqn));
children := ContentModel(child);
nl := FromString("
");
eqnSign := Element("mo","=");
tree := AddChild(tree,nl,cmc);
tree := AddChild(tree,eqnSign,cmc+1);
for child in children do
cmc := ContentModelCount(tree);
tree := AddChild(tree,child,cmc);
end do:
tree := MakeElement("mrow", [], ContentModel(tree) ):
tree := Element("math", tree):
ToString(tree):
end use:
end proc:
############################################################
############################################################
# pre: mathMLStr :: string, in form of Presentation MathML
# addEqn :: algebraic expression
# post: addEqn appends to the next line of mathMLStr,
# returns the updated mathMLStr
addMathML2 := proc(mathMLStr, addEqn, rule)
local tree, cmc, child, children, ruleName, nl, eqnSign;
use XMLTools in
tree := FromString(mathMLStr);
cmc := ContentModelCount(tree);
child := FromString(MathML:-ExportPresentation(addEqn));
children := ContentModel(child);
nl := FromString("
");
eqnSign := Element("mo","=");
ruleName := Element("mtext",convert(rule,string));
tree := AddChild(tree,nl,cmc);
tree := AddChild(tree,eqnSign,cmc+1);
for child in children do
cmc := ContentModelCount(tree);
tree := AddChild(tree,child,cmc);
end do:
cmc := ContentModelCount(tree);
tree := AddChild(tree,ruleName,cmc);
tree := MakeElement("mrow", [], ContentModel(tree) ):
tree := Element("math", tree):
ToString(tree):
end use:
end proc:
############################################################
############################################################
# pre: mathMLStr :: string, in form of Presentation MathML
# addEqn :: algebraic expression
# post: addEqn appends to the next line of mathMLStr,
# returns the updated mathMLStr
addMathML3 := proc(mathMLStr, addEqn, rule)
local tree, cmc, child, children, ruleName, nl, eqnSign;
use XMLTools in
tree := FromString(mathMLStr);
cmc := ContentModelCount(tree);
child := FromString(MathML:-ExportPresentation(addEqn));
children := ContentModel(child);
nl := FromString("
");
eqnSign := Element("mo","=");
ruleName := Element("mtext",convert(rule,string));
tree := AddChild(tree,nl,cmc);
tree := AddChild(tree,ruleName,cmc+1);
tree := AddChild(tree,eqnSign,cmc+2);
for child in children do
cmc := ContentModelCount(tree);
tree := AddChild(tree,child,cmc);
end do:
tree := MakeElement("mrow", [], ContentModel(tree) ):
tree := Element("math", tree):
ToString(tree):
end use:
end proc:
############################################################
############################################################
# pre: null
# post: initializes the Integration problem solving process
# if input is correct, integration equation is added to steps
# understood rule(s) apply if capable
# MathML Viewer updates too
# else error message shows
startRule := proc(p_fun, p_var, p_lower, p_upper)
local funStr, varStr, lowerStr, upperStr, intStr,
infoStr, mlStr, intExpr, intEqn, hints,
i, uRules, uAppliedRules, rulesStr:
use Student:-Calculus1 in
clearSteps():
funStr := StringTools:-Trim(p_fun):
varStr := StringTools:-Trim(p_var):
lowerStr := StringTools:-Trim(p_lower):
upperStr := StringTools:-Trim(p_upper):
if lowerStr<>"" and upperStr<>"" then
intStr := cat("Int(", funStr, ", ", varStr, "=", lowerStr, "..", upperStr, ")"):
else
intStr := cat("Int(", funStr, ", ", varStr, ")"):
end if:
intExpr := parse(intStr):
hints := [Hint(intExpr)][1]:
mlStr := iniMathML(GetProblem(`internal`)):
iniMlStr := mlStr:
infoStr:="initializing ...":
save_settingsTB:=infoStr:
if nops(hints)>0 then
uRules := rhs(Understand(Int)):
uAppliedRules := []:
if nops(uRules) > 0 then
for i from 1 to nops(hints) do
if member(hints[i],uRules) = true then
uAppliedRules := [op(uAppliedRules),hints[i]]:
end if:
end do:
intEqn := Rule[](GetProblem(`internal`)):
steps := [op(steps),intEqn]:
if nops(uAppliedRules) > 0 then
if nops(uRules) = 1 then
rulesStr := convert(uRules,string):
infoStr := cat("understood rule ", rulesStr,
" is automatically applied."):
else
rulesStr := convert(uRules,string):
infoStr := cat("understood rules ", rulesStr,
" are automatically applied."):
end if: # end if nops(uRules)=>1
save_settingsTB:=infoStr:
mlStr := addMathML(mlStr,rhs(intEqn)):
end if: # end if nops(uAppliedRules)>0
else
intEqn := Rule[](GetProblem(`internal`)):
steps := [op(steps),intEqn]:
end if: # end if nops(uRules) > 0
save_settingsML:=mlStr:
mlSteps := [op(mlSteps), mlStr]:
infoStr := "please apply any rule below":
save_settingsTB:=infoStr:
else
intEqn := Rule[](GetProblem(`internal`)):
steps := [op(steps),intEqn]:
save_settingsML:=mlStr:
mlSteps := [op(mlSteps), mlStr]:
infoStr := "no hint is given":
save_settingsTB:=infoStr:
end if : # end if nops(hints)>0
end use:
end proc:
############################################################
############################################################
# pre: null
# post: if aRule is a valid integration rule and applicable
# new step is stored in steps, updates MathMLViewer
# else message shows the rule isn't applied
applyRule := proc(aRule)
local mlStr, infoStr, intEqn, oldEqn:
use Student:-Calculus1, Maplets:-Tools in
if nops(steps)=0 then
startRule():
end if:
mlStr:=save_settingsML:
oldEqn := steps[nops(steps)]:
if type(aRule,list)=true then
intEqn := Rule[op(aRule)](steps[nops(steps)]):
else
intEqn := Rule[aRule](steps[nops(steps)]):
end if:
if (GetMessage()=NULL) or (not evalb(intEqn=oldEqn)) then
steps := [op(steps),intEqn]:
if type(aRule,list)=true then
if save_RMISingle2=true then
mlStr := addMathML2(mlStr,rhs(intEqn),aRule):
elif save_RMISingle3=true then
mlStr := addMathML3(mlStr,rhs(intEqn),aRule):
else
mlStr := addMathML(mlStr,rhs(intEqn)):
end if:
else
if save_RMISingle2=true then
mlStr := addMathML2(mlStr,rhs(intEqn),[aRule]):
elif save_RMISingle2=true then
mlStr := addMathML3(mlStr,rhs(intEqn),[aRule]):
else
mlStr := addMathML(mlStr,rhs(intEqn)):
end if:
end if:
save_settingsML:=mlStr:
mlSteps := [op(mlSteps), mlStr]:
infoStr := convert(aRule,string):
infoStr := cat(infoStr, " rule has been applied"):
save_settingsTB:=infoStr:
else
infoStr := convert(aRule,string):
infoStr := cat(infoStr, " rule is not applicable"):
save_settingsTB:=infoStr:
end if: # end if GetMessage()=NULL
end use:
end proc: # end applyRule()
############################################################
############################################################
# pre: null
# post: apply the integrating by parts
# Int(f(x)*Diff(g(x),x),x) = f(x)*g(x) - Int(g(x)*Diff(f(x),x),x)
# argument f(x) is entered in TF_parts_fx, and arguments g(x) is
# entered in TF_parts_gx
applyRuleParts := proc(p_parts_f, p_parts_g)
local fx, gx:
use Student:-Calculus1, Maplets:-Elements in
fx := p_parts_f:
gx := p_parts_g:
if fx = "" or gx="" then
Maplets:-Display(Maplet(
MessageDialog("You must specify f(x) and g(x)."))):
else
applyRule([parts, parse(fx), parse(gx)]):
end if:
end use:
end proc: # end applyRuleParts
############################################################
############################################################
# pre: null
# post: apply the rewrite rule
# rewrite equations are listed in TB_args seperated
# by commas, the left hand side of earch substitution
# is replaced by the corresponding right hand side
applyRuleRewrite := proc(p_args)
local str:
use Student:-Calculus1, Maplets:-Elements in
str := p_args:
if str = "" then
Maplets:-Display(Maplet(
MessageDialog("You must specify a rewrite-equation."))):
else
str := cat("rewrite, ", str):
applyRule([parse(str)]):
end if:
end use:
end proc: # end applyRuleWithArgs
############################################################
############################################################
# pre: null
# post: apply the change rule, which changes the integration
# variable, arguments are listed in TB_args
applyRuleChange := proc(p_args)
local str:
use Student:-Calculus1, Maplets:-Elements in
str := p_args:
if str = "" then
Maplets:-Display(Maplet(
MessageDialog("You must specify a change-of-variables equation"))):
else
str := cat("change, ", str):
applyRule([parse(str)]):
end if:
end use:
end proc: # end applyRuleWithArgs
############################################################
############################################################
# pre: null
# post: apply the definite integration rule split
# require argument from TF_c
applyRuleSplit := proc(p_c)
local param:
use Student:-Calculus1, Maplets:-Elements in
param := StringTools:-Trim(p_c):
if ruleArgs = "" then
error cat("no split parameter in 'TF_c'"):
end if:
applyRule([split, parse(param)]):
end use:
end proc: # end applyRuleSplit
############################################################
############################################################
# pre: null
# post: read the integration rule from TF_other, and apply it
# if TF_other is empty, error message shows
applyOtherRule := proc(p_other)
local aRule:
use Maplets:-Tools, Maplets:-Elements in
aRule := StringTools:-Trim(p_other):
if aRule = "" then
Maplets:-Display(Maplet(
MessageDialog("No rule has been entered."))):
else
applyRule(aRule):
end if:
end use:
end proc: # end applyOtherRule
############################################################
############################################################
# pre: null
# post: read the integration rule from TF_mathfunc, and apply it
# if TF_mathfunc is empty, error message shows
applyMathFuncRule := proc(p_mathfunc)
local aRule:
aRule := StringTools:-Trim(p_mathfunc):
if aRule = "" then
Maplets:-Display(Maplet(
MessageDialog("No rule has been entered."))):
else
applyRule(parse(aRule)):
end if:
end proc: # end applyMathFuncRule
############################################################
############################################################
# pre: null
# post: hint for the current integration problem is shown
# in the message TextField, info
getHint := proc()
local intEqn, hint, hints, infoStr, i:
use Student:-Calculus1 in
if nops(steps)=0 then
startRule():
end if:
intEqn := steps[nops(steps)]:
hints := [Hint(intEqn)]:
hint := hints[1]:
if nops(hint)=0 then
infoStr:="no hint can be given, or the problem is done.":
save_settingsTB:=infoStr:
else
infoStr:=convert(hint,string);
if nops(hints)>1 then
for i in hints[2..-1] do
infoStr := cat(infoStr, ", ", convert(i,string));
end do;
end if:
infoStr:=cat(infoStr, " could be applied."):
save_settingsTB:=infoStr:
end if:
hint: # return value used in applyHint
end use:
end proc: # end getHint()
############################################################
############################################################
# pre: null
# post: hint for the current integration problem is applied
applyHint := proc()
local mlStr, infoStr, oriEqn, intEqn, hint:
use Student:-Calculus1, Maplets:-Tools in
hint := getHint():
if nops(hint)>0 then
applyRule(hint):
end if:
end use:
end proc: # end applyHint
############################################################
############################################################
# pre: null
# post: final answer for the current problem is shown
getFinalAnswer := proc()
local intEqn, hint, mlStr, infoStr:
use Student:-Calculus1, Maplets:-Tools in
if nops(steps)=0 then
startRule():
end if:
intEqn := steps[nops(steps)]:
hint := [Hint(intEqn)][1]:
if nops(hint)=0 then
infoStr := "No rule could be applied, or the question is done.":
save_settingsTB:=infoStr:
else
mlStr := save_settingsML:
while nops(hint)>0 do
infoStr := cat(convert(hint,string)," is being applied."):
save_settingsTB:=infoStr:
intEqn := Rule[hint](intEqn):
hint := [Hint(intEqn)][1]:
end do:
steps := [op(steps),intEqn]:
infoStr := "exporting final answer ...":
mlStr := addMathML(mlStr,rhs(intEqn)):
save_settingsML:=mlStr:
mlSteps := [op(mlSteps), mlStr]:
infoStr := "the final answer is shown":
save_settingsTB:=infoStr:
end if: # end if nops(hint)=0
end use:
end proc: # end getFinalAnswer
############################################################
##################################################
# pre: null
# post: a complete solution for the current problem is shown
showAllSteps := proc(boo1, boo2)
local intEqn, hint, mlStr, infoStr:
use Student:-Calculus1 in
if nops(steps)=0 then
startRule():
end if:
intEqn := steps[nops(steps)]:
hint := [Hint(intEqn)][1]:
if nops(hint)=0 then
infoStr := "no rule could be applied, or the question is done.":
save_settingsTB:=infoStr:
else
mlStr := save_settingsML:
while nops(hint)>0 do
infoStr := cat(convert(hint,string)," is being applied."):
save_settingsTB:=infoStr:
intEqn := Rule[hint](intEqn):
if boo1 then
mlStr := addMathML2(mlStr,rhs(intEqn),hint):
elif boo2 then
mlStr := addMathML3(mlStr,rhs(intEqn),hint):
else
mlStr := addMathML(mlStr,rhs(intEqn)):
end if:
steps := [op(steps),intEqn]:
mlSteps := [op(mlSteps),mlStr]:
hint := [Hint(intEqn)][1]:
end do:
infoStr := "exporting the full solution ...":
save_settingsTB:=infoStr:
save_settingsML:=mlStr:
infoStr := "a complete solution is shown":
save_settingsTB:=infoStr:
end if: # end if nops(hint)=0
end use:
end proc: # showAllSteps
############################################################
############################################################
# pre: name is a valid integration rule
# fun is in a valid algebraic expression or function
# post: pop up a Window with the description of the rule 'name'
aboutRule := proc(name,fun)
local eqn, intEqn, understoodRules:
use Student:-Calculus1, Maplets:-Tools in
understoodRules := rhs(Understand(Int)):
Understand(Int,'none'):
intEqn := Int(fun,x):
eqn := intEqn=rhs(Rule[name](intEqn)):
save_settingsTB:=cat("Definition of the ", convert(name, string), " rule"):
if fun <> x^n then
save_settingsML:=MathML:-ExportPresentation(eqn):
else
save_settingsML:=
"":
end if;
Understand(Int, op(understoodRules)):
end use:
end proc: # end aboutRule
############################################################
############################################################
# pre: name is a valid definite integration rule
# post: pop up a Window with the description of the rule 'name'
aboutDefRule := proc(name)
local eqn, intEqn, understoodRules:
use Student:-Calculus1, Maplets:-Tools in
understoodRules := rhs(Understand(Int)):
Understand(Int,'none'):
if name=flip then
intEqn := Int(f(x),x=a..b):
eqn := intEqn=rhs(Rule[flip](intEqn)):
elif name=join then
intEqn := Int(f(x),x=a..c)+Int(f(x),x=c..b):
eqn := intEqn=rhs(Rule[join](intEqn)):
else
intEqn := Int(f(x),x=a..b):
eqn := intEqn=rhs(Rule[split,c](intEqn)):
end if:
Understand(Int, op(understoodRules)):
return MathML:-ExportPresentation(eqn):
end use:
end proc: # end aboutDefRule
############################################################
############################################################
# pre: aRule is a valid integration rule
# post: if ruleState=true, aRule is understood
# else, aRule is removed from understo0d integration rules
changeUnderstoodRules := proc(aRule, ruleState)
use Student:-Calculus1 in
if ruleState=true then
Understand(Int,aRule):
else
forgetUnderstoodRule(aRule):
end if:
end use:
end proc: # end changeUnderstoodRules
############################################################
############################################################
# pre: aRule is a valid integration rule
# post: aRule is removed from understood integration rules
forgetUnderstoodRule := proc(aRule)
local rules:
use Student:-Calculus1 in
rules := rhs(Understand(Int)):
rules := subs(aRule=NULL,rules):
Understand(Int,'none'):
if nops(rules)>0 then
Understand(Int,op(rules));
end if:
end use:
end proc:
############################################################
############################################################
# pre: null
# post: clears the historic record of all steps
clearSteps := proc()
use Student:-Calculus1, Maplets:-Tools in
save_settingsML:="":
save_settingsTB:="":
Clear(all): steps:=[]: mlSteps:=[]:
end use:
end proc: # end clearSteps()
############################################################
############################################################
# pre: Maple 8 or higher is installed
# post: run Step-by-Step Integration Solver
runIntMaplet := proc()
local maplet, bc, dc, lc:
bc := 'background'="#DDFFFF":
dc := 'background'="#CCFFFF":
lc := 'background'="#EEFFFF":
use Maplets, Maplets:-Elements, Student:-Calculus1 in
maplet := Maplet(
'onstartup'=RunWindow('intWin'),
############################################################
Font['F1']("Default", 'bold'='true', 'size'=14),
Font['F2']("Default", 'italic'='true', 'size'=12),
############################################################
Window['intWin']( 'menubar'='intMB',
'resizable'='false',
'title'="Calculus 1 - Step-by-Step Integration Solver",
BoxColumn(bc,
BoxRow('border'='true','inset'=0,'spacing'=0,
'caption'="Enter a function", bc,
Label('caption'="Function ", 'font'='F1',bc),
TextField['TF_fun']('value'=3*sin(x), 'width'=22, lc),
Label('caption'=" Variable ", 'font'='F1',bc),
TextField['TF_var']("x",4,lc),
Label('caption'=" from ", 'font'='F1', bc),
TextField['TF_lower']('value'=" ", 'width'=5, lc),
Label('caption'=" to ", 'font'='F1',bc),
TextField['TF_upper']('value'=" ", 'width'=5, lc)
), # end BoxRow
BoxRow('inset'=0,'spacing'=0, bc,
BoxColumn('border'='true', 'inset'=0, 'spacing'=0,
'caption'="Problem status", bc,
BoxRow(MathMLViewer['ML']('height'=470, 'width'=400, lc), bc),
BoxRow('halign'='right', bc,
Button("Start", 'onclick'='A_start', lc),
Button("Final Ans", 'onclick'='A_getFinalAnswer', lc),
Button("All Steps", 'onclick'='A_showAllSteps',
'tooltip'="show a complete solution", lc),
Button("Clear", 'onclick'='A_clear',
'tooltip'="clear output and problem history", lc),
Button("Close", Shutdown(), 'tooltip'="close", lc)
) # end BoxRow
), # end BoxColumn
BoxColumn('inset'=0, 'inset'=0, 'spacing'=0, bc,
BoxRow('border'='true', 'caption'="Message",
'inset'=0, 'spacing'=0, bc,
BoxCell(
TextBox['info']('editable'='false',
'value'="", lc,
'tooltip'="message",
'height'=4, 'width'=24
) # end TextBox
) # end BoxCell
), # end BoxRow
BoxRow('border'='true', 'caption'="Hints",
'inset'=0, 'spacing'=10, bc,
BoxCell(Button['B_getHint']("Obtain a Hint", 'onclick'='A_getHint', lc)),
BoxCell(Button['B_applyHint']("Apply the Hint", 'onclick'='A_applyHint', lc))
), # end BoxRow
BoxColumn('border'='true', 'inset'=0, 'spacing'=0,
'caption'="Integration Rules", bc,
BoxRow('halign'='left', 'inset'=0, 'spacing'=3, bc,
BoxCell('halign'='left',
Button['B_constant'](" Constant ", lc, 'onclick'='A_constant',
'tooltip'="Int(c, x)= c*x or Int(c, x=a..b) = c*b - c*a")
), # BoxCell
BoxCell('halign'='left',
Button['B_constantmultiple'](" Constant Multiple", lc, 'onclick'='A_constantmultiple',
'tooltip'="Int(c*f(x)) = c*Int(f(x))")
) # BoxCell
), # BoxRow
BoxRow('halign'='left', 'inset'=0, 'spacing'=1, bc,
BoxCell('halign'='left',
Button['B_identity']("Identity", lc, 'onclick'='A_identity',
'tooltip'="Int(x,x) = x^2/2")
), # BoxCell
BoxCell('halign'='left',
Button['B_sum']("Sum", lc, 'onclick'='A_sum',
'tooltip'="apply sum rule: Int(f(x)+g(x)) = Int(f(x)) + Int(g(x))")
), # BoxCell
BoxCell('halign'='left',
Button['B_difference']("Difference", lc, 'onclick'='A_difference',
'tooltip'="Int(f(x)-g(x)) = Int(f(x)) - Int(g(x))")
) # BoxCell
), # BoxRow
BoxRow('halign'='left', 'inset'=0, 'spacing'=5, bc,
BoxCell('halign'='left',
Button['B_power']("Power ", lc, 'onclick'='A_power',
'tooltip'="Int(x^n, x) = x^(n+1)/(n+1)")
), # BoxCell
BoxCell('halign'='left',
Button['B_revert'](" Revert ", lc, 'onclick'='A_revert',
'tooltip'="reverts a change of variables substitution")
), # BoxCell
BoxCell('halign'='left',
Button['B_solve'](" Solve ", lc, 'onclick'='A_solve',
'tooltip'="algebraically solve for the integral appeared more than once")
) # end BoxCell
) # end BoxRow
), # end Column
BoxColumn('border'='true', 'inset'=0, 'spacing'=0,
'caption'="Integration Rules with Arguments", bc,
BoxRow('inset'=0, 'spacing'=0, bc,
Button['B_parts']("Int By Parts", lc, 'onclick'='A_applyRuleParts',
'tooltip'="Integrate By Parts: Int(f(x)*Diff(g(x),x),x) = f(x)*g(x) - Int(g(x)*Diff(f(x),x),x)" ),
Label(" f(x)=", dc),
TextField['TF_parts_f']('width'=3, lc),
Label(" g(x)=", dc),
TextField['TF_parts_g']('width'=3, lc)
), # end BoxRow
BoxRow('inset'=0, 'spacing'=0, bc,
BoxColumn('halign'='left', 'inset'=0, 'spacing'=0, bc,
Button['B_rewrite']("rewrite ", lc, 'onclick'='A_applyRuleRewrite',
'tooltip'="change the form of the expression"),
Button['B_change']("change", lc, 'onclick'='A_applyRuleChange',
'tooltip'="change the variable of the integration")
), # BoxColumn
TextBox['TB_args'](
'value'="", lc,
'tooltip'="Arguments of the Rules",
'height'=2, 'width'=22
) # end TextBox
) # end BoxRow
), # end BoxColumn
BoxColumn('border'='true', 'inset'=0, 'spacing'=0,
'caption'="Function Rules", bc,
BoxRow('halign'='left', 'inset'=0, 'spacing'=0, bc,
Label('caption'="Enter a Function: ", bc),
TextField['TF_mathfunc']('width'=6, lc)
), # end BoxRow
BoxRow('halign'='left', 'inset'=0, 'spacing'=5, bc,
Button['B_applyMathFunc']("Apply", lc, 'onclick'='A_applyMathFunc'),
Button['B_selectMathfunc']("Select a Function",
'onclick'=RunWindow('mathfuncWin'), lc)
) # end BoxRow
), # end BoxColumn
BoxRow('border'='true', 'inset'=0, 'spacing'=3,
'caption'="Definite Integral Rules", bc,
Button("flip", lc, 'onclick'='A_flip',
'tooltip'="Int(f(x),x=a..b) = -Int(f(x),x=b..a)" ),
Button("join", lc, 'onclick'='A_join',
'tooltip'="Int(f(x),x=a..c) + Int(f(x),x=c..b) = Int(f(x),x=a..b)" ),
Button("split", lc, 'onclick'='A_applyRuleSplit',
'tooltip'="Int(f(x),x=a..b) = Int(f(x),x=a..c) + Int(f(x),x=c..b)" ),
Label(" at ", dc),
TextField['TF_c']('width'=2, lc)
) # end BoxRow
) # end BoxColumn
) # end BoxRow
) # end BoxColumn
), # end Window
############################################################
Window['mathfuncWin']('resizable'='false',
'title'="Select a Mathematical Function",
'defaultbutton'='B_close2',
BoxColumn(bc,
BoxRow('border'='true', 'inset'=1, 'spacing'=5, bc,
'caption'="Exponential and Logarithmic Functions",
Button['B_exp']("Natural Exponential", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="exp"),
CloseWindow('mathfuncWin'))
), # end Button exp
Button['B_ln']("Natural Logarithmic", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="ln"),
CloseWindow('mathfuncWin'))
) # end Button ln
), # end BoxRow
GridLayout('border'='true', 'inset'=1, bc,
'caption'="Trigonometric, Hyperbolic Functions and their Inverses",
GridRow(
GridCell(Button['B_sin'](" sin ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="sin"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_cos'](" cos ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="cos"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_tan'](" tan ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="tan"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_cot'](" cot ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="cot"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_sec'](" sec ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="sec"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_csc'](" csc ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="csc"),
CloseWindow('mathfuncWin') )
)) # end Button/GridCell
), # end GridRow
GridRow(
GridCell(Button['B_arcsin'](" arcsin ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arcsin"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arccos'](" arccos ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arccos"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arctan'](" arctan ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arctan"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arccot'](" arccot ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arccot"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arcsec'](" arcsec ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arcsec"),
CloseWindow('mathfuncWin') )
)), # end Button/GridCell
GridCell(Button['B_arccsc'](" arccsc ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arccsc"),
CloseWindow('mathfuncWin'))
)) # end Button/GridCell
), # end GridRow
GridRow(
GridCell(Button['B_sinh'](" sinh ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="sinh"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_cosh'](" cosh ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="cosh"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_tanh'](" tanh ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="tanh"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_coth'](" coth ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="coth"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_sech'](" sech ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="sech"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_csch'](" csch ", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="csch"),
CloseWindow('mathfuncWin'))
)) # end Button/GridCell
), # end GridRow
GridRow(
GridCell(Button['B_arcsinh']("arcsinh", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arcsinh"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arccosh']("arccosh", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arccosh"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arctanh']("arctanh", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arctanh"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arccoth']("arccoth", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arccoth"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arcsech']("arcsech", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arcsech"),
CloseWindow('mathfuncWin'))
)), # end Button/GridCell
GridCell(Button['B_arccsch']("arccsch", lc,
'onclick'=Action(
SetOption('TF_mathfunc'="arccsch"),
CloseWindow('mathfuncWin'))
)) # end Button/GridCell
) # end GridRow
), # end GridLayout
BoxRow('border'='true', 'inset'=1, 'spacing'=5, bc,
'caption'="Other Maple Mathematical Functions",
Label('caption'="Enter a Maple Mathematical Function: ", bc),
TextField['TF_other'](15, lc),
Button['B_other']("Apply",'onclick'='A_other', lc)
), # end BoxRow
BoxRow( Button['B_close2']("Close",CloseWindow('mathfuncWin'), lc), bc )
) # end BoxColumn
), # end Window
############################################################
Window['argRuleWin']('defaultbutton'='closeArgRuleWin',
'title'="About the Rules with Arguments",
'resizable'='false',
BoxColumn('inset'=6, 'spacing'=6, bc,
BoxCell(
TextBox['TB_argRule']('height'=15, 'width'=40, lc,
'editable'='false', 'font'='F2',
'value'="Click the Button below to see the description..."
) # end TextBox
), # end BoxCell
BoxRow('inset'=0, 'spacing'=12, bc,
Button("parts and solve", lc,
'onclick'=SetOption('TB_argRule'=partsStr)),
Button("rewrite", lc,
'onclick'=SetOption('TB_argRule'=rewriteStr)),
Button("change and revert", lc,
'onclick'=SetOption('TB_argRule'=changeStr)),
Button['closeArgRuleWin']("Close", CloseWindow('argRuleWin'), lc)
) # end BoxRow
) # end BoxColumn
), # end Window
############################################################
Window['ruleWin'](
'title'="Integration Rule", 'resizable'='false',
BoxColumn('inset'=0, 'spacing'=5, 'inset'=10, bc,
BoxRow('inset'=0, 'spacing'=0, bc,
TextBox[LABEL]('width'=25, lc)),
BoxRow('inset'=0, 'spacing'=0, bc,
MathMLViewer['ML_rule']('width'=380, 'height'=80, lc)
), # end BoxRow
BoxRow('inset'=0, 'spacing'=0, bc,
Button("Close", 'onclick'=A_ruleWin, lc)
) # end BoxRow
) # end BoxColumn
), # end ruleWin
############################################################
Window['helpWin']( 'resizable'='false',
'title'="About Step-by-Step Integration Problem Solver Maplet",
BoxColumn('border'='true', 'inset'=0, 'spacing'=8, bc,
BoxCell(
TextBox('height'=24, 'width'=40, lc,
'editable'='false', 'font'='F1', 'foreground'="#333399",
'value'=helpStr
) # end TextBox
), # end BoxCell
BoxRow('inset'=0, 'spacing'=0, bc,
Button("Close", lc,
CloseWindow('helpWin'))
) # end BoxRow
) # end BoxColumn
), # end helpWin
############################################################
MenuBar['intMB'](
Menu("File",
MenuItem("Start to Solve", 'onclick'='A_start'),
MenuItem("Final Answer", 'onclick'='A_getFinalAnswer'),
MenuItem("Show All Steps", 'onclick'='A_showAllSteps'),
MenuSeparator(),
MenuItem("Obtain a Hint", 'onclick'='A_getHint'),
MenuItem("Apply the Hint",
'onclick'=Evaluate('function'='applyHint()')),
MenuSeparator(),
MenuItem("Clear",
'onclick'=Evaluate('function'='clearSteps()')),
MenuSeparator(),
MenuItem("Close", Shutdown())
), # end Menu/File
Menu("About the Rule",
MenuItem("Constant Rule", 'onclick'='A_i_constant'),
MenuItem("Constant Multiple", 'onclick'='A_i_constantmultiple'),
MenuSeparator(),
MenuItem("Sum Rule", 'onclick'='A_i_sum'),
MenuItem("Difference Rule", 'onclick'='A_i_difference'),
MenuSeparator(),
MenuItem("Identity Rule", 'onclick'='A_i_identity'),
MenuItem("Power Rule", 'onclick'='A_i_power'),
MenuSeparator(),
MenuItem("Flip Rule", 'onclick'='A_i_flip'),
MenuItem("Join Rule", 'onclick'='A_i_join'),
MenuItem("Split Rule", 'onclick'='A_i_split'),
MenuSeparator(),
MenuItem("Integrate by Parts", 'onclick'='A_i_parts'),
MenuItem("Solve Integral", 'onclick'='A_i_parts'),
MenuSeparator(),
MenuItem("Rewrite Expression", 'onclick'='A_i_rewrite'),
MenuSeparator(),
MenuItem("Change (Int Variable)", 'onclick'='A_i_change'),
MenuItem("Revert (Int Variable)", 'onclick'='A_i_change'),
MenuSeparator(),
MenuItem("Natural Exponential", 'onclick'='A_i_exp'),
MenuItem("Natural Logorithm",'onclick'='A_i_ln'),
MenuSeparator(),
Menu("Trigonometric Functions",
MenuItem("sin",'onclick'='A_i_sin'),
MenuItem("cos",'onclick'='A_i_cos'),
MenuItem("tan",'onclick'='A_i_tan'),
MenuItem("cot",'onclick'='A_i_cot'),
MenuItem("sec",'onclick'='A_i_sec'),
MenuItem("csc",'onclick'='A_i_csc')
), # end Menu/Trig
Menu("Inverse Trigonometric Functions",
MenuItem("arcsin",'onclick'='A_i_arcsin'),
MenuItem("arccos",'onclick'='A_i_arccos'),
MenuItem("arctan",'onclick'='A_i_arctan'),
MenuItem("arccot",'onclick'='A_i_arccot'),
MenuItem("arcsec",'onclick'='A_i_arcsec'),
MenuItem("arccsc",'onclick'='A_i_arccsc')
), # end Menu/Inverse Trig
Menu("Hyperbolic Functions",
MenuItem("sinh",'onclick'='A_i_sinh'),
MenuItem("cosh",'onclick'='A_i_cosh'),
MenuItem("tanh",'onclick'='A_i_tanh'),
MenuItem("coth",'onclick'='A_i_coth'),
MenuItem("sech",'onclick'='A_i_sech'),
MenuItem("csch",'onclick'='A_i_csch')
), # end Menu/Hyperbolic
Menu("Inverse Hyperbolic Functions",
MenuItem("arcsinh",'onclick'='A_i_arcsinh'),
MenuItem("arccosh",'onclick'='A_i_arccosh'),
MenuItem("arctanh",'onclick'='A_i_arctanh'),
MenuItem("arccoth",'onclick'='A_i_arccoth'),
MenuItem("arcsech",'onclick'='A_i_arcsech'),
MenuItem("arccsch",'onclick'='A_i_arccsch')
) # end Menu/Inverse hyperbolic
), # end Menu/About the Rule
Menu("Apply the Rule",
MenuItem("Constant Rule", 'onclick'='A_constant'),
MenuItem("Constant Multiple", 'onclick'='A_constantmultiple'),
MenuSeparator(),
MenuItem("Sum Rule", 'onclick'='A_sum'),
MenuItem("Difference Rule", 'onclick'='A_difference'),
MenuSeparator(),
MenuItem("Power Rule", 'onclick'='A_power'),
MenuItem("Identity Rule", 'onclick'='A_identity'),
MenuSeparator(),
MenuItem("Solve", 'onclick'='A_solve'),
MenuItem("Revert", 'onclick'='A_revert'),
MenuSeparator(),
MenuItem("Natural Exponential", 'onclick'='A_exp'),
MenuItem("Natural Logorithm", 'onclick'='A_ln'),
MenuSeparator(),
Menu("Trigonometric Functions",
MenuItem("sin", 'onclick'='A_sin'),
MenuItem("cos", 'onclick'='A_cos'),
MenuItem("tan", 'onclick'='A_tan'),
MenuItem("cot", 'onclick'='A_cot'),
MenuItem("sec", 'onclick'='A_sec'),
MenuItem("csc", 'onclick'='A_csc')
), # end Menu/Trig
Menu("Inverse Trigonometric Functions",
MenuItem("arcsin", 'onclick'='A_arcsin'),
MenuItem("arccos", 'onclick'='A_arccos'),
MenuItem("arctan", 'onclick'='A_arctan'),
MenuItem("arccot", 'onclick'='A_arccot'),
MenuItem("arcsec", 'onclick'='A_arcsec'),
MenuItem("arccsc", 'onclick'='A_arccsc')
), # end Menu/Inverse Trig
Menu("Hyperbolic Functions",
MenuItem("sinh", 'onclick'='A_sinh'),
MenuItem("cosh", 'onclick'='A_cosh'),
MenuItem("tanh", 'onclick'='A_tanh'),
MenuItem("coth", 'onclick'='A_coth'),
MenuItem("sech", 'onclick'='A_sech'),
MenuItem("csch", 'onclick'='A_csch')
), # end Menu/Hyperbolic
Menu("Inverse Hyperbolic Functions",
MenuItem("arcsinh", 'onclick'='A_arcsinh'),
MenuItem("arccosh", 'onclick'='A_arccosh'),
MenuItem("arctanh", 'onclick'='A_arctanh'),
MenuItem("arccoth", 'onclick'='A_arccoth'),
MenuItem("arcsech", 'onclick'='A_arcsech'),
MenuItem("arccsch", 'onclick'='A_arccsch')
) # end Menu/Inverse hyperbolic
), # end Menu/Apply Rules
Menu("Understood Rules",
CheckBoxMenuItem['CMI_constant']("Constant Rule",
'onclick'=Evaluate('function'='changeUnderstoodRules(constant,CMI_constant)') ),
CheckBoxMenuItem['CMI_constantmultiple']("Constant Multiple",
'onclick'=Evaluate('function'=
'changeUnderstoodRules(constantmultiple,CMI_constantmultiple)') ),
MenuSeparator(),
CheckBoxMenuItem['CMI_sum']("Sum Rule",
'onclick'=Evaluate('function'='changeUnderstoodRules(sum,CMI_sum)') ),
CheckBoxMenuItem['CMI_difference']("Difference Rule",
'onclick'=Evaluate('function'='changeUnderstoodRules(difference,CMI_sum)') ),
MenuSeparator(),
CheckBoxMenuItem['CMI_identity']("Identity Rule",
'onclick'=Evaluate('function'='changeUnderstoodRules(identity,CMI_identity)') ),
CheckBoxMenuItem['CMI_power']("Power Rule",
'onclick'=Evaluate('function'='changeUnderstoodRules(power,CMI_power)') ),
MenuSeparator(),
CheckBoxMenuItem['CMI_solve']("Solve Rule",
'onclick'=Evaluate('function'='changeUnderstoodRules(solve,CMI_solve)') ),
CheckBoxMenuItem['CMI_revert']("Revert Rule",
'onclick'=Evaluate('function'='changeUnderstoodRules(revert,CMI_revert)') ),
MenuSeparator(),
CheckBoxMenuItem['CMI_exp']("Natural Exponential",
'onclick'=Evaluate('function'='changeUnderstoodRules(exp,CMI_exp)') ),
CheckBoxMenuItem['CMI_ln']("Natural Logorithm",
'onclick'=Evaluate('function'='changeUnderstoodRules(ln,CMI_ln)') ),
MenuSeparator(),
Menu("Trigonometric Functions",
CheckBoxMenuItem['CMI_sin']("sin",
'onclick'=Evaluate('function'='changeUnderstoodRules(sin,CMI_sin)') ),
CheckBoxMenuItem['CMI_cos']("cos",
'onclick'=Evaluate('function'='changeUnderstoodRules(cos,CMI_cos)')),
CheckBoxMenuItem['CMI_tan']("tan",
'onclick'=Evaluate('function'='changeUnderstoodRules(tan,CMI_tan)') ),
CheckBoxMenuItem['CMI_cot']("cot",
'onclick'=Evaluate('function'='changeUnderstoodRules(cot,CMI_cot)') ),
CheckBoxMenuItem['CMI_sec']("sec",
'onclick'=Evaluate('function'='changeUnderstoodRules(sec,CMI_sec)') ),
CheckBoxMenuItem['CMI_csc']("csc",
'onclick'=Evaluate('function'='changeUnderstoodRules(csc,CMI_csc)') )
), # end Menu/Trig
Menu("Inverse Trigonometric Functions",
CheckBoxMenuItem['CMI_arcsin']("arcsin",
'onclick'=Evaluate('function'='changeUnderstoodRules(arcsin,CMI_arcsin)') ),
CheckBoxMenuItem['CMI_arccos']("arccos",
'onclick'=Evaluate('function'='changeUnderstoodRules(arccos,CMI_arccos)') ),
CheckBoxMenuItem['CMI_arctan']("arctan",
'onclick'=Evaluate('function'='changeUnderstoodRules(arctan,CMI_arctan)') ),
CheckBoxMenuItem['CMI_arccot']("arccot",
'onclick'=Evaluate('function'='changeUnderstoodRules(arccot,CMI_arccot)') ),
CheckBoxMenuItem['CMI_arcsec']("arcsec",
'onclick'=Evaluate('function'='changeUnderstoodRules(arcsec,CMI_arcsec)') ),
CheckBoxMenuItem['CMI_arccsc']("arccsc",
'onclick'=Evaluate('function'='changeUnderstoodRules(arccsc,CMI_arccsc)') )
), # end Menu/Inverse Trig
Menu("Hyperbolic Functions",
CheckBoxMenuItem['CMI_sinh']("sinh",
'onclick'=Evaluate('function'='changeUnderstoodRules(sinh,CMI_sinh)') ),
CheckBoxMenuItem['CMI_cosh']("cosh",
'onclick'=Evaluate('function'='changeUnderstoodRules(cosh,CMI_cosh)') ),
CheckBoxMenuItem['CMI_tanh']("tanh",
'onclick'=Evaluate('function'='changeUnderstoodRules(tanh,CMI_tanh)') ),
CheckBoxMenuItem['CMI_coth']("coth",
'onclick'=Evaluate('function'='changeUnderstoodRules(coth,CMI_coth)') ),
CheckBoxMenuItem['CMI_sech']("sech",
'onclick'=Evaluate('function'='changeUnderstoodRules(sech,CMI_sech)') ),
CheckBoxMenuItem['CMI_csch']("csch",
'onclick'=Evaluate('function'='changeUnderstoodRules(csch,CMI_csch)') )
), # end Menu/Hyperbolic
Menu("Inverse Hyperbolic Functions",
CheckBoxMenuItem['CMI_arcsinh']("arcsinh",
'onclick'=Evaluate('function'='changeUnderstoodRules(arcsinh,CMI_arcsinh)') ),
CheckBoxMenuItem['CMI_arccosh']("arccosh",
'onclick'=Evaluate('function'='changeUnderstoodRules(arccosh,CMI_arccosh)') ),
CheckBoxMenuItem['CMI_arctanh']("arctanh",
'onclick'=Evaluate('function'='changeUnderstoodRules(arctanh,CMI_arctanh)') ),
CheckBoxMenuItem['CMI_arccoth']("arccoth",
'onclick'=Evaluate('function'='changeUnderstoodRules(arccoth,CMI_arccoth)') ),
CheckBoxMenuItem['CMI_arcsech']("arcsech",
'onclick'=Evaluate('function'='changeUnderstoodRules(arccoth,CMI_arccoth)') ),
CheckBoxMenuItem['CMI_arccsch']("arccsch",
'onclick'=Evaluate('function'='changeUnderstoodRules(arccoth,CMI_arccoth)') )
) # end Menu/Inverse hyperbolic
), # end Menu/Understood Rules
Menu("Help",
RadioButtonMenuItem['RMI_all1']('value'=false, 'group'='RMI_all',
"Hide the Rule in 'All Steps'" ),
RadioButtonMenuItem['RMI_all2']('value'=true, 'group'='RMI_all',
"Show the Rule on the Right in 'All Steps'" ),
RadioButtonMenuItem['RMI_all3']('value'=false, 'group'='RMI_all',
"Show the Rule on the Left in 'All Steps'" ),
MenuSeparator(),
RadioButtonMenuItem['RMI_single1']('value'=false, 'group'='RMI_single',
"Hide the Rule in a single step" ),
RadioButtonMenuItem['RMI_single2']('value'=true, 'group'='RMI_single',
"Show the Rule on the Right in a single step" ),
RadioButtonMenuItem['RMI_single3']('value'=false, 'group'='RMI_single',
"Show the Rule on the Left in a single step" ),
MenuSeparator(),
MenuItem("About this maplet", 'onclick'=RunWindow('helpWin'))
) # end Menu/Help
), # end MenuBar
############################################################
ButtonGroup['RMI_all'](), ButtonGroup['RMI_single'](),
############################################################
Action['A_start'](Evaluate('function'='startRule', 'waitforresult'='false',
Argument('TF_fun', quotedtext='true'),
Argument('TF_var', quotedtext='true'),
Argument('TF_lower', quotedtext='true'),
Argument('TF_upper', quotedtext='true')),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')),
Action['A_getHint'](Evaluate('function'='getHint()'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')),
Action['A_applyHint'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyHint()'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')),
Action['A_applyMathFunc'](Evaluate('function'='applyMathFuncRule',
Argument('TF_mathfunc', quotedtext='true')),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')),
Action['A_applyRuleParts'](Evaluate('function'='applyRuleParts', 'waitforresult'='false',
Argument('TF_parts_f', quotedtext='true'),
Argument('TF_parts_g', quotedtext='true')),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')),
Action['A_applyRuleRewrite'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRuleRewrite',
Argument('TB_args', quotedtext='true')),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')),
Action['A_applyRuleChange'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRuleChange',
Argument('TB_args', quotedtext='true')),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')),
Action['A_applyRuleSplit'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRuleSplit', Argument('TF_c', quotedtext='true')),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')),
Action['A_other'](
SetOption('target'='TF_mathfunc',Argument('TF_other')),
CloseWindow('mathfuncWin'),
Evaluate('function'='applyOtherRule', Argument('TF_other', quotedtext='true'))
), # end A_other
Action['A_getFinalAnswer'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='getFinalAnswer()'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')),
Action['A_ruleWin'](
SetOption('ML_rule'=""),
CloseWindow('ruleWin')
), # end A_ruleWin
Action['A_showAllSteps'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='showAllSteps(RMI_all2, RMI_all3)'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')
), # end A_showAllSteps
Action['A_clear'](Evaluate('function'='clearSteps()'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false')
), # end A_clear
############################################################
Action['A_constant'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(constant)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_constant
Action['A_constantmultiple'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(constantmultiple)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_constantmultiple
Action['A_sum'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(sum)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_sum
Action['A_difference'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(difference)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_difference
Action['A_identity'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(identity)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_identity
Action['A_power'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(power)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_power
Action['A_solve'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(solve)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_product
Action['A_revert'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(revert)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_quotient
Action['A_flip'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(flip)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_chain
Action['A_join'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(join)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_chain
Action['A_exp'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(exp)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_exp
Action['A_ln'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(ln)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_ln
Action['A_sin'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(sin)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_sin
Action['A_cos'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(cos)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_cos
Action['A_tan'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(tan)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_tan
Action['A_cot'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(cot)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_cot
Action['A_sec'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(sec)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_sec
Action['A_csc'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(csc)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_csc
Action['A_arcsin'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arcsin)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arcsin
Action['A_arccos'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arccos)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_cos
Action['A_arctan'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arctan)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arctan
Action['A_arccot'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arccot)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arccot
Action['A_arcsec'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arcsec)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arcsec
Action['A_arccsc'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arccsc)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arccsc
Action['A_sinh'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(sinh)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_sinh
Action['A_cosh'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(cosh)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_cosh
Action['A_tanh'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(tanh)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_tanh
Action['A_coth'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(coth)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_coth
Action['A_sech'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(sech)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_sech
Action['A_csch'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(csch)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_csch
Action['A_arcsinh'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arcsinh)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arcsinh
Action['A_arccosh'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arccosh)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_cosh
Action['A_arctanh'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arctanh)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arctanh
Action['A_arccoth'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arccoth)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arccoth
Action['A_arcsech'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arcsech)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arcsech
Action['A_arccsch'](Evaluate('function'='getRMISingle2', Argument('RMI_single2')),
Evaluate('function'='getRMISingle3', Argument('RMI_single3')),
Evaluate('function'='applyRule(arccsch)', 'waitforresult'='false'),
Evaluate('target'='ML', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='info', 'function'='getLastString', 'waitforresult'='false')
), # end A_arccsch
############################################################
Action['A_i_constant'](
Evaluate('function'='aboutRule(constant, c)'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_constant
Action['A_i_constantmultiple'](
Evaluate('function'='aboutRule(constantmultiple, c*f(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_constantmultiple
Action['A_i_sum'](
Evaluate('function'='aboutRule(sum,f(x)+g(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_sum
Action['A_i_difference'](
Evaluate('function'='aboutRule(difference,f(x)-g(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_difference
Action['A_i_identity'](
Evaluate('function'='aboutRule(identity,x)'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_identity
Action['A_i_power'](
Evaluate('function'='aboutRule(power,x^n)'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_power
Action['A_i_flip'](
Evaluate('ML_rule'='aboutDefRule(flip)'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_flip
Action['A_i_join'](
Evaluate('ML_rule'='aboutDefRule(join)'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_join
Action['A_i_split'](
Evaluate('ML_rule'='aboutDefRule(split)'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_split
Action['A_i_parts'](
SetOption('TB_argRule'=partsStr),
RunWindow('argRuleWin')
), # end A_i_parts
Action['A_i_rewrite'](
SetOption('TB_argRule'=rewriteStr),
RunWindow('argRuleWin')
), # end A_i_parts
Action['A_i_change'](
SetOption('TB_argRule'=changeStr),
RunWindow('argRuleWin')
), # end A_i_parts
Action['A_i_exp'](
Evaluate('function'='aboutRule(exp,exp(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_exp
Action['A_i_ln'](
Evaluate('function'='aboutRule(ln,ln(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_ln
Action['A_i_sin'](
Evaluate('function'='aboutRule(sin,sin(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_sin
Action['A_i_cos'](
Evaluate('function'='aboutRule(cos,cos(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_cos
Action['A_i_tan'](
Evaluate('function'='aboutRule(tan,tan(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_tan
Action['A_i_cot'](
Evaluate('function'='aboutRule(cot,cot(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_cot
Action['A_i_sec'](
Evaluate('function'='aboutRule(sec,sec(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_sec
Action['A_i_csc'](
Evaluate('function'='aboutRule(csc,csc(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_csc
Action['A_i_arcsin'](
Evaluate('function'='aboutRule(arcsin,arcsin(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arcsin
Action['A_i_arccos'](
Evaluate('function'='aboutRule(arccos,arccos(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_cos
Action['A_i_arctan'](
Evaluate('function'='aboutRule(arctan,arctan(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arctan
Action['A_i_arccot'](
Evaluate('function'='aboutRule(arccot,arccot(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arccot
Action['A_i_arcsec'](
Evaluate('function'='aboutRule(arcsec,arcsec(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arcsec
Action['A_i_arccsc'](
Evaluate('function'='aboutRule(arccsc,arccsc(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arccsc
Action['A_i_sinh'](
Evaluate('function'='aboutRule(sinh,sinh(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_sinh
Action['A_i_cosh'](
Evaluate('function'='aboutRule(cosh,cosh(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_cosh
Action['A_i_tanh'](
Evaluate('function'='aboutRule(tanh,tanh(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_tanh
Action['A_i_coth'](
Evaluate('function'='aboutRule(coth,coth(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_coth
Action['A_i_sech'](
Evaluate('function'='aboutRule(sech,sech(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_sech
Action['A_i_csch'](
Evaluate('function'='aboutRule(csch,csch(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_csch
Action['A_i_arcsinh'](
Evaluate('function'='aboutRule(arcsinh,arcsinh(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arcsinh
Action['A_i_arccosh'](
Evaluate('function'='aboutRule(arccosh,arccosh(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_cosh
Action['A_i_arctanh'](
Evaluate('function'='aboutRule(arctanh,arctanh(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arctanh
Action['A_i_arccoth'](
Evaluate('function'='aboutRule(arccoth,arccoth(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arccoth
Action['A_i_arcsech'](
Evaluate('function'='aboutRule(arcsech,arcsech(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arcsech
Action['A_i_arccsch'](
Evaluate('function'='aboutRule(arccsch,arccsch(x))'),
Evaluate('target'='ML_rule', 'function'='getLastMath', 'waitforresult'='false'),
Evaluate('target'='LABEL', 'function'='getLastString', 'waitforresult'='false'),
RunWindow('ruleWin')
), # end A_i_arccsch
############################################################
Action['A']()
): # end maplet
############################################################
Understand(Int,none) :
Maplets[Display](maplet) :
end use: # end use
end proc: # end runIntMaplet
############################################################
end module: # end IntMaplet()
IntMaplet:-runIntMaplet();