{VERSION 6 0 "IBM INTEL NT" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "" -1 256 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 257 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "Times " 1 18 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }1 1 0 0 8 4 1 0 1 0 2 2 0 1 } {PSTYLE "Normal" -1 256 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {PARA 257 "" 0 "" {TEXT 257 35 "Calculus Exploration 2: Limit \+ Rules" }{TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT 258 269 "The following is the Maple code for the Limit Rules M aplet, which should be used to both explore the limit rules and obtain step-by-step solutions to problems using the limit rules. You can eit her execute the code below or run the corresponding Maplet from the we bpage." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 23 "Limit Rules Maplet Code" }}{EXCHG {PARA 0 "" 0 "" {TEXT 256 36 "Click in red area and press [Enter]." }{TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 52942 "# Step-by-Step Limit Problem Solver Ma plet\n# Copyright 2002 Waterloo Maple\n# \n# This maplet guides the us er through a limit problem. The user can apply limit rules one at a ti me to a function f and see the resulting expression. The Messages box \+ displays status information.\n# \n# The user enters a function with it s independent variable, x, and the limit point, a, that x approaches. \+ The user can apply limit rules, for example, the sum rule or any speci fied mathematical function, such as the sine rule. The user can also a pply l'Hopital's rule, a rewrite rule, or a change of variable rule by specifying additional arguments. When the user applies a rule, the Pr oblem Status box displays the result.\n# \n# For any rule, the user ca n display a definition.\n# \n# At any time, the user can request a hin t for the next step, and then apply the hint.\n# \n# The user can als o specify that a set of rules is understood, in which case those rules are automatically applied when possible. \n# \n# At any time, the us er can display all solution steps in the solution or display the final answer.\n# \n# To run this maplet, click the Execute (!!!) button in \+ the context bar.\nrestart:\nLimMaplet := module()\n\n################# ###########################################\n\nexport iniMathML, addMa thML, runLimMaplet, \n startRule, applyRule, applyOtherRule,\n \+ applyMathFuncRule, getHint, applyHint, \n getFinalAnswer, s howAllSteps, clearSteps,\n applyRuleWithArgs, changeUnderstoodRu les, forgetUnderstoodRule,\n aboutRule, helpStr:\nlocal steps, l hopitalStr, changeStr, rewriteStr:\nsteps := []:\n\n################## ##########################################\n\n######################## ####################################\n\nlhopitalStr := \n\"If f(x)/g(x ) is an indeterminate form at x = a, then L(f(x)/g(x)) = L(f'(x)/g'(x) ) (if the latter limit exists).\n\nTo use l'Hopital's rule, you must e nter the numerator for the application of the rule in the 'Rules with \+ Arguments' text box.\":\n\nrewriteStr := \n\"The rewrite rule changes \+ the form of the expression in the limit without changing the limit var iable.\n\nTo use the rewrite rule, you must enter one or more substitu tion equations in the 'Rules with Arguments' text box. The maplet perf orms each substitution listed. Occurrences of the left-hand side of ea ch substitution are replaced by the corresponding right-hand side.\": \n \nchangeStr := \n\"The change rule changes the variable with respec t to which the limit is computed.\n\nTo use the change rule, you must \+ enter an equation describing the change of variables, F(x,u) = G(x,u), in the 'Rules with Arguments' text box.\":\n\n####################### #####################################\n\n############################# ###############################\nhelpStr := \n\"This maplet guides you through a limit problem. You can apply limit rules one at a time to a function f and see the resulting expression. The 'Messages' box displ ays status information.\n\nEnter a function with its independent varia ble, x, and the limit point, a, that x approaches. Click the 'Start' b utton. This clears the problem history and starts a new one. \n\nTo a pply limit rules click the corresponding buttons or select rules from \+ the 'Apply the Rule' menu. Rules include the sum rule and any specifie d mathematical functions, such as the sine rule. To apply math functio ns enter a valid math function command and then click the 'Apply' butt on, or click the 'Select a Function' button and then click or enter a \+ math function in the pop-up window and then click the 'Apply' button. \+ To apply l'Hopital's rule, a 'rewrite' rule, or a 'change' rule, you m ust specify additional arguments. Enter the arguments in the text box \+ above the buttons (separated by commas if there is more than one). For more information on rules that use additional arguments, select 'Usin g Rules with Arguments' from the 'File' menu.\n\nWhen you apply a rule , the 'Problem Status' box displays the result.\n\nTo view the definit ion of a rule, select the rule from the 'Rule Definition' menu. \n\n At any time, you can request a hint for the next step. To request a hi nt, click the 'Obtain a Hint' button or select 'Obtain a Hint' from th e 'File' menu. To apply a hint, click the 'Apply the Hint' button or s elect 'Apply the Hint' from the 'File' menu.\n\nIf you understand a ru le, you can select the rule from the 'Understood Rules' menu. The map let then applies the rule when possible.\n\nTo show all solution steps , click the 'All Steps' button or select 'Show All Steps' from the 'Fi le' menu. To display the final answer, click the 'Final Ans' button or select 'Final Answer' from the 'File' menu.\n\nTo clear the problem h istory, click the 'Clear' button or select 'Clear' from the 'File' men u.\": # end helpStr\n\n############################################### #############\n\n##################################################### #######\n# pre: iniEqn :: algebraic expression\n# post: returns the Pr esentation MathML of iniEqn\n\niniMathML := proc(iniEqn)\n MathML:-Ex portPresentation(iniEqn);\nend proc: # end iniMathML\n\n############## ##############################################\n\n#################### ########################################\n# pre: mathMLStr :: string, \+ in form of Presentation MathML\n# addEqn :: algebraic expression \n# post: addEqn appends to the next line of mathMLStr,\n# retur ns the updated mathMLStr \n\naddMathML := proc(mathMLStr, addEqn)\n \+ local tree, cmc, child, children, nl, eqnSign;\n use XMLTools in\n \+ tree := FromString(mathMLStr);\n cmc := ContentModelCount(tree);\n child := FromString(MathML:-ExportPresentation(addEqn));\n chil dren := ContentModel(child);\n nl := FromString(\" < /mtext>\");\n eqnSign := Element(\"mo\",\"=\");\n tree := AddChi ld(tree,nl,cmc);\n tree := AddChild(tree,eqnSign,cmc+1);\n for c hild in children do \n cmc := ContentModelCount(tree);\n tre e := AddChild(tree,child,cmc);\n end do:\n tree := MakeElement( \"mrow\", [], ContentModel(tree) ):\n tree := Element(\"math\", tre e):\n ToString(tree):\n end use:\nend proc: # end addMathML\n\n### #########################################################\n\n######### ###################################################\n# pre: null \n# p ost: initializes the Limit problem solving process\n# if input i s correct, limit equation is added to steps\n# understood rules \+ apply if capable\n# MathML Viewer updates too\n# else erro r message shows\n\nstartRule := proc()\n local funStr, varStr, ptStr, dirStr, limStr, \n infoStr, mlStr, limExpr, limEqn, hints, \n \+ i, uRules, uAppliedRules, rulesStr:\n use Student:-Calculus1, \+ Maplets:-Tools in\n \n clearSteps():\n funStr := Get('TF_fun' ):\n if funStr = \"\" then \n infoStr := \"Enter a valid expre ssion\":\n Set('info'=infoStr):\n error \"No expression ente red in 'Function' text field\":\n end if: \n\n varStr := Get('TF _var'):\n if varStr = \"\" then \n infoStr := \"Enter the limi t variable\":\n Set('info'=infoStr):\n error \"No limit vari able entered in 'Variable' text field\":\n end if: \n\n ptStr := Get('CB'):\n if ptStr = \"\" then \n infoStr := \"Enter the l imit point\":\n Set('info'=infoStr):\n error \"No limit poin t in 'at' combination box\":\n end if: \n\n dirStr := Get('DDB') :\n if dirStr <> \"\" then \n dirStr := cat(\", \",dirStr):\n \+ end if: \n\n limStr := cat(\"Limit(\", funStr, \", \" ,varStr, \+ \"=\", ptStr, dirStr, \")\"):\n limExpr := parse(limStr):\n hint s := Hint(limExpr):\n mlStr := iniMathML(GetProblem()):\n infoSt r := \"Initializing\":\n Set('info'=infoStr):\n \n if nops(hi nts)>0 then\n uRules := rhs(Understand(Limit)):\n uAppliedRu les := []:\n\n if nops(uRules) > 0 then\n for i from 1 to \+ nops(hints) do \n if member(hints[i],uRules) = true then\n \+ uAppliedRules := [op(uAppliedRules),hints[i]]:\n end if:\n end do:\n\n limEqn := Rule[](GetProblem()): \n \+ steps := [op(steps),limEqn]:\n\n if nops(uAppliedRules) > \+ 0 then\n if nops(uRules) = 1 then \n rulesStr := c onvert(uRules,string):\n infoStr := cat(\"Understood rule \+ \", rulesStr,\n \" is automatically applied \"):\n else \n rulesStr := convert(uRules,string) :\n infoStr := cat(\"Understood rules \", rulesStr, \n \+ \" are automatically applied\"):\n end \+ if: # end if nops(uRules)=>1\n Set('info'=infoStr):\n \+ mlStr := addMathML(mlStr,rhs(limEqn)):\n end if: # end if nop s(uAppliedRules)>0\n \n else \n limEqn := Rule[](GetP roblem()):\n steps := [op(steps),limEqn]: \n \n end if: \+ # end if nops(uRules) > 0\n \n Set('ML'=mlStr):\n infoS tr := \"Apply any rule below\":\n Set('info'=infoStr):\n \n el se \n infoStr := \"No limit rules could be applied\":\n Set( 'info'=infoStr): \n\n end if : # end if nops(hints)>0\n end use: \nend proc:\n\n####################################################### #####\n\n############################################################ \n# pre: null \n# post: if aRule is a valid limit rule and applicable \n# new step is stored in steps, updates MathMLViewer \n# \+ else message shows the rule is not applied\n\napplyRule := proc(aRule) \n local mlStr, infoStr, limEqn, oldEqn:\n use Student:-Calculus1, M aplets:-Tools in\n \n if nops(steps)=0 then\n startRule(): \n end if:\n\n mlStr := Get('ML'):\n oldEqn := steps[nops(ste ps)]:\n limEqn := Rule[aRule](steps[nops(steps)]):\n\n if GetMes sage()=NULL or (not evalb(limEqn=oldEqn)) then\n infoStr := conve rt(aRule,string): \n infoStr := cat(infoStr, \" rule is being app lied\"):\n Set('info'=infoStr):\n\n steps := [op(steps),limE qn]:\n mlStr := addMathML(mlStr,rhs(limEqn)):\n Set('ML'=mlS tr):\n\n infoStr := convert(aRule,string): \n infoStr := cat (infoStr, \" rule has been applied\"):\n Set('info'=infoStr):\n \+ else\n infoStr := convert(aRule,string): \n infoStr := cat (infoStr, \" rule is not applicable\"):\n Set('info'=infoStr):\n \+ end if: # end if GetMessage()=NULL\n\n end use:\nend proc: # end a pplyRule()\n\n######################################################## ####\n\n############################################################\n # pre: null\n# post: apply the limit rule with arguments\n# if a rguments missing, error message shows\n\napplyRuleWithArgs := proc(aRu le)\n local ruleArgs, ruleStr:\n use Student:-Calculus1, Maplets:-To ols, Maplets:-Elements in\n \n ruleStr := convert(aRule,string): \n\n ruleArgs := Get('TB_args'):\n if ruleArgs = \"\" then\n \+ Maplets:-Display(Maplet(\n MessageDialog(\"You must enter ar guments to use this rule\"))): \n \n else\n ruleStr := cat (ruleStr,\", \",ruleArgs):\n applyRule([parse(ruleStr)]):\n en d if:\n\n end use:\nend proc: # end applyRuleWithArgs\n\n############ ################################################\n\n################## ##########################################\n# pre: null \n# post: read the limit rule from TF_other, and apply it\n# if TF_other is em pty, error message shows\n\napplyOtherRule := proc()\n local aRule:\n use Maplets:-Tools in\n aRule := Get('TF_other'):\n if aRule = \"\" then\n error \"No rule entered in 'Other Maple Mathematical Functions' text field\":\n else \n applyRule(parse(aRule)):\n end if:\n end use:\nend proc: # end applyOtherRule\n\n########### #################################################\n\n################# ###########################################\n# pre: null \n# post: rea d the limit rule from TF_mathfunc, and apply it\n# if TF_mathfun c is empty, error message shows\n\napplyMathFuncRule := proc()\n loca l aRule:\n use Maplets:-Tools in\n aRule := Get('TF_mathfunc'):\n \+ if aRule = \"\" then\n error \"No rule has been entered in 'Fu nction Rules' text field\":\n else \n applyRule(parse(aRule)): \n end if:\n end use:\nend proc: # end applyOtherRule\n\n######### ###################################################\n\n############### #############################################\n# pre: null\n# post: hi nt for the current limit problem is shown \n# in the message Tex tField, info\n\ngetHint := proc()\n local limEqn, hint, infoStr:\n u se Student:-Calculus1, Maplets:-Tools in\n\n if nops(steps)=0 then \n startRule():\n end if:\n \n limEqn := steps[nops(step s)]:\n hint := Hint(limEqn):\n \n if nops(hint)=0 then\n \+ infoStr:=\"No rule could be applied, or the problem is done\":\n \+ Set('info'=infoStr):\n else\n infoStr:=cat(convert(hint,strin g), \" could be applied\"):\n Set('info'=infoStr):\n end if:\n \n hint: # return value used in applyHint\n\n end use:\nend proc: \+ # end getHint()\n\n################################################### #########\n\n######################################################### ###\n# pre: null\n# post: hint for the current limit problem is applie d \n\napplyHint := proc()\n local hint:\n\n hint := getHint(): \n\n if nops(hint)>0 then\n applyRule(hint):\n end if:\n\nend proc: # end applyRule\n\n#################################################### ########\n\n########################################################## ##\n# pre: null \n# post: final answer for the current problem is sho wn\n\ngetFinalAnswer := proc()\n local limEqn, hint, mlStr, infoStr: \n use Student:-Calculus1, Maplets:-Tools in\n\n if nops(steps)=0 \+ then\n startRule():\n end if:\n\n limEqn := steps[nops(step s)]:\n hint := Hint(limEqn): \n\n if nops(hint)=0 then\n in foStr := \"No rule could be applied, or the question is done\":\n \+ Set('info'=infoStr):\n \n else \n mlStr := Get('ML'): \n \+ while nops(hint)>0 do\n infoStr := cat(convert(hint,string) ,\" is being applied\"):\n Set('info'=infoStr):\n limEqn := Rule[hint](limEqn):\n hint := Hint(limEqn): \n end do: \n steps := [op(steps),limEqn]:\n infoStr := \"Exporting fin al answer\":\n mlStr := addMathML(mlStr,rhs(limEqn)):\n Set( 'ML'=mlStr):\n infoStr := \"The final answer is displayed\":\n \+ Set('info'=infoStr):\n\n end if: # end if nops(hint)=0\n\n end \+ use:\nend proc: # end getFinalAnswer\n\n############################## ##############################\n\n#################################### ########################\n# pre: null\n# post: a complete solution for the current problem is shown\n\nshowAllSteps := proc()\n local limEq n, hint, mlStr, infoStr:\n use Student:-Calculus1, Maplets:-Tools in \n\n if nops(steps)=0 then\n startRule():\n end if:\n \n limEqn := steps[nops(steps)]:\n hint := Hint(limEqn):\n\n if nops(hint)=0 then\n infoStr := \"No rule could be applied, or th e question is done\":\n Set('info'=infoStr):\n \n else \n \+ mlStr := Get('ML'):\n\n while nops(hint)>0 do\n infoStr := cat(convert(hint,string),\" is being applied\"):\n Set('inf o'=infoStr):\n limEqn := Rule[hint](limEqn):\n mlStr := \+ addMathML(mlStr,rhs(limEqn)):\n hint := Hint(limEqn): \n e nd do:\n\n steps := [op(steps),limEqn]:\n\n infoStr := \"Exp orting the complete solution\":\n Set('info'=infoStr):\n Set ('ML'=mlStr):\n infoStr := \"A complete solution is displayed\": \n Set('info'=infoStr): \n\n end if: # end if nops(hint)=0\n \+ \n \n end use:\nend proc: # showAllSteps\n\n################# ###########################################\n\n####################### #####################################\n# pre: name is a valid limit ru le \n# fun is in a valid algebraic expression or function \n# pos t: pop up a Window with the description of the rule 'name'\n\naboutRul e := proc(name,fun)\n local eqn, limEqn, understoodRules:\n \n use S tudent:-Calculus1, Maplets:-Tools in\n\n understoodRules := rhs(Und erstand(Limit)):\n Understand(Limit,'none'):\n\n limEqn := Limit (fun,x='a'): \n eqn := limEqn=rhs(Rule[name](limEqn)): \n \n S et('ruleWin(title)'=cat(convert(name,string),\" rule\")):\n Set('ML _rule'=MathML:-ExportPresentation(eqn)):\n\n Understand(Limit, op(u nderstoodRules)): \n \n end use: \nend proc: # end aboutRule\n\n## ##########################################################\n\n######## ####################################################\n# pre: aRule is \+ a valid limit rule\n# post: if ruleState=true, aRule is understood\n# \+ else, aRule is removed from understo0d limit rules\n\nchangeUnde rstoodRules := proc(aRule, ruleState)\n use Student:-Calculus1 in\n \+ if ruleState=true then \n Understand(Limit,aRule):\n else\n \+ forgetUnderstoodRule(aRule):\n end if:\n end use: \nend proc: # end changeUnderstoodRules\n\n###################################### ######################\n\n############################################ ################\n# pre: aRule is a valid limit rule \n# post: aRule i s removed from understood limit rules\n\nforgetUnderstoodRule := proc( aRule)\n local rules:\n use Student:-Calculus1 in\n rules := rhs( Understand(Limit)):\n rules := subs(aRule=NULL,rules):\n Underst and(Limit,'none'):\n if nops(rules)>0 then\n Understand(Limit, op(rules));\n end if:\n end use:\nend proc:\n\n################### #########################################\n\n######################### ###################################\n# pre: null\n# post: clears the h istoric record of all steps\n\nclearSteps := proc()\n use Student:-Ca lculus1, Maplets:-Tools in\n Set('ML'=\"\"): Set('info'=\"\"): Set( 'TB_args'=\"\"): \n Clear(all): steps:=[]:\n end use:\nend proc: # end clearSteps()\n\n################################################# ###########\n\n####################################################### #####\n# pre: Maple 8 or higher is installed\n# post: run Step-by-Step Limit Solver\n\nrunLimMaplet := proc()\n\nlocal maplet, bc, dc, lc:\n bc := 'background'=\"#DDFFFF\":\ndc := 'background'=\"#CCFFFF\":\nlc : = 'background'=\"#EEFFFF\":\n\nuse Maplets, Maplets:-Elements, Student :-Calculus1 in\n\nmaplet := Maplet( \n 'onstartup'=RunWindow('limWin' ),\n\n Font['F1'](\"Default\", 'bold'='true', 'size'=14),\n\n######## ####################################################\n \n Window['li mWin']( 'menubar'='limMB',\n 'resizable'='false', \n 'title'=\"L imit Rules: Step-by-Step Problem Solver\",\n BoxColumn(bc, \n\n \+ BoxRow('border'='true','inset'=0,'spacing'=0, \n 'caption'= \"Enter a function\", bc, \n Label('caption'=\"Function \", b c, 'font'=F1),\n TextField['TF_fun']('value'=x*cos(x)+3*x^2,'wi dth'=20, 'onchange'='A', lc),\n Label('caption'=\" Variable \+ \", bc, 'font'=F1), \n TextField['TF_var'](\" x\", 'width'=2,'o nchange'='A', lc),\n Label('caption'=\" at \", bc, 'font'=F1) ,\n ComboBox[CB]('value'=\" Pi\",'onchange'='A', \n \+ [\"0\",\"infinity\",\"-infinity\"], lc),\n Label('cap tion'=\" Direction \", bc, 'font'=F1),\n DropDownBox[DDB]('va lue'=\"\",'onchange'='A',\n [\"\",\"left\",\"r ight\"], lc) \n ), # end BoxRow\n\n BoxRow('inset'=0,'spaci ng'=0, bc, \n BoxColumn('border'='true', 'inset'=0, 'spacing'=0 , \n 'caption'=\"Problem Status\", bc, \n BoxRow(Mat hMLViewer['ML']('height'=470, 'width'=400, lc), bc),\n BoxRow ('halign'='right', bc,\n Button(\"Start\", \n \+ 'onclick'=Evaluate('function'='startRule()'),\n 'tooltip' =\"Initialize limit problem\", lc),\n Button(\"Final Ans\", \n 'onclick'=Evaluate('function'='getFinalAnswer()'),\n \+ 'tooltip'=\"Display the final answer\", lc), \n \+ Button(\"All Steps\", \n 'onclick'=Evaluate('function'= 'showAllSteps()'),\n 'tooltip'=\"Display the complete sol ution\", lc),\n Button(\"Clear\", \n 'onclick' =Evaluate('function'='clearSteps()'),\n 'tooltip'=\"Clear output and problem history\", lc),\n Button(\"Close\", Shu tdown(), 'tooltip'=\"Close\", lc) \n ) # end BoxRow\n \+ ), # end BoxColumn\n\n BoxColumn('inset'=0, 'inset'=0, 'spacing '=0, bc, \n\n BoxRow('border'='true', 'caption'=\"Messages\", \n 'inset'=0, 'spacing'=0, bc, \n BoxCell (\n TextBox['info']('editable'='false',\n \+ 'value'=\"\", lc, \n 'tooltip'=\"Messages\", \n \+ 'height'=4, 'width'=24 \n ) # end TextBox\n \+ ) # end BoxCell\n ), # end BoxRow \n\n \+ BoxRow('border'='true', 'caption'=\"Hints\", \n 'in set'=0, 'spacing'=10, bc, \n BoxCell(Button['B_getHint']( \"Obtain a Hint\", \n 'onclick'=Evaluate('function'= 'getHint()'), \n 'tooltip'=\"Receive a hint\", lc)), \n BoxCell(Button['B_applyHint'](\"Apply the Hint\", \n \+ 'onclick'=Evaluate('function'='applyHint()'), \n \+ 'tooltip'=\"Apply the hint\", lc))\n ), # end Box Row\n\n BoxColumn('border'='true', 'inset'=0, 'spacing'=0,\n \+ 'caption'=\"Limit Rules\", bc, \n BoxRo w('halign'='left', 'inset'=0, 'spacing'=4, bc,\n BoxCell( 'halign'='left',\n Button['B_constant'](\" Constant \", lc, \n Evaluate('function'='applyRule(constant)'), \+ \n 'tooltip'=\"Apply constant rule: L(c)=c\")\n \+ ), # BoxCell\n BoxCell('halign'='left',\n \+ Button['B_constantmultiple'](\" Constant Multiple \", lc, \n \+ Evaluate('function'='applyRule(constantmultiple)'), \+ \n 'tooltip'=\"Apply constant multiple rule: L(c*f(x) ) = c*L(f(x))\")\n ) # BoxCell\n ), # BoxRow\n \n BoxRow('halign'='left', 'inset'=0, 'spacing'=2, bc, \n \+ BoxCell('halign'='left',\n Button['B_identi ty'](\"Identity\", lc, \n Evaluate('function'='apply Rule(identity)'), \n 'tooltip'=\"Apply identity rule: L(x) = a\")\n ), # BoxCell\n BoxCell('halign '='left',\n Button['B_sum'](\"Sum\", lc, \n \+ Evaluate('function'='applyRule(sum)'), \n 'tool tip'=\"Apply sum rule: L(f(x)+g(x)) = L(f(x)) + L(g(x))\")\n \+ ), # BoxCell\n BoxCell('halign'='left',\n \+ Button['B_difference'](\"Difference\", lc, \n Eva luate('function'='applyRule(difference)'), \n 'toolti p'=\"Apply difference rule: L(f(x)-g(x)) = L(f(x)) - L(g(x))\")\n \+ ) # BoxCell\n ), # BoxRow\n\n BoxRow('h align'='left', 'inset'=0, 'spacing'=1, bc,\n BoxCell('hal ign'='left',\n Button['B_product'](\"Product\", lc, \n \+ Evaluate('function'='applyRule(product)'), \n \+ 'tooltip'=\"Apply product rule: L(f(x)*g(x)) = L(f(x)) * L(g (x))\")\n ), # BoxCell\n BoxCell('halign'='l eft', \n Button['B_quotient'](\"Quotient\", lc, \n \+ Evaluate('function'='applyRule(quotient)'), \n \+ 'tooltip'=\"Apply quotient rule: L(f(x)/g(x)) = L(f(x)) / L(g(x ))\")\n ), # end BoxCell\n BoxCell('halign'= 'left',\n Button['B_power'](\"Power\", lc, \n \+ Evaluate('function'='applyRule(power)'), \n ' tooltip'=\"Apply power rule: L(f(x)^g(x)) = L(f(x)) ^ L(g(x))\")\n \+ ) # BoxCell\n ) # end BoxRow\n ), # end \+ BoxColumn\n\n BoxColumn('border'='true', 'inset'=0, 'spacing' =0,\n 'caption'=\"Function Rules\", bc, \n \+ BoxRow('halign'='left', 'inset'=0, 'spacing'=0, bc, \n \+ Label('caption'=\"Enter a Function: \", bc),\n TextF ield['TF_mathfunc']('width'=7, lc)\n ), # end BoxRow\n \+ BoxRow('halign'='left', 'inset'=0, 'spacing'=5, bc, \n \+ Button['B_applyMathFunc'](\"Apply\",\n 'onclic k'='A_mathfunc', lc,\n 'tooltip'=\"Apply the math func tion\"),\n Button['B_selectMathfunc'](\"Select a Functio n\", \n 'onclick'=RunWindow('mathfuncWin'), lc, \n \+ 'tooltip'=\"Select a math function\" )\n ) # en d BoxRow\n ), # end BoxColumn\n\n BoxColumn('border' ='true', 'inset'=0, 'spacing'=0,\n 'caption'=\"Rul es with Arguments\", bc, \n BoxCell(\n TextBox ['TB_args'](\n 'value'=\"\", lc,\n 'tool tip'=\"Arguments for the rule\", \n 'height'=2, 'width '=16 \n ) # end TextBox\n ), # end BoxCell\n\n BoxRow('halign'='left', 'inset'=0, 'spacing'=0, bc, \n \+ BoxCell('halign'='left',\n Button['B_lhopital '](\"L'Hopital's\", lc, \n 'onclick'=Evaluate('functi on'='applyRuleWithArgs(lhopital)'), \n 'tooltip'=\"Ap ply l'Hopital's rule: Enter the numerator\")\n ), # BoxCe ll\n BoxCell('halign'='left',\n Button['B_ rewrite'](\" Rewrite\", lc, \n 'onclick'=Evaluate('fu nction'='applyRuleWithArgs(rewrite)'), \n 'tooltip'= \"Change the form of the limit expression: Enter the substitution equa tions\")\n ), # BoxCell\n BoxCell('halign'=' left',\n Button['B_change'](\" Change \", lc, \n \+ 'onclick'=Evaluate('function'='applyRuleWithArgs(change)'), \n 'tooltip'=\"Change the variable of the limit: Ent er the relationship equation between the current and new variables\") \n ) # BoxCell\n ) # BoxRow\n\n ) # e nd BoxColumn \n\n ) # end BoxColumn \n ) # end BoxR ow\n\n ) # end BoxColumn\n ), # end Window\n\n#################### ########################################\n\n Window['mathfuncWin']('r esizable'='false',\n 'title'=\"Select a Mathematical Function\",\n \+ 'defaultbutton'='B_close2',\n BoxColumn(bc, \n\n BoxRow('bo rder'='true', 'inset'=1, 'spacing'=5, bc, \n 'caption'=\"Expone ntial and Logarithmic Functions\", \n Button['B_exp'](\"Natural Exponential\", lc,\n 'onclick'=Action(\n SetOpti on('TF_mathfunc'=\"exp\"),\n CloseWindow('mathfuncWin'), \+ \n Evaluate('function'='applyRule(exp)')) \n ), # e nd Button exp\n Button['B_ln'](\"Natural Logarithm\", lc,\n \+ 'onclick'=Action(\n SetOption('TF_mathfunc'=\"ln\"), \n CloseWindow('mathfuncWin'), \n Evaluate('fu nction'='applyRule(ln)')) \n ) # end Button ln\n ), # end \+ BoxRow\n\n GridLayout('border'='true', 'inset'=1, bc, \n ' caption'=\"Trigonometric, Hyperbolic Functions, and their Inverses\", \n\n GridRow(\n GridCell(Button['B_sin'](\" sin \+ \", lc,\n 'onclick'=Action(\n SetOption('TF_m athfunc'=\"sin\"),\n CloseWindow('mathfuncWin'), \n \+ Evaluate('function'='applyRule(sin)') ) \n )), # en d Button/GridCell\n GridCell(Button['B_cos'](\" cos \", \+ lc,\n 'onclick'=Action(\n SetOption('TF_mathfu nc'=\"cos\"),\n CloseWindow('mathfuncWin'), \n \+ Evaluate('function'='applyRule(cos)')) \n )), # end Button /GridCell\n GridCell(Button['B_tan'](\" tan \", lc,\n \+ 'onclick'=Action(\n SetOption('TF_mathfunc'=\"t an\"),\n CloseWindow('mathfuncWin'), \n Ev aluate('function'='applyRule(tan)') ) \n )), # end Button/Gr idCell\n GridCell(Button['B_cot'](\" cot \", lc,\n \+ 'onclick'=Action(\n SetOption('TF_mathfunc'=\"cot \"),\n CloseWindow('mathfuncWin'), \n Eval uate('function'='applyRule(cot)') ) \n )), # end Button/GridC ell\n GridCell(Button['B_sec'](\" sec \", lc,\n \+ 'onclick'=Action(\n SetOption('TF_mathfunc'=\"sec\"), \n CloseWindow('mathfuncWin'), \n Evaluate ('function'='applyRule(sec)') ) \n )), # end Button/GridCell \n GridCell(Button['B_csc'](\" csc \", lc,\n \+ 'onclick'=Action(\n SetOption('TF_mathfunc'=\"csc\"),\n \+ CloseWindow('mathfuncWin'), \n Evaluate('f unction'='applyRule(csc)') ) \n )) # end Button/GridCell\n \+ ), # end GridRow\n \n GridRow(\n GridCell(But ton['B_arcsin'](\" arcsin \", lc,\n 'onclick'=Action(\n \+ SetOption('TF_mathfunc'=\"arcsin\"),\n CloseW indow('mathfuncWin'), \n Evaluate('function'='applyRule( arcsin)') ) \n )), # end Button/GridCell\n GridCell( Button['B_arccos'](\" arccos \", lc,\n 'onclick'=Action(\n \+ SetOption('TF_mathfunc'=\"arccos\"),\n Clo seWindow('mathfuncWin'), \n Evaluate('function'='applyRu le(arccos)') ) \n )), # end Button/GridCell\n GridCe ll(Button['B_arctan'](\" arctan \", lc,\n 'onclick'=Action( \n SetOption('TF_mathfunc'=\"arctan\"),\n \+ CloseWindow('mathfuncWin'), \n Evaluate('function'='appl yRule(arctan)') ) \n )), # end Button/GridCell\n Gri dCell(Button['B_arccot'](\" arccot \", lc,\n 'onclick'=Acti on(\n SetOption('TF_mathfunc'=\"arccot\"),\n \+ CloseWindow('mathfuncWin'), \n Evaluate('function'='a pplyRule(arccot)') ) \n )), # end Button/GridCell\n \+ GridCell(Button['B_arcsec'](\" arcsec \", lc,\n 'onclick'=A ction(\n SetOption('TF_mathfunc'=\"arcsec\"),\n \+ CloseWindow('mathfuncWin'), \n Evaluate('function' ='applyRule(arcsec)') ) \n )), # end Button/GridCell\n \+ GridCell(Button['B_arccsc'](\" arccsc \", lc,\n 'onclick '=Action(\n SetOption('TF_mathfunc'=\"arccsc\"),\n \+ CloseWindow('mathfuncWin'), \n Evaluate('functi on'='applyRule(arccsc)') ) \n )) # end Button/GridCell\n \+ ), # end GridRow\n \n GridRow(\n GridCell(Button[ 'B_sinh'](\" sinh \", lc,\n 'onclick'=Action(\n \+ SetOption('TF_mathfunc'=\"sinh\"),\n CloseWindow(' mathfuncWin'), \n Evaluate('function'='applyRule(sinh)') ) \n )), # end Button/GridCell\n GridCell(Button['B _cosh'](\" cosh \", lc,\n 'onclick'=Action(\n \+ SetOption('TF_mathfunc'=\"cosh\"),\n CloseWindow('ma thfuncWin'), \n Evaluate('function'='applyRule(cosh)') ) \n )), # end Button/GridCell\n GridCell(Button['B_t anh'](\" tanh \", lc,\n 'onclick'=Action(\n \+ SetOption('TF_mathfunc'=\"tanh\"),\n CloseWindow('math funcWin'), \n Evaluate('function'='applyRule(tanh)') ) \+ \n )), # end Button/GridCell\n GridCell(Button['B_co th'](\" coth \", lc,\n 'onclick'=Action(\n \+ SetOption('TF_mathfunc'=\"coth\"),\n CloseWindow('mathf uncWin'), \n Evaluate('function'='applyRule(coth)') ) \n )), # end Button/GridCell\n GridCell(Button['B_sech '](\" sech \", lc,\n 'onclick'=Action(\n S etOption('TF_mathfunc'=\"sech\"),\n CloseWindow('mathfun cWin'), \n Evaluate('function'='applyRule(sech)') ) \n \+ )), # end Button/GridCell\n GridCell(Button['B_csch'] (\" csch \", lc,\n 'onclick'=Action(\n Set Option('TF_mathfunc'=\"csch\"),\n CloseWindow('mathfuncW in'), \n Evaluate('function'='applyRule(csch)') ) \n \+ )) # end Button/GridCell\n ), # end GridRow\n\n Gr idRow(\n GridCell(Button['B_arcsinh'](\"arcsinh\", lc,\n \+ 'onclick'=Action(\n SetOption('TF_mathfunc'=\"arc sinh\"),\n CloseWindow('mathfuncWin'), \n \+ Evaluate('function'='applyRule(arcsinh)') ) \n )), # end Butt on/GridCell\n GridCell(Button['B_arccosh'](\"arccosh\", lc,\n 'onclick'=Action(\n SetOption('TF_mathfunc'= \"arccosh\"),\n CloseWindow('mathfuncWin'), \n \+ Evaluate('function'='applyRule(arccosh)') ) \n )), # end Button/GridCell\n GridCell(Button['B_arctanh'](\"arctanh\", \+ lc,\n 'onclick'=Action(\n SetOption('TF_mathf unc'=\"arctanh\"),\n CloseWindow('mathfuncWin'), \n \+ Evaluate('function'='applyRule(arctanh)') ) \n )), \+ # end Button/GridCell\n GridCell(Button['B_arccoth'](\"arccot h\", lc,\n 'onclick'=Action(\n SetOption('TF_ mathfunc'=\"arccoth\"),\n CloseWindow('mathfuncWin'), \n Evaluate('function'='applyRule(arccoth)') ) \n \+ )), # end Button/GridCell\n GridCell(Button['B_arcsech'](\"a rcsech\", lc,\n 'onclick'=Action(\n SetOption ('TF_mathfunc'=\"arcsech\"),\n CloseWindow('mathfuncWin' ), \n Evaluate('function'='applyRule(arcsech)') ) \n \+ )), # end Button/GridCell\n GridCell(Button['B_arccsch' ](\"arccsch\", lc,\n 'onclick'=Action(\n SetO ption('TF_mathfunc'=\"arccsch\"),\n CloseWindow('mathfun cWin'), \n Evaluate('function'='applyRule(arccsch)') ) \+ \n )) # end Button/GridCell\n ) # end GridRow\n\n \+ ), # end GridLayout\n\n BoxRow('border'='true', 'inset'=1, 'spac ing'=5, bc, \n 'caption'=\"Other Maple Mathematical Functions\" , \n Label('caption'=\"Enter a Maple mathematical function: \", bc),\n TextField['TF_other'](15, lc),\n Button['B_other '](\"Apply\",'onclick'='A_other', lc)\n ), # end BoxRow\n\n \+ BoxRow( Button['B_close2'](\"Close\",CloseWindow('mathfuncWin'), lc), \+ bc )\n\n ) # end BoxColumn\n ), # end Window\n \n################# ###########################################\n\n Window['cmdWin']('def aultbutton'='closeCmdWin',\n 'title'=\"Descriptions of l'Hopital's, Rewrite, and Change Rules\",\n 'resizable'='false',\n BoxColumn ('inset'=0, 'spacing'=0, bc, \n BoxColumn('inset'=0, 'spacing'=3, bc, \n BoxCell(\n TextBox['TB_cmd']('height'=12, 'wid th'=40, lc, \n 'editable'='false', \n 'value'= \"Click the button below to see the corresponding description.\"\n \+ ) # end TextBox\n ) # end BoxCell\n ), # end BoxColu mn \n BoxRow('inset'=10, 'spacing'=0, bc,\n Button['close CmdWin'](\"Close\", CloseWindow('cmdWin'), lc) \n ) # end BoxRow \n ) # end BoxColumn \n ), # end Window\n\n####################### #####################################\n\n Window['ruleWin'](\n 'ti tle'=\"Limit Rule\", 'resizable'='false',\n BoxColumn('inset'=0, 's pacing'=10, bc, \n BoxRow('inset'=0, 'spacing'=0, bc, \n \+ MathMLViewer['ML_rule']('width'=375, lc) \n ), # end BoxRow\n \+ BoxRow('inset'=0, 'spacing'=0, bc, \n Button(\"Close\",Close Window('ruleWin'), lc)\n ) # end BoxRow\n ) # end BoxColumn\n \+ ), # end ruleWin\n\n################################################# ###########\n\n Window['helpWin']( 'resizable'='false',\n 'title'= \"Using the Step-by-Step Limit Problem Solver Maplet\",\n BoxColumn ('border'='true', 'inset'=0, 'spacing'=8, bc,\n BoxCell(\n \+ TextBox('height'=24, 'width'=40, lc,\n 'editable'='false', ' font'='F1', 'foreground'=\"#333399\",\n 'value'=helpStr\n \+ ) # end TextBox\n ), # end BoxCell\n BoxRow('inset'=0, ' spacing'=0, bc,\n Button(\"Close\", lc, \n CloseWindo w('helpWin'))\n ) # end BoxRow\n ) # end BoxColumn\n ), # end helpWin\n\n########################################################## ##\n\n MenuBar['limMB'](\n\n Menu(\"File\",\n MenuItem(\"Star t to Solve\", \n 'onclick'=Evaluate('function'='startRule()')), \n MenuItem(\"Final Answer\", \n 'onclick'=Evaluate('funct ion'='getFinalAnswer()')),\n MenuItem(\"Show All Steps\", \n \+ 'onclick'=Evaluate('function'='showAllSteps()')),\n MenuSepara tor(),\n MenuItem(\"Obtain a Hint\", \n 'onclick'=Evaluate ('function'='getHint()')),\n MenuItem(\"Apply the Hint\", \n \+ 'onclick'=Evaluate('function'='applyHint()')),\n MenuSeparator (),\n MenuItem(\"Clear\", \n 'onclick'=Evaluate('function' ='clearSteps()')),\n MenuSeparator(),\n MenuItem(\"Close\", \+ Shutdown())\n ), # end Menu/File\n \n Menu(\"Rule Definition\" ,\n MenuItem(\"Constant Rule\", 'onclick'='A_i_constant'),\n \+ MenuItem(\"Constant Multiple Rule\", 'onclick'='A_i_constantmultiple' ),\n MenuSeparator(),\n MenuItem(\"Identity Rule\", 'onclick '='A_i_identity'),\n MenuItem(\"Power Rule\", 'onclick'='A_i_powe r'),\n MenuSeparator(),\n MenuItem(\"Sum Rule\", 'onclick'=' A_i_sum'),\n MenuItem(\"Difference Rule\", 'onclick'='A_i_differe nce'),\n MenuSeparator(),\n MenuItem(\"Product Rule\", 'oncl ick'='A_i_product'),\n MenuItem(\"Quotient Rule\", 'onclick'='A_i _quotient'),\n MenuSeparator(),\n MenuItem(\"Natural Exponen tial\", 'onclick'='A_i_exp'),\n MenuItem(\"Natural Logarithm\",'o nclick'='A_i_ln'),\n MenuSeparator(),\n Menu(\"Trigonometric Functions\",\n MenuItem(\"sin\",'onclick'='A_i_sin'),\n \+ MenuItem(\"cos\",'onclick'='A_i_cos'),\n MenuItem(\"tan\",'onc lick'='A_i_tan'),\n MenuItem(\"cot\",'onclick'='A_i_cot'),\n \+ MenuItem(\"sec\",'onclick'='A_i_sec'),\n MenuItem(\"csc\", 'onclick'='A_i_csc')\n ), # end Menu/Trig\n Menu(\"Inverse T rigonometric Functions\",\n MenuItem(\"arcsin\",'onclick'='A_i_ arcsin'),\n MenuItem(\"arccos\",'onclick'='A_i_arccos'),\n \+ MenuItem(\"arctan\",'onclick'='A_i_arctan'),\n MenuItem(\"ar ccot\",'onclick'='A_i_arccot'),\n MenuItem(\"arcsec\",'onclick' ='A_i_arcsec'),\n MenuItem(\"arccsc\",'onclick'='A_i_arccsc')\n ), # end Menu/Inverse Trig\n Menu(\"Hyperbolic Functions\", \n MenuItem(\"sinh\",'onclick'='A_i_sinh'),\n MenuItem( \"cosh\",'onclick'='A_i_cosh'),\n MenuItem(\"tanh\",'onclick'=' A_i_tanh'),\n MenuItem(\"coth\",'onclick'='A_i_coth'),\n \+ MenuItem(\"sech\",'onclick'='A_i_sech'),\n MenuItem(\"csch\",' onclick'='A_i_csch')\n ), # end Menu/Hyperbolic \n Menu(\"In verse Hyperbolic Functions\",\n MenuItem(\"arcsinh\",'onclick'= 'A_i_arcsinh'),\n MenuItem(\"arccosh\",'onclick'='A_i_arccosh') ,\n MenuItem(\"arctanh\",'onclick'='A_i_arctanh'),\n Men uItem(\"arccoth\",'onclick'='A_i_arccoth'),\n MenuItem(\"arcsec h\",'onclick'='A_i_arcsech'),\n MenuItem(\"arccsch\",'onclick'= 'A_i_arccsch')\n ), # end Menu/Inverse hyperbolic\n MenuSepa rator(),\n Menu(\"Rules with Arguments\", \n MenuItem(\"L' Hopital's\",\n 'onclick'='A_i_lhopitals'), \n MenuIt em(\"Rewrite\",\n 'onclick'='A_i_rewrite'),\n MenuItem (\"Change\",\n 'onclick'='A_i_change')\n ) # end Menu/R ules with Arguments\n\n ), # end Menu/Rule Definition\n \n\n\n\n \+ Menu(\"Apply the Rule\",\n MenuItem(\"Constant Rule\", \n \+ 'onclick'=Evaluate('function'='applyRule(constant)')),\n MenuItem (\"Constant Multiple Rule\", \n 'onclick'=Evaluate('function'=' applyRule(constantmultiple)')),\n MenuSeparator(),\n MenuIte m(\"Identity Rule\", \n 'onclick'=Evaluate('function'='applyRul e(identity)')),\n MenuItem(\"Power Rule\", \n 'onclick'=Ev aluate('function'='applyRule(power)')),\n MenuSeparator(),\n \+ MenuItem(\"Sum Rule\", \n 'onclick'=Evaluate('function'='apply Rule(sum)')),\n MenuItem(\"Difference Rule\", \n 'onclick' =Evaluate('function'='applyRule(difference)')),\n MenuSeparator() ,\n MenuItem(\"Product Rule\", \n 'onclick'=Evaluate('func tion'='applyRule(product)')),\n MenuItem(\"Quotient Rule\", \n \+ 'onclick'=Evaluate('function'='applyRule(quotient)')),\n Men uSeparator(),\n MenuItem(\"Natural Exponential\",\n 'oncli ck'=Evaluate('function'='applyRule(exp)')),\n MenuItem(\"Natural \+ Logorithm\", \n 'onclick'=Evaluate('function'='applyRule(ln)')) ,\n MenuSeparator(),\n Menu(\"Trigonometric Functions\",\n \+ MenuItem(\"sin\",\n 'onclick'=Evaluate('function'='appl yRule(sin)')),\n MenuItem(\"cos\",\n 'onclick'=Evaluat e('function'='applyRule(cos)')),\n MenuItem(\"tan\",\n \+ 'onclick'=Evaluate('function'='applyRule(tan)')),\n MenuItem( \"cot\",\n 'onclick'=Evaluate('function'='applyRule(cot)')), \n MenuItem(\"sec\",\n 'onclick'=Evaluate('function'=' applyRule(sec)')),\n MenuItem(\"csc\",\n 'onclick'=Eva luate('function'='applyRule(csc)'))\n ), # end Menu/Trig\n M enu(\"Inverse Trigonometric Functions\",\n MenuItem(\"arcsin\", \n 'onclick'=Evaluate('function'='applyRule(arcsin)')),\n \+ MenuItem(\"arccos\",\n 'onclick'=Evaluate('function'='app lyRule(arccos)')),\n MenuItem(\"arctan\",\n 'onclick'= Evaluate('function'='applyRule(arctan)')),\n MenuItem(\"arccot \",\n 'onclick'=Evaluate('function'='applyRule(arccot)')),\n \+ MenuItem(\"arcsec\",\n 'onclick'=Evaluate('function'=' applyRule(arcsec)')),\n MenuItem(\"arccsc\",\n 'onclic k'=Evaluate('function'='applyRule(arccsc)'))\n ), # end Menu/Inve rse Trig\n Menu(\"Hyperbolic Functions\",\n MenuItem(\"sin h\",\n 'onclick'=Evaluate('function'='applyRule(sinh)')),\n \+ MenuItem(\"cosh\",\n 'onclick'=Evaluate('function'='app lyRule(cosh)')),\n MenuItem(\"tanh\",\n 'onclick'=Eval uate('function'='applyRule(tanh)')),\n MenuItem(\"coth\",\n \+ 'onclick'=Evaluate('function'='applyRule(coth)')),\n Menu Item(\"sech\",\n 'onclick'=Evaluate('function'='applyRule(sec h)')),\n MenuItem(\"csch\",\n 'onclick'=Evaluate('func tion'='applyRule(csch)'))\n ), # end Menu/Hyperbolic \n Menu (\"Inverse Hyperbolic Functions\",\n MenuItem(\"arcsinh\",\n \+ 'onclick'=Evaluate('function'='applyRule(arcsinh)')),\n \+ MenuItem(\"arccosh\",\n 'onclick'=Evaluate('function'='applyR ule(arccosh)')),\n MenuItem(\"arctanh\",\n 'onclick'=E valuate('function'='applyRule(arctanh)')),\n MenuItem(\"arccoth \",\n 'onclick'=Evaluate('function'='applyRule(arccoth)')),\n MenuItem(\"arcsech\",\n 'onclick'=Evaluate('function' ='applyRule(arcsech)')),\n MenuItem(\"arccsch\",\n 'on click'=Evaluate('function'='applyRule(arccsch)'))\n ) # end Menu/ Inverse hyperbolic\n ), # end Menu/Apply Rules\n\n Menu(\"Unders tood Rules\",\n CheckBoxMenuItem['CMI_constant'](\"Constant Rule \", \n 'onclick'=Evaluate('function'='changeUnderstoodRules(con stant,CMI_constant)') ),\n CheckBoxMenuItem['CMI_constantmultiple '](\"Constant Multiple Rule\",\n 'onclick'=Evaluate('function'= \n 'changeUnderstoodRules(constantmultiple,CMI_constan tmultiple)') ),\n MenuSeparator(),\n\n CheckBoxMenuItem['CMI _identity'](\"Identity Rule\", \n 'onclick'=Evaluate('function' ='changeUnderstoodRules(identity,CMI_identity)') ),\n CheckBoxMen uItem['CMI_power'](\"Power Rule\", \n 'onclick'=Evaluate('func tion'='changeUnderstoodRules(power,CMI_power)') ),\n MenuSeparato r(),\n\n CheckBoxMenuItem['CMI_sum'](\"Sum Rule\", \n 'onc lick'=Evaluate('function'='changeUnderstoodRules(sum,CMI_sum)') ),\n \+ CheckBoxMenuItem['CMI_difference'](\"Difference Rule\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(difference,CMI_su m)') ),\n MenuSeparator(), \n\n CheckBoxMenuItem['CMI_produc t'](\"Product Rule\", \n 'onclick'=Evaluate('function'='changeU nderstoodRules(product,CMI_product)') ),\n CheckBoxMenuItem['CMI_ quotient'](\"Quotient Rule\", \n 'onclick'=Evaluate('function'= 'changeUnderstoodRules(quotient,CMI_quotient)') ),\n MenuSeparato r(),\n\n CheckBoxMenuItem['CMI_exp'](\"Natural Exponential\", \n 'onclick'=Evaluate('function'='changeUnderstoodRules(exp,CMI_e xp)') ),\n CheckBoxMenuItem['CMI_ln'](\"Natural Logarithm\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(ln,CMI_ln)' ) ),\n MenuSeparator(),\n\n Menu(\"Trigonometric Functions\" ,\n CheckBoxMenuItem['CMI_sin'](\"sin\", \n 'onclick'= Evaluate('function'='changeUnderstoodRules(sin,CMI_sin)') ),\n \+ CheckBoxMenuItem['CMI_cos'](\"cos\", \n 'onclick'=Evaluate('f unction'='changeUnderstoodRules(cos,CMI_cos)')),\n CheckBoxMenu Item['CMI_tan'](\"tan\", \n 'onclick'=Evaluate('function'='ch angeUnderstoodRules(tan,CMI_tan)') ),\n CheckBoxMenuItem['CMI_c ot'](\"cot\", \n 'onclick'=Evaluate('function'='changeUnderst oodRules(cot,CMI_cot)') ),\n CheckBoxMenuItem['CMI_sec'](\"sec \", \n 'onclick'=Evaluate('function'='changeUnderstoodRules(s ec,CMI_sec)') ),\n CheckBoxMenuItem['CMI_csc'](\"csc\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(csc,CMI_csc) ') )\n ), # end Menu/Trig\n\n Menu(\"Inverse Trigonometric F unctions\",\n CheckBoxMenuItem['CMI_arcsin'](\"arcsin\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(arcsin,CMI_ arcsin)') ),\n CheckBoxMenuItem['CMI_arccos'](\"arccos\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(arccos,CMI _arccos)') ),\n CheckBoxMenuItem['CMI_arctan'](\"arctan\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(arctan,CM I_arctan)') ),\n CheckBoxMenuItem['CMI_arccot'](\"arccot\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(arccot,C MI_arccot)') ),\n CheckBoxMenuItem['CMI_arcsec'](\"arcsec\", \n 'onclick'=Evaluate('function'='changeUnderstoodRules(arcsec, CMI_arcsec)') ),\n CheckBoxMenuItem['CMI_arccsc'](\"arccsc\", \+ \n 'onclick'=Evaluate('function'='changeUnderstoodRules(arccs c,CMI_arccsc)') )\n ), # end Menu/Inverse Trig\n\n Menu(\"Hy perbolic Functions\",\n CheckBoxMenuItem['CMI_sinh'](\"sinh\", \+ \n 'onclick'=Evaluate('function'='changeUnderstoodRules(sinh, CMI_sinh)') ),\n CheckBoxMenuItem['CMI_cosh'](\"cosh\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(cosh,CMI_cos h)') ),\n CheckBoxMenuItem['CMI_tanh'](\"tanh\", \n 'o nclick'=Evaluate('function'='changeUnderstoodRules(tanh,CMI_tanh)') ), \n CheckBoxMenuItem['CMI_coth'](\"coth\", \n 'onclick' =Evaluate('function'='changeUnderstoodRules(coth,CMI_coth)') ),\n \+ CheckBoxMenuItem['CMI_sech'](\"sech\", \n 'onclick'=Evalua te('function'='changeUnderstoodRules(sech,CMI_sech)') ),\n Chec kBoxMenuItem['CMI_csch'](\"csch\", \n 'onclick'=Evaluate('fun ction'='changeUnderstoodRules(csch,CMI_csch)') )\n ), # end Menu/ Hyperbolic \n\n Menu(\"Inverse Hyperbolic Functions\",\n \+ CheckBoxMenuItem['CMI_arcsinh'](\"arcsinh\", \n 'onclick'=Eva luate('function'='changeUnderstoodRules(arcsinh,CMI_arcsinh)') ),\n \+ CheckBoxMenuItem['CMI_arccosh'](\"arccosh\", \n 'onclick '=Evaluate('function'='changeUnderstoodRules(arccosh,CMI_arccosh)') ), \n CheckBoxMenuItem['CMI_arctanh'](\"arctanh\", \n 'on click'=Evaluate('function'='changeUnderstoodRules(arctanh,CMI_arctanh) ') ),\n CheckBoxMenuItem['CMI_arccoth'](\"arccoth\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(arccoth,CMI_arc coth)') ),\n CheckBoxMenuItem['CMI_arcsech'](\"arcsech\", \n \+ 'onclick'=Evaluate('function'='changeUnderstoodRules(arccoth,CM I_arccoth)') ),\n CheckBoxMenuItem['CMI_arccsch'](\"arccsch\", \+ \n 'onclick'=Evaluate('function'='changeUnderstoodRules(arcco th,CMI_arccoth)') )\n ) # end Menu/Inverse hyperbolic\n \n ), # end Menu/Understood Rules\n \n Menu(\"Help\",\n MenuItem(\" Using this Maplet\", 'onclick'=RunWindow('helpWin'))\n ) # end Menu /Help\n\n ), # end MenuBar\n\n####################################### #####################\n\n Action['A_other'](\n SetOption('target'= 'TF_mathfunc',Argument('TF_other')),\n CloseWindow('mathfuncWin'), \+ \n Evaluate('function'='applyOtherRule()') \n ), # end A_other\n \n Action['A_mathfunc'](\n Evaluate('function'='applyMathFuncRule( )') \n ), # end A_mathfunc\n\n###################################### ######################\n\n Action['A_i_constant'](\n Evaluate('fun ction'='aboutRule(constant, c)'),\n RunWindow('ruleWin')\n ), # en d A_i_constant\n \n Action['A_i_constantmultiple'](\n Evaluate('fu nction'='aboutRule(constantmultiple, c*f(x))'),\n RunWindow('ruleWi n')\n ), # end A_i_constantmultiple\n \n Action['A_i_sum'](\n Ev aluate('function'='aboutRule(sum,f(x)+g(x))'),\n RunWindow('ruleWin ') \n ), # end A_i_sum\n\n Action['A_i_difference'](\n Evaluate( 'function'='aboutRule(difference,f(x)-g(x))'),\n RunWindow('ruleWin ') \n ), # end A_i_difference\n \n Action['A_i_identity'](\n Ev aluate('function'='aboutRule(identity,x)'),\n RunWindow('ruleWin') \n ), # end A_i_identity\n \n Action['A_i_power'](\n Evaluate('f unction'='aboutRule(power,x^n)'),\n RunWindow('ruleWin')\n ), # en d A_i_power\n\n Action['A_i_product'](\n Evaluate('function'='abou tRule(product,f(x)*g(x))'),\n RunWindow('ruleWin')\n ), # end A_i_ product\n\n Action['A_i_quotient'](\n Evaluate('function'='aboutRu le(quotient,f(x)/g(x))'),\n RunWindow('ruleWin')\n ), # end A_i_qu otient\n\n Action['A_i_exp'](\n Evaluate('function'='aboutRule(exp ,exp(x))'),\n RunWindow('ruleWin')\n ), # end A_i_exp\n\n Action[ 'A_i_ln'](\n Evaluate('function'='aboutRule(ln,ln(x))'),\n RunWi ndow('ruleWin')\n ), # end A_i_ln\n\n Action['A_i_sin'](\n Evalua te('function'='aboutRule(sin,sin(x))'),\n RunWindow('ruleWin')\n ) , # end A_i_sin\n\n Action['A_i_cos'](\n Evaluate('function'='abou tRule(cos,cos(x))'),\n RunWindow('ruleWin')\n ), # end A_cos\n\n \+ Action['A_i_tan'](\n Evaluate('function'='aboutRule(tan,tan(x))'), \n RunWindow('ruleWin')\n ), # end A_i_tan\n\n Action['A_i_cot']( \n Evaluate('function'='aboutRule(cot,cot(x))'),\n RunWindow('ru leWin')\n ), # end A_i_cot\n\n Action['A_i_sec'](\n Evaluate('fun ction'='aboutRule(sec,sec(x))'),\n RunWindow('ruleWin')\n ), # end A_i_sec\n\n Action['A_i_csc'](\n Evaluate('function'='aboutRule(c sc,csc(x))'),\n RunWindow('ruleWin')\n ), # end A_i_csc\n\n Actio n['A_i_arcsin'](\n Evaluate('function'='aboutRule(arcsin,arcsin(x)) '),\n RunWindow('ruleWin')\n ), # end A_i_arcsin\n\n Action['A_i_ arccos'](\n Evaluate('function'='aboutRule(arccos,arccos(x))'),\n \+ RunWindow('ruleWin')\n ), # end A_i_cos\n\n Action['A_i_arctan']( \n Evaluate('function'='aboutRule(arctan,arctan(x))'),\n RunWind ow('ruleWin')\n ), # end A_i_arctan\n\n Action['A_i_arccot'](\n E valuate('function'='aboutRule(arccot,arccot(x))'),\n RunWindow('rul eWin')\n ), # end A_i_arccot\n\n Action['A_i_arcsec'](\n Evaluate ('function'='aboutRule(arcsec,arcsec(x))'),\n RunWindow('ruleWin') \n ), # end A_i_arcsec\n\n Action['A_i_arccsc'](\n Evaluate('func tion'='aboutRule(arccsc,arccsc(x))'),\n RunWindow('ruleWin')\n ), \+ # end A_i_arccsc\n\n Action['A_i_sinh'](\n Evaluate('function'='ab outRule(sinh,sinh(x))'),\n RunWindow('ruleWin')\n ), # end A_i_sin h\n\n Action['A_i_cosh'](\n Evaluate('function'='aboutRule(cosh,co sh(x))'),\n RunWindow('ruleWin')\n ), # end A_i_cosh\n\n Action[' A_i_tanh'](\n Evaluate('function'='aboutRule(tanh,tanh(x))'),\n \+ RunWindow('ruleWin')\n ), # end A_i_tanh\n\n Action['A_i_coth'](\n \+ Evaluate('function'='aboutRule(coth,coth(x))'),\n RunWindow('rule Win')\n ), # end A_i_coth\n\n Action['A_i_sech'](\n Evaluate('fun ction'='aboutRule(sech,sech(x))'),\n RunWindow('ruleWin')\n ), # e nd A_i_sech\n\n Action['A_i_csch'](\n Evaluate('function'='aboutRu le(csch,csch(x))'),\n RunWindow('ruleWin')\n ), # end A_i_csch\n\n Action['A_i_arcsinh'](\n Evaluate('function'='aboutRule(arcsinh,a rcsinh(x))'),\n RunWindow('ruleWin')\n ), # end A_i_arcsinh\n\n A ction['A_i_arccosh'](\n Evaluate('function'='aboutRule(arccosh,arcc osh(x))'),\n RunWindow('ruleWin')\n ), # end A_i_cosh\n\n Action[ 'A_i_arctanh'](\n Evaluate('function'='aboutRule(arctanh,arctanh(x) )'),\n RunWindow('ruleWin')\n ), # end A_i_arctanh\n\n Action['A_ i_arccoth'](\n Evaluate('function'='aboutRule(arccoth,arccoth(x))') ,\n RunWindow('ruleWin')\n ), # end A_i_arccoth\n\n Action['A_i_a rcsech'](\n Evaluate('function'='aboutRule(arcsech,arcsech(x))'),\n RunWindow('ruleWin')\n ), # end A_i_arcsech\n\n Action['A_i_arcc sch'](\n Evaluate('function'='aboutRule(arccsch,arccsch(x))'),\n \+ RunWindow('ruleWin')\n ), # end A_i_arccsch\n\n Action[A_i_lhopital s](\n RunWindow(cmdWin),\n SetOption('cmdWin(title)'=\"L'Hopital 's rule\"),\n SetOption('TB_cmd'=lhopitalStr)\n ), # end A_i_lhop itals\n\n Action[A_i_rewrite](\n RunWindow(cmdWin),\n SetOption ('cmdWin(title)'=\"Rewrite rule\"),\n SetOption('TB_cmd'=rewriteStr )\n ), # end A_i_rewrite\n\n Action[A_i_change](\n RunWindow(cmd Win),\n SetOption('cmdWin(title)'=\"Change rule\"),\n SetOption( 'TB_cmd'=changeStr)\n ), # end A_i_change\n\n####################### #####################################\n\n Action['A']()\n\n): # end \+ maplet\n\nUnderstand(Limit,none) :\nMaplets[Display](maplet) :\n\nend \+ use: # end use\nend proc: # end runLimMaplet\n\n###################### ######################################\n\n############################ ################################\n\nend module: # end LimMaplet()\nLim Maplet:-runLimMaplet();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{MARK "4" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }