{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 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 257 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 1 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 }} {SECT 0 {PARA 256 "" 0 "" {TEXT 256 50 "Calculus Exploration 4: Deriva tive Rules (D-Rules)" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT 257 284 "The following is the Maple code for the Derivative Ru les Maplet, which should be used to both explore the derivative rules \+ and obtain step-by-step solutions to problems using the derivative rul es. You can either execute the code below or run the corresponding Map let from the webpage." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 28 "Derivative Rules Maplet Code" }}{EXCHG {PARA 0 "" 0 "" {TEXT 258 36 "Click in red area and press [Enter]." } {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 54157 "# Step-by-Step D ifferentiation Problem Solver Maplet\n# Copyright 2002 Waterloo Maple \+ Inc.\n# This maplet guides the user through a differentiation problem. The user can apply differentiation rules one at a time to a function \+ f and view the resulting expression. The Messages box displays status \+ information. \n# \n# The user enters a function with its independent variable. The user can apply differentiation rules, for example, the \+ sum rule (D(f+g) = D(f) + D(g)), the chain rule (D(f(g(x)) = D(f)(g(x) )* D(g)(x)), and rules for special functions such as D(sin(x))=cos(x). When the user applies a rule, the Problem Status box is updated with \+ the result of the applied rule.\n# \n# At any time, the user can reque st a hint for the next rule to apply, and then apply the hint. \n# \n # The user can also specify that a set of rules is understood, in whic h case those rules are automatically applied (when possible).\n# \n# T he user can rewrite a problem in a more convenient form. The rewrite r ule is useful for an expression like \nx^x;# , which can be rewritten \+ as \nexp(x*ln(x));# . \n# \n# At any time, the user can display all s olution steps in the solution or display the final answer.\n# \n# To r un this maplet, click the Execute (!!!) button in the context bar.\n# \+ \nrestart;\nDiffMaplet := module() \n\n############################### #############################\n\n\n################################### #########################\n\nexport iniMathML, addMathML, runDiffMaple t, \n startRule, applyRule, diffAllSteps, \n clearSteps, g etHint, applyHint, aboutRule,\n changeUnderstoodRules, removeRul e,\n getFinalResult, applyOtherRule, applyRewriteRule:\nlocal re writeStr, helpStr, steps:\nsteps := []:\n\n########################### #################################\n\n################################# ###########################\n\nrewriteStr :=\n\"This differentiation r ule requires parameters. This rule is used to change the form of the e xpression being differentiated. It has the general form: \n [rewrite, \+ f1(x) = g1(x), f2(x) = g2(x), ...]\nThe effect of applying the rewrite rule is to perform each of the substitutions listed as the parameters to the rule, where occurrences of the left-hand side of each substitu tion are replaced by the corresponding right-hand side. \nThe main app lication of this rule is to rewrite an expression of the form f(x)^g(x ), where the exponent (at least) depends on the differentiation variab le, as an exponential. The rule would thus be given as: \n [rewrite, f (x)^g(x) = exp(g(x) * ln(f(x))) ]\":\n\n############################## ##############################\n\n#################################### ########################\n\nhelpStr := \n\"This maplet guides you thro ugh a differentiation problem. You can apply differentiation rules on e at a time to a function f and view the resulting expression. At any step of the problem, you can request a hint for the next rule to appl y. You can also specify that you understand a set of rules, in which \+ case those rules are automatically applied (when possible).\n\nEnter a function with its independent variable. Click the 'Start' button. Thi s clears the problem history and starts a new one.\n\nTo apply differe ntiation rules, click the corresponding buttons or select rules from t he 'Apply the Rule' menu. Rules include the sum rule (D(f+g) = D(f) + \+ D(g)), the chain rule (D(f(g(x))) = D(f)(g(x))* D(g)(x)), and rules fo r special functions like D(sin(x))=cos(x).\nYou can also rewrite a pro blem in a more convenient form. The rewrite rule is useful for an expr ession such as x^x, which can be rewritten as exp( x*ln(x) ). \n\nWhe n you apply a rule, the 'Problem Status' box is updated with the resul t of the applied rule.\n\nTo request a hint, click the 'Obtain a Hint' button or select 'Obtain a Hint' from the 'File' menu. To apply the h int, click the 'Apply the Hint' button or select 'Apply the Hint' from the 'File' menu.\n\nIf you understand a rule, you can select the rule from the 'Understood Rules' menu. The maplet then applies that rule a utomatically when possible.\n\nTo clear the problem history, click the 'Clear' button.\n\nTo show all steps in the solution, click the 'All \+ Steps' button. To display the final answer, click the 'Final Ans' butt on or select 'Final Answer' from the 'File' menu.\n\":\n\n############ ################################################\n\n################## ##########################################\n# pre: iniEqn :: algebraic expression\n# post: returns the Presentation MathML of iniEqn\n\niniM athML := proc(iniEqn)\n MathML:-ExportPresentation(iniEqn);\nend proc :\n\n############################################################\n\n# ###########################################################\n# pre: ma thMLStr :: string, in form of Presentation MathML\n# addEqn :: al gebraic expression \n\naddMathML := proc(mathMLStr, addEqn)\n local t ree, cmc, child, children, nl, eqnSign;\n use XMLTools in\n tree : = FromString(mathMLStr);\n cmc := ContentModelCount(tree);\n chi ld := FromString(MathML:-ExportPresentation(addEqn));\n children := ContentModel(child);\n nl := FromString(\" \");\n eqnSign := Element(\"mo\",\"=\");\n tree := AddChild(tree ,nl,cmc);\n tree := AddChild(tree,eqnSign,cmc+1);\n for child in children do \n cmc := ContentModelCount(tree);\n tree := Ad dChild(tree,child,cmc);\n end do:\n tree := MakeElement(\"mrow\" , [], ContentModel(tree) ):\n tree := Element(\"math\", tree):\n \+ ToString(tree):\n end use:\nend proc:\n\n########################### #################################\n\n################################# ###########################\n# pre: null \n# post: initializes the dif ferentiation\n# if input is correct, differentiation equation\n# is added to steps, understood rules applied\n# if applica pable, MathMLViewer updates as well\n# else error message shows \+ \n\nstartRule := proc()\n local diffFun, cal_eqn, mlStr, infoStr, uRu lesStr, \n uRules, uAppliedRules, i, hints, \n diffVarS tr, diffFunStr, diffEqnStr:\n\n use Student:-Calculus1, Maplets:-Tool s in\n clearSteps():\n\n diffFunStr := Get('TF_fun'):\n if di ffFunStr=\"\" then \n infoStr := \"Enter a valid function\":\n \+ Set('TB'=infoStr):\n error \"No function has been entered\": \+ \n end if:\n\n diffVarStr := Get('TF_var'):\n if diffVarStr= \"\" then \n infoStr := \"Enter a valid independent variable\":\n Set('TB'=infoStr):\n error \"No independent variable has be en entered\": \n end if:\n###### Diff\n diffEqnStr := cat(\"Diff (\",diffFunStr,\",\",diffVarStr,\")\"):\n diffFun := parse(diffEqnS tr):\n hints := Hint(diffFun):\n mlStr := iniMathML(GetProblem() ):\n infoStr := \"Initializing\":\n Set('TB'=infoStr):\n\n if nops(hints)>0 then\n uRules := rhs(Understand(Diff)):\n uAp pliedRules := []:\n\n if nops(uRules) > 0 then\n\n for i f rom 1 to nops(hints) do\n if member(hints[i],uRules)=true the n\n uAppliedRules := [op(uAppliedRules),hints[i]]:\n \+ end if: \n end do:\n\n cal_eqn := Rule[](GetProblem() ):\n steps := [op(steps), cal_eqn]: \n\n if nops(uApplie dRules) > 0 then\n \n if nops(uAppliedRules) = 1 then \n \+ uRulesStr := convert(uAppliedRules,string):\n info Str := cat(\"Understood rule \", uRulesStr, \" is \"):\n else \n uRulesStr := convert(uAppliedRules,string):\n \+ infoStr := cat(\"Understood rules \", uRulesStr, \" are \"):\n \+ end if :# end if nops(uAppliedRules)=1\n\n infoStr := cat (infoStr, \"automatically applied\"):\n Set('TB'=infoStr):\n \+ mlStr := addMathML(mlStr,rhs(cal_eqn)): \n\n end if: # end if nops(uAppliedRules)>0\n\n else # nops(uRules)=0\n \+ cal_eqn := Rule[](GetProblem()):\n steps := [op(steps), cal_eqn ]: \n\n end if : # end if nops(uRules)>0 \n\n Set('ML '=mlStr):\n infoStr := \"Apply a rule below\":\n Set('TB'=in foStr): \n\n else\n infoStr := (\"No differentiation ru le could be applied\"):\n Set('TB'=infoStr): \n\n end if: # no ps(hints)\n end use:\nend proc: # end startRule\n\n################## ##########################################\n\n######################## ####################################\n# pre: null\n# post: if aRule is a valid differentiation rule \n# and applicable new step is sto red in steps, \n# updates MathMLViewer \n# else message di splays the rule is not applicable\n\napplyRule := proc(aRule)\n local mlStr, infoStr, cal_eqn:\n use Student:-Calculus1, Maplets:-Tools in \n\n if nops(steps)=0 then\n startRule():\n end if:\n\n \+ mlStr := Get('ML'):\n cal_eqn := Rule[aRule](steps[nops(steps)]):\n \n if GetMessage()=NULL then\n infoStr := cat(convert(aRule,st ring), \n \" rule is being applied\"):\n Set ('TB'=infoStr):\n\n steps := [op(steps),cal_eqn]:\n mlStr := addMathML(mlStr,rhs(cal_eqn)):\n\n Set('ML'=mlStr):\n infoS tr := cat(convert(aRule,string), \n \" rule has be en applied\"):\n Set('TB'=infoStr):\n\n else\n infoStr := cat(convert(aRule,string), \n \" rule is not appl icable\"):\n Set('TB'=infoStr): \n\n end if: \n\n end use:\ne nd proc: # end applyRule\n\n########################################## ##################\n\n################################################ ############\n# pre: null\n# post: read the differentiation rule from \+ \n# in otherWin, and apply it\n# if TF_other is empty, err or message displays\n\napplyOtherRule := proc()\n local aRule:\n use Maplets:-Tools, Maplets:-Elements in\n aRule := Get('TF_other'):\n if aRule = \"\" then \n Maplets:-Display(Maplet(\n Me ssageDialog(\"No rule has been entered\"))): \n else\n applyR ule(parse(aRule)):\n end if:\n end use:\nend proc:\n\n############ ################################################\n\n################## ##########################################\n# pre: null\n# post: get a rgument from TF_args, and apply\n# the rewrite rule to the diff \+ problem\n\napplyRewriteRule := proc()\n local str:\n use Student:-Ca lculus1, Maplets:-Tools, Maplets:-Elements in\n\n str := Get('TF_args '):\n if str=\"\" then\n Maplets:-Display(Maplet(\n Mess ageDialog(\"You must specify a rewrite equation\"))): \n else\n s tr := cat(\"rewrite, \", str):\n applyRule([parse(str)]):\n end if :\n\n end use:\nend proc:\n\n######################################## ####################\n\n############################################## ##############\n# pre: null\n# post: a complete solution for the curre nt problem is displayed\n\ndiffAllSteps := proc() \n local diffEqn, h int, mlStr, infoStr:\n use Student:-Calculus1, Maplets:-Tools in \n \+ \n if nops(steps)=0 then\n startRule():\n end if:\n\n \+ diffEqn := steps[nops(steps)]:\n hint := Hint(diffEqn):\n\n if n ops(hint)=0 then\n infoStr:=\"No rule could be applied, or the pr oblem is done\":\n Set('TB'=infoStr):\n \n else\n mlStr :=Get('ML'):\n\n while nops(hint)>0 do\n infoStr := conver t(hint,string):\n infoStr := cat(infoStr, \" is being applied\" ):\n Set('TB'=infoStr):\n diffEqn:=Rule[hint](diffEqn): \n mlStr := addMathML(mlStr,rhs(diffEqn)):\n hint := Hin t(diffEqn):\n end do:\n \n steps := [op(steps),diffEqn] :\n\n infoStr := \"Exporting the full solution\":\n Set('TB' =infoStr): \n Set('ML'=mlStr):\n infoStr := \"A complete sol ution is displayed\":\n Set('TB'=infoStr):\n\n end if: # end i f nops(hint)=0\n\n end use: \nend proc: # end diffAllSteps\n\n####### #####################################################\n\n############# ###############################################\n# pre: null\n# post: \+ final answer for the current problem is displayed\n\ngetFinalResult := proc()\n local diffEqn, hint, mlStr, infoStr:\n use Student:-Calcul us1, Maplets:-Tools in \n \n if nops(steps)=0 then\n startR ule():\n end if:\n\n diffEqn := steps[nops(steps)]:\n hint := Hint(diffEqn):\n\n if nops(hint)=0 then\n infoStr:=\"No rule \+ could be applied, or the problem is done\":\n Set('TB'=infoStr): \n \n else\n mlStr:=Get('ML'):\n\n while nops(hint)>0 d o\n infoStr := convert(hint,string):\n infoStr := cat(in foStr, \" is being applied\"):\n Set('TB'=infoStr):\n di ffEqn:=Rule[hint](diffEqn):\n hint := Hint(diffEqn):\n end do:\n \n steps := [op(steps),diffEqn]:\n\n infoStr := \+ \"Exporting final answer\":\n Set('TB'=infoStr): \n mlStr := addMathML(mlStr,rhs(diffEqn)):\n Set('ML'=mlStr):\n infoStr := \"The final answer is displayed\":\n Set('TB'=infoStr):\n\n \+ end if: # end if nops(hint)=0\n\n end use: \nend proc: # end getFin alResult\n\n########################################################## ##\n\n############################################################\n# \+ pre: null\n# post: clears the historic record of all steps\n\nclearSte ps := proc()\n use Student:-Calculus1, Maplets:-Tools in\n Set('ML '=\"\"): Set('TB'=\"\"):\n Clear(all): steps:=[]:\n end use:\nend \+ proc: # end clearStep:\n\n############################################ ################\n\n################################################## ##########\n# pre: null\n# post: a hint to solve the question is displ ayed\n\ngetHint := proc()\n local cal_eqn, hint, infoStr: \n use Stu dent:-Calculus1, Maplets:-Tools in\n\n if nops(steps)=0 then\n \+ startRule():\n end if:\n\n cal_eqn := steps[nops(steps)]:\n \+ hint := Hint(cal_eqn):\n\n if nops(hint)=0 then\n infoStr:=\"N o rule could be applied, or the problem is done\":\n Set('TB'=inf oStr):\n else\n infoStr:=convert(hint,string):\n Set('TB' =infoStr):\n end if:\n\n hint:\n\n end use\nend proc: # end get Hint\n\n############################################################\n \n############################################################\n# pre: null\n# post: a rule is applied if there is at least\n# one rul e that works\n\napplyHint := proc()\n local hint:\n\n hint := getHin t():\n if nops(hint)>0 then \n applyRule(hint):\n end if: \nend p roc: # end applyHint\n\n############################################## ##############\n\n#################################################### ########\n# pre: name is a valid differentiation rule\n# fun is i n a valid algebraic expression or function\n# post: Window ruleInfo po p ups with the\n# description of the differentiation rule 'name' \n\naboutRule := proc(name,fun)\n local eqn:\n use Maplets[Tools] in \n Set('ruleWin(title)'=cat(convert(name,string),\" rule\")):\n \+ if name=power then \n eqn := Diff(fun,x)=n*x^(n-1):\n elif na me=quotient then\n eqn := Diff(fun,x)=normal(diff(fun,x),expanded ):\n else \n eqn := Diff(fun,x)=diff(fun,x):\n end if:\n \+ Set('ML_rule'=MathML:-ExportPresentation(eqn)):\n end use: \nend pro c: # end aboutRule\n\n################################################ ############\n\n###################################################### ######\n# pre: aRule is a differentiation rule, ruleState:boolean\n# p ost: if ruleState=true, then aRule is understood\n# else aRule i s removed from understood rules list\nchangeUnderstoodRules := proc(aR ule, ruleState)\n use Student:-Calculus1 in\n if ruleState=true th en\n Understand(Diff,aRule):\n else \n removeRule(aRule): \n end if:\n end use:\nend proc: # end changeUnderstoodRules\n\n## ##########################################################\n\n######## ####################################################\n# pre: aRule is \+ a valid differentiation rule\n# post: aRule is removed from understood rules list\n\nremoveRule := proc(aRule)\n local rules;\n use Studen t:-Calculus1 in\n rules := rhs(Understand(Diff));\n rules := sub s(aRule = NULL,rules);\n Understand(Diff,'none');\n if nops(rule s) > 0 then\n Understand(Diff,op(rules));\n end if:\n end use :\nend proc: # end removeRule\n\n##################################### #######################\n\n########################################### #################\n# pre: Maple 8 or a higher version is installed\n# \+ post: run Step-by-Step differentiator\n\nrunDiffMaplet := proc()\n\nlo cal maplet, color, lightcolor, darkcolor:\ncolor := 'background'=\"#DD FFFF\":\nlightcolor := 'background'=\"#EEFFFF\":\ndarkcolor := 'backgr ound'=\"#CCFFFF\":\n\nuse Maplets, Maplets:-Elements, Student:-Calculu s1 in\n\nmaplet := Maplet( \n 'onstartup'=RunWindow('diffWin'),\n Fo nt['F1']('family'=\"Default\",italic='true','size'=12),\n Font['F2']( 'family'=\"Default\", 'bold'='true', 'size'=14), \n \n Window['diffW in']('menubar'='diffMB', 'resizable'='false', \n 'title'=\"Derivati ve Rules: Step-by-Step Problem Solver\",\n BoxColumn(color, 'inset '=0, 'spacing'=0, \n\n BoxRow(color, 'border'='true','inset'=0,' spacing'=3, \n 'caption'=\"Enter a function\",\n Label ('caption'=\"Function \", 'font'=F2,'background'=\"#DDFFFF\"),\n##### # Enter Function \n TextField['TF_fun']('value'=-x^3+3*x+2, lig htcolor, 'width'=36),\n Label('caption'=\"Variable \", 'font' =F2,'background'=\"#DDFFFF\"), \n TextField['TF_var'](lightcolo r,\"x\",8)\n ), # end BoxRow\n\n BoxRow(color, 'inset'=0,'sp acing'=0, \n BoxColumn(color, 'border'='true', 'inset'=0, 'spa cing'=0,\n \n 'caption'=\" Note that d/dx = D = ' are three different ways to express the derivative operator.\",\n BoxR ow(color, \n MathMLViewer['ML']('height'=470, 'width'=40 0, lightcolor)\n ), # end BoxRow\n BoxRow(color, 'ha lign'='right', color, \n Button(\"Start\", 'onclick'='A_Dif f', lightcolor, \n 'tooltip'=\"Initialize differentiation \"),\n Button(\"Final Ans\", 'onclick'='A_diff', lightcolor ,\n 'tooltip'=\"Display final answer\"), \n Bu tton(\"All Steps\", 'onclick'='A_diffAll', lightcolor,\n \+ 'tooltip'=\"Display a complete solution\"),\n Button(\"Clea r\", 'onclick'='A_clear', lightcolor,\n 'tooltip'=\"Clear the problem history\"),\n Button(\"Close\", Shutdown(), 't ooltip'=\"Close the maplet\", lightcolor) \n ) # end BoxRow\n ), # end BoxColumn\n\n BoxColumn(color, 'inset'=0, 'ins et'=0, 'spacing'=0, \n\n BoxRow(color, 'border'='true', 'capt ion'=\"Messages\", \n 'inset'=0, 'spacing'=0, \n \+ BoxCell(\n TextBox['TB'](lightcolor, 'editable'=' false',\n 'value'=\"\",\n 'tooltip'=\"Me ssages\", 'font'='F1', 'height'=3 \n ) # end TextBox\n \+ ) # end BoxCell\n ), # end BoxRow \n\n \+ BoxRow(color, 'border'='true', 'caption'=\"Hints\", \n \+ 'inset'=0, 'spacing'=12, \n BoxCell(Button['B_getHint '](\"Obtain a Hint\", lightcolor, \n 'onclick'='A_g etHint', 'tooltip'=\"Receive a hint\")),\n BoxCell(Button[' B_applyHint'](\"Apply the Hint\", lightcolor, \n 'o nclick'='A_applyHint', 'tooltip'=\"Apply the hint displayed in the Mes sages box\"))\n ), # end BoxRow\n\n BoxColumn(color, 'border'='true', 'inset'=0, 'spacing'=0,\n 'capti on'=\"Derivative Rules\", \n \n BoxRow(color, 'h align'='left', 'inset'=0, 'spacing'=0,\n BoxCell('halign' ='left',\n Button['B_constant'](\" Constant \", \n \+ 'onclick'='A_constant', lightcolor, \n ' tooltip'=\"Apply constant rule: c' = 0\")\n ), # BoxCell \n BoxCell('halign'='left',\n Button['B_co nstantmultiple'](\"Constant Multiple\", \n 'onclick'= 'A_constantmultiple', lightcolor, \n 'tooltip'=\"Appl y constant multiple rule: (c*f)' = c*f'\")\n ) # BoxCell \n ), # BoxRow\n\n BoxRow(color, 'halign'='left' , 'inset'=0, 'spacing'=0,\n BoxCell('halign'='left',\n \+ Button['B_identiy'](\"Identity\", \n 'on click'='A_identity', lightcolor, \n 'tooltip'=\"Apply identity rule: x' = 1\")\n ), # BoxCell\n B oxCell('halign'='left',\n Button['B_power'](\"Power\", \+ \n 'onclick'='A_power', lightcolor, \n \+ 'tooltip'=\"Apply power rule: (x^n)' = n*x^(n-1)\")\n \+ ), # BoxCell\n BoxCell('halign'='left',\n \+ Button['B_int'](\"Integral \", \n 'onclick'='A_int', \+ lightcolor, \n 'tooltip'=\"Apply integral rule: (Int( f(t),t=c..x))'=f(x)\")\n ) # BoxCell\n ), # Bo xRow\n\n BoxRow(color, 'halign'='left', 'inset'=0, 'spacing '=0,\n BoxCell('halign'='left',\n Button[' B_sum'](\"Sum \", \n 'onclick'='A_sum', lightcolor, \+ \n 'tooltip'=\"Apply sum rule: (f+g)' = f'+g'\")\n \+ ), # BoxCell\n BoxCell('halign'='left',\n \+ Button['B_product'](\"Product\", \n 'oncli ck'='A_product', lightcolor,\n 'tooltip'=\"Apply prod uct rule: (f*g)' = f'*g + f*g'\")\n ), # BoxCell\n \+ BoxCell('halign'='left', \n Button['B_quotient'] (\"Quotient\", \n 'onclick'='A_quotient', lightcolor, \n 'tooltip'=\"Apply quotient rule: (f/g)'= (g*f'-f' *g)/g^2\")\n ) # BoxCell\n ), # BoxRow\n\n \+ BoxRow(color, 'halign'='left', 'inset'=0, 'spacing'=0, \n \+ BoxCell('halign'='left',\n Button['B_chain']( \"Chain Rule\", \n 'onclick'='A_chain', lightcolor, \+ \n 'tooltip'=\"Apply chain rule: (f(g(x)))'=f'(g(x))* g'(x)\")\n ), # BoxCell\n BoxCell('halign'=' left',\n Button['B_exp'](\"Exponential \", \n \+ 'onclick'='A_exp', lightcolor, \n 'tooltip'= \"Differentiate natural exponential function\")\n ) # Box Cell\n ), # BoxRow\n\n BoxRow(color, 'halign'='l eft', 'inset'=0, 'spacing'=0, \n BoxCell('halign'='left', \n Button['B_ln'](\"Natural Logarithm\", \n \+ 'onclick'='A_ln', lightcolor, \n 'tooltip'=\"Di fferentiate natural logarithm function\")\n ), # BoxCell \n BoxCell('halign'='left',\n Button['B_lo g10'](\"Log 10\", \n 'onclick'='A_log10', lightcolor, \n 'tooltip'=\"Differentiate common logarithm functi on\")\n ) # BoxCell\n ), # BoxRow\n\n \+ BoxRow(color, 'halign'='left', 'inset'=0, 'spacing'=0, \n \+ BoxCell('halign'='left',\n Button['B_sin'](\" si n \", \n 'onclick'='A_sin', lightcolor, \n \+ 'tooltip'=\"Differentiate sine function\")\n ), \+ # BoxCell\n BoxCell('halign'='left',\n But ton['B_cos'](\" cos \", \n 'onclick'='A_cos', lig htcolor, \n 'tooltip'=\"Differentiate cosine function \")\n ), # BoxCell\n BoxCell('halign'='left' ,\n Button['B_tan'](\" tan \", \n \+ 'onclick'='A_tan', lightcolor, \n 'tooltip'=\"Differe ntiate tangent function\")\n ) # BoxCell\n ), \+ # BoxRow\n\n BoxRow(color, 'halign'='left', 'inset'=0, 'spa cing'=0, \n BoxCell('halign'='left',\n But ton['B_cot'](\" cot \", \n 'onclick'='A_cot', li ghtcolor, \n 'tooltip'=\"Differentiate cotangent func tion\")\n ), # BoxCell\n BoxCell('halign'='l eft',\n Button['B_sec'](\" sec \", \n \+ 'onclick'='A_sec', lightcolor, \n 'tooltip'=\"Dif ferentiate secant function\")\n ), # BoxCell\n \+ BoxCell('halign'='left',\n Button['B_csc'](\" csc \+ \", \n 'onclick'='A_csc', lightcolor, \n \+ 'tooltip'=\"Differentiate cosecant function\")\n ) # BoxCell\n ), # BoxRow\n\n BoxRow(color, 'hali gn'='left', 'inset'=0, 'spacing'=0, \n BoxCell('halign'=' left',\n Button['B_sinh'](\" sinh \", \n \+ 'onclick'='A_sinh', lightcolor, \n 'tooltip'=\"D ifferentiate sinh function\")\n ), # BoxCell\n \+ BoxCell('halign'='left',\n Button['B_cosh'](\" cosh \", \n 'onclick'='A_cosh', lightcolor, \n \+ 'tooltip'=\"Differentiate cosh function\")\n ), # BoxCell\n BoxCell('halign'='left',\n Butt on['B_tanh'](\" tanh \", \n 'onclick'='A_tanh', lig htcolor, \n 'tooltip'=\"Differentiate tanh function\" )\n ) # BoxCell\n ), # BoxRow\n\n B oxRow(color, 'halign'='left', 'inset'=0, 'spacing'=0, \n \+ BoxCell('halign'='left',\n Button['B_coth'](\" coth \+ \", \n 'onclick'='A_coth', lightcolor, \n \+ 'tooltip'=\"Differentiate coth function\")\n ), # B oxCell\n BoxCell('halign'='left',\n Button ['B_sech'](\" sech \", \n 'onclick'='A_sech', light color, \n 'tooltip'=\"Differentiate sech function\") \n ), # BoxCell\n BoxCell('halign'='left',\n Button['B_csch'](\" csch \", \n 'on click'='A_csch', lightcolor, \n 'tooltip'=\"Different iate csch function\")\n ) # BoxCell\n ), # Box Row\n\n BoxRow(color, 'halign'='left', 'inset'=0, 'spacing' =0, \n BoxCell('halign'='left',\n Button[' B_arcsin'](\" arcsin \", \n 'onclick'='A_arcsin', lig htcolor, \n 'tooltip'=\"Differentiate arcsin function \")\n ), # BoxCell\n BoxCell('halign'='left' ,\n Button['B_arccos'](\" arccos \", \n \+ 'onclick'='A_arccos', lightcolor, \n 'tooltip'=\"Di fferentiate arccos function\")\n ), # BoxCell\n \+ BoxCell('halign'='left',\n Button['B_arctan'](\" ar ctan \", \n 'onclick'='A_arctan', lightcolor, \n \+ 'tooltip'=\"Differentiate arctan function\")\n \+ ) # BoxCell\n ), # BoxRow\n\n BoxRow(color, ' halign'='left', 'inset'=0, 'spacing'=0, \n BoxCell('halig n'='left',\n Button['B_arccot'](\" arccot \", \n \+ 'onclick'='A_arccot', lightcolor, \n 'tool tip'=\"Differentiate arccot function\")\n ), # BoxCell\n \+ BoxCell('halign'='left',\n Button['B_arcse c'](\" arcsec \", \n 'onclick'='A_arcsec', lightcolor , \n 'tooltip'=\"Differentiate arcsec function\")\n \+ ), # BoxCell\n BoxCell('halign'='left',\n \+ Button['B_arccsc'](\" arccsc \", \n 'oncl ick'='A_arccsc', lightcolor, \n 'tooltip'=\"Different iate arccsc function\")\n ) # BoxCell\n ), # B oxRow\n\n BoxRow(color, 'halign'='left', 'inset'=0, 'spacin g'=0, \n BoxCell('halign'='left', \n Butto n['B_arcsinh'](\"arcsinh\", \n 'onclick'='A_arcsinh', lightcolor, \n 'tooltip'=\"Differentiate arcsinh fun ction\")\n ), # BoxCell\n BoxCell('halign'=' left', \n Button['B_arccosh'](\"arccosh\", \n \+ 'onclick'='A_arccosh', lightcolor, \n 'toolti p'=\"Differentiate arccosh function\")\n ), # BoxCell\n \+ BoxCell('halign'='left',\n Button['B_arctan h'](\"arctanh\", \n 'onclick'='A_arctanh', lightcolor , \n 'tooltip'=\"Differentiate arctanh function\")\n \+ ) # BoxCell\n ), # BoxRow\n\n BoxRo w(color, 'halign'='left', 'inset'=0, 'spacing'=0, \n BoxC ell('halign'='left',\n Button['B_arccoth'](\"arccoth\", \n 'onclick'='A_arccoth', lightcolor, \n \+ 'tooltip'=\"Differentiate arccoth function\")\n ), \+ # BoxCell\n BoxCell('halign'='left',\n But ton['B_arcsech'](\"arcsech\", \n 'onclick'='A_arcsech ', lightcolor, \n 'tooltip'=\"Differentiate arcsech f unction\")\n ), # BoxCell\n BoxCell('halign' ='left',\n Button['B_arccsch'](\"arccsch\", \n \+ 'onclick'='A_arccsch', lightcolor, \n 'toolt ip'=\"Differentiate arccsch function\")\n ) # BoxCell\n \+ ) # BoxRow\n\n ) # end BoxLayout\n \n \+ ) # end BoxColumn \n ) # end BoxRow\n\n ) # end BoxColumn\n \+ ), # end Window\n\n################################################### #########\n\n MenuBar['diffMB'](\n Menu(\"File\",\n MenuItem( \"Obtain a Hint\", 'onclick'='A_getHint'),\n MenuItem(\"Apply the Hint\", 'onclick'='A_applyHint'),\n MenuSeparator(),\n Menu Item(\"Start to Differentiate\", 'onclick'='A_Diff'),\n MenuItem( \"Show All Steps\", 'onclick'='A_diffAll'),\n MenuItem(\"Final An swer\", 'onclick'='A_diff'), \n MenuSeparator(),\n Menu Item(\"Clear\", 'onclick'='A_clear'),\n MenuSeparator(),\n M enuItem(\"Close\", Shutdown())\n ), # end Menu/File\n \n Menu(\" Rule Definition\",\n MenuItem(\"Chain Rule\", 'onclick'='A_i_chai n'),\n MenuSeparator(),\n MenuItem(\"Constant Rule\", 'oncli ck'='A_i_constant'),\n MenuItem(\"Constant Multiple\", 'onclick'= 'A_i_constantmultiple'),\n MenuSeparator(),\n MenuItem(\"Ide ntity Rule\", 'onclick'='A_i_identity'),\n MenuItem(\"Power Rule \", 'onclick'='A_i_power'),\n MenuSeparator(),\n MenuItem(\" Sum Rule\", 'onclick'='A_i_sum'),\n MenuItem(\"Difference Rule\", 'onclick'='A_i_difference'),\n MenuSeparator(),\n MenuItem( \"Product Rule\", 'onclick'='A_i_product'),\n MenuItem(\"Quotient Rule\", 'onclick'='A_i_quotient'),\n MenuSeparator(),\n Men uItem(\"Natural Exponential\", 'onclick'='A_i_exp'),\n MenuItem( \"Natural Logarithm\",'onclick'='A_i_ln'),\n MenuItem(\"Logarithm Base 10\",'onclick'='A_i_log10'),\n MenuSeparator(),\n Menu (\"Trigonometric Functions\",\n MenuItem(\"sin\",'onclick'='A_i _sin'),\n MenuItem(\"cos\",'onclick'='A_i_cos'),\n MenuI tem(\"tan\",'onclick'='A_i_tan'),\n MenuItem(\"cot\",'onclick'= 'A_i_cot'),\n MenuItem(\"sec\",'onclick'='A_i_sec'),\n M enuItem(\"csc\",'onclick'='A_i_csc')\n ), # end Menu/Trig\n \+ Menu(\"Inverse Trigonometric Functions\",\n MenuItem(\"arcsin\" ,'onclick'='A_i_arcsin'),\n MenuItem(\"arccos\",'onclick'='A_i_ arccos'),\n MenuItem(\"arctan\",'onclick'='A_i_arctan'),\n \+ MenuItem(\"arccot\",'onclick'='A_i_arccot'),\n MenuItem(\"ar csec\",'onclick'='A_i_arcsec'),\n MenuItem(\"arccsc\",'onclick' ='A_i_arccsc')\n ), # end Menu/Inverse Trig\n Menu(\"Hyperbo lic Functions\",\n MenuItem(\"sinh\",'onclick'='A_i_sinh'),\n \+ MenuItem(\"cosh\",'onclick'='A_i_cosh'),\n MenuItem(\"tan h\",'onclick'='A_i_tanh'),\n MenuItem(\"coth\",'onclick'='A_i_c oth'),\n MenuItem(\"sech\",'onclick'='A_i_sech'),\n Menu Item(\"csch\",'onclick'='A_i_csch')\n ), # end Menu/Hyperbolic \n Menu(\"Inverse Hyperbolic Functions\",\n MenuItem(\"arcsi nh\",'onclick'='A_i_arcsinh'),\n MenuItem(\"arccosh\",'onclick' ='A_i_arccosh'),\n MenuItem(\"arctanh\",'onclick'='A_i_arctanh' ),\n MenuItem(\"arccoth\",'onclick'='A_i_arccoth'),\n Me nuItem(\"arcsech\",'onclick'='A_i_arcsech'),\n MenuItem(\"arccs ch\",'onclick'='A_i_arccsch')\n ), # end Menu/Inverse hyperbolic \n MenuSeparator(),\n MenuItem(\"Integral Rule\", 'onclick'= 'A_i_int'),\n MenuItem(\"Rewrite Rule\", 'onclick'=RunWindow('rew riteInfoWin'))\n ), # end Menu/Rule Definition\n\n Menu(\"Apply th e Rule\",\n MenuItem(\"Chain Rule\", 'onclick'='A_chain'),\n \+ MenuSeparator(),\n MenuItem(\"Constant Rule\", 'onclick'='A_cons tant'),\n MenuItem(\"Constant Multiple\", 'onclick'='A_constantmu ltiple'),\n MenuSeparator(),\n MenuItem(\"Identity Rule\", ' onclick'='A_identity'),\n MenuItem(\"Power Rule\", 'onclick'='A_p ower'),\n MenuSeparator(),\n MenuItem(\"Sum Rule\", 'onclick '='A_sum'),\n MenuItem(\"Difference Rule\", 'onclick'='A_differen ce'),\n MenuSeparator(),\n MenuItem(\"Product Rule\", 'oncli ck'='A_product'),\n MenuItem(\"Quotient Rule\", 'onclick'='A_quot ient'),\n MenuSeparator(),\n MenuItem(\"Natural Exponential \", 'onclick'='A_exp'),\n MenuItem(\"Natural Logarithm\",'onclick '='A_ln'),\n MenuItem(\"Logarithm Base 10\",'onclick'='A_log10'), \n MenuSeparator(),\n Menu(\"Trigonometric Functions\",\n \+ MenuItem(\"sin\",'onclick'='A_sin'),\n MenuItem(\"cos\",'o nclick'='A_cos'),\n MenuItem(\"tan\",'onclick'='A_tan'),\n \+ MenuItem(\"cot\",'onclick'='A_cot'),\n MenuItem(\"sec\",'onc lick'='A_sec'),\n MenuItem(\"csc\",'onclick'='A_csc')\n ), # end Menu/Trig\n Menu(\"Inverse Trigonometric Functions\",\n \+ MenuItem(\"arcsin\",'onclick'='A_arcsin'),\n MenuItem(\"ar ccos\",'onclick'='A_arccos'),\n MenuItem(\"arctan\",'onclick'=' A_arctan'),\n MenuItem(\"arccot\",'onclick'='A_arccot'),\n \+ MenuItem(\"arcsec\",'onclick'='A_arcsec'),\n MenuItem(\"arcc sc\",'onclick'='A_arccsc')\n ), # end Menu/Inverse Trig\n Me nu(\"Hyperbolic Functions\",\n MenuItem(\"sinh\",'onclick'='A_s inh'),\n MenuItem(\"cosh\",'onclick'='A_cosh'),\n MenuIt em(\"tanh\",'onclick'='A_tanh'),\n MenuItem(\"coth\",'onclick'= 'A_coth'),\n MenuItem(\"sech\",'onclick'='A_sech'),\n Me nuItem(\"csch\",'onclick'='A_csch')\n ), # end Menu/Hyperbolic \n Menu(\"Inverse Hyperbolic Functions\",\n MenuItem(\"arcsi nh\",'onclick'='A_arcsinh'),\n MenuItem(\"arccosh\",'onclick'=' A_arccosh'),\n MenuItem(\"arctanh\",'onclick'='A_arctanh'),\n \+ MenuItem(\"arccoth\",'onclick'='A_arccoth'),\n MenuItem( \"arcsech\",'onclick'='A_arcsech'),\n MenuItem(\"arccsch\",'onc lick'='A_arccsch')\n ), # end Menu/Inverse hyperbolic\n Menu Separator(),\n MenuItem(\"Integral Rule\", 'onclick'='A_int'),\n \+ MenuItem(\"Rewrite Rule\", 'onclick'=RunWindow('rewriteWin')),\n \+ MenuSeparator(),\n MenuItem(\"Enter a Diff Rule\", 'onclick' =RunWindow('otherWin'))\n ), # end Menu/Apply Rules\n \n Menu (\"Understood Rules\",\n CheckBoxMenuItem['CMI_chain'](\"Chain Ru le\", 'onclick'='A_u_chain'),\n MenuSeparator(), \n CheckB oxMenuItem['CMI_constant'](\n \"Constant Rule\", 'onclick'=' A_u_constant'),\n CheckBoxMenuItem['CMI_constantmultiple'](\n \+ \"Constant Multiple\", 'onclick'='A_u_constantmultiple'),\n \+ MenuSeparator(),\n CheckBoxMenuItem['CMI_identity'](\"Identity \+ Rule\", 'onclick'='A_u_identity'),\n CheckBoxMenuItem['CMI_power' ](\"Power Rule\", 'onclick'='A_u_power'),\n MenuSeparator(),\n \+ CheckBoxMenuItem['CMI_sum'](\"Sum Rule\", 'onclick'='A_u_sum'),\n \+ CheckBoxMenuItem['CMI_difference'](\"Difference Rule\", 'onclick'= 'A_u_difference'),\n MenuSeparator(),\n CheckBoxMenuItem['CM I_product'](\"Product Rule\", 'onclick'='A_u_product'),\n CheckBo xMenuItem['CMI_quotient'](\"Quotient Rule\", 'onclick'='A_u_quotient') ,\n MenuSeparator(),\n CheckBoxMenuItem['CMI_exp'](\"Natural Exponential\", 'onclick'='A_u_exp'),\n CheckBoxMenuItem['CMI_ln' ](\"Natural Logarithm\",'onclick'='A_u_ln'),\n CheckBoxMenuItem[' CMI_log10'](\"Logarithm Base 10\",'onclick'='A_u_log10'),\n MenuS eparator(),\n Menu(\"Trigonometric Functions\",\n CheckBox MenuItem['CMI_sin'](\"sin\",'onclick'='A_u_sin'),\n CheckBoxMen uItem['CMI_cos'](\"cos\",'onclick'='A_u_cos'),\n CheckBoxMenuIt em['CMI_tan'](\"tan\",'onclick'='A_u_tan'),\n CheckBoxMenuItem[ 'CMI_cot'](\"cot\",'onclick'='A_u_cot'),\n CheckBoxMenuItem['CM I_sec'](\"sec\",'onclick'='A_u_sec'),\n CheckBoxMenuItem['CMI_c sc'](\"csc\",'onclick'='A_u_csc')\n ), # end Menu/Trig\n Men u(\"Inverse Trigonometric Functions\",\n CheckBoxMenuItem['CMI_ arcsin'](\"arcsin\",'onclick'='A_u_arcsin'),\n CheckBoxMenuItem ['CMI_arccos'](\"arccos\",'onclick'='A_u_arccos'),\n CheckBoxMe nuItem['CMI_arctan'](\"arctan\",'onclick'='A_u_arctan'),\n Chec kBoxMenuItem['CMI_arccot'](\"arccot\",'onclick'='A_u_arccot'),\n \+ CheckBoxMenuItem['CMI_arcsec'](\"arcsec\",'onclick'='A_u_arcsec'),\n CheckBoxMenuItem['CMI_arccsc'](\"arccsc\",'onclick'='A_u_arccs c')\n ), # end Menu/Inverse Trig\n Menu(\"Hyperbolic Functio ns\",\n CheckBoxMenuItem['CMI_sinh'](\"sinh\",'onclick'='A_u_si nh'),\n CheckBoxMenuItem['CMI_cosh'](\"cosh\",'onclick'='A_u_co sh'),\n CheckBoxMenuItem['CMI_tanh'](\"tanh\",'onclick'='A_u_ta nh'),\n CheckBoxMenuItem['CMI_coth'](\"coth\",'onclick'='A_u_co th'),\n CheckBoxMenuItem['CMI_sech'](\"sech\",'onclick'='A_u_se ch'),\n CheckBoxMenuItem['CMI_csch'](\"csch\",'onclick'='A_u_cs ch')\n ), # end Menu/Hyperbolic \n Menu(\"Inverse Hyperbolic Functions\",\n CheckBoxMenuItem['CMI_arcsinh'](\"arcsinh\",'on click'='A_u_arcsinh'),\n CheckBoxMenuItem['CMI_arccosh'](\"arcc osh\",'onclick'='A_u_arccosh'),\n CheckBoxMenuItem['CMI_arctanh '](\"arctanh\",'onclick'='A_u_arctanh'),\n CheckBoxMenuItem['CM I_arccoth'](\"arccoth\",'onclick'='A_u_arccoth'),\n CheckBoxMen uItem['CMI_arcsech'](\"arcsech\",'onclick'='A_u_arcsech'),\n Ch eckBoxMenuItem['CMI_arccsch'](\"arccsch\",'onclick'='A_u_arccsch')\n \+ ), # end Menu/Inverse hyperbolic\n MenuSeparator(),\n Ch eckBoxMenuItem['CMI_int'](\"Integral Rule\", 'onclick'='A_u_int')\n \+ ), # end Menu/Understood Rules\n \n Menu(\"Help\",\n MenuItem (\"Using this Maplet\", 'onclick'=RunWindow('helpWin'))\n ) # end M enu/Help\n\n ), # end MenuBar\n\n#################################### ########################\n\n Window[ruleWin]('resizable'='false',\n \+ 'title'=\"Differentiation Rule\",\n BoxColumn(color, 'inset'=0, ' spacing'=10, \n 'border'='true', \n BoxRow(color, 'inset'=0 , 'spacing'=0, \n MathMLViewer['ML_rule']('width'=375, lightco lor) \n ), # end BoxRow\n BoxRow(color, 'inset'=0, 'spacing' =0, \n Button(\"Close\", lightcolor, CloseWindow(ruleWin))\n \+ ) # end BoxRow\n ) # end BoxColumn\n ), # end ruleInfo\n\n##### #######################################################\n\n Window['o therWin']( 'resizable'='false',\n 'title'=\"Enter Diff Rule\", \n \+ BoxColumn(color, 'inset'=0, 'spacing'=5, \n 'border'='true', \+ \n BoxRow(color, 'inset'=0, 'spacing'=0, \n TextField['TF _other']('width'=10, lightcolor)\n ), # end BoxRow\n BoxRow( color, 'inset'=0, 'spacing'=10, \n Button(\"Apply\", \n \+ 'onclick'='A_other', darkcolor),\n Button(\"Close\", \n \+ 'onclick'=CloseWindow('otherWin'), darkcolor)\n ) # end Box Row\n ) # end BoxColumn\n ), # end Window otherWin \n\n########### #################################################\n\n Window['rewrite Win']( 'resizable'='false', \n 'title'=\"Apply Rewrite Rule\",\n \+ BoxColumn(color, 'inset'=0, 'spacing'=5, \n 'border'='true', \+ \n BoxRow(color, 'inset'=0, 'spacing'=0, \n Label(\"Ente r the parameters (separated by commas): \") \n ), # end BoxRow\n \+ BoxRow(color, 'inset'=0, 'spacing'=0, \n TextField['TF_ar gs']('width'=18, lightcolor)\n ), # end BoxRow\n BoxRow(colo r, 'inset'=0, 'spacing'=8, \n Button(\"Apply\", darkcolor, \n \+ 'onclick'=Evaluate('function'='applyRewriteRule()') ),\n \+ Button(\"About\", darkcolor, \n 'onclick'=RunWindow('rewr iteInfoWin') ), \n Button(\"Close\", darkcolor, \n 'o nclick'=CloseWindow('rewriteWin') )\n ) # end BoxRow\n ) # end BoxColumn \n ), # end rewriteWin\n \n########################### #################################\n\n Window['rewriteInfoWin']( 'resi zable'='false',\n 'title'=\"Using the Rewrite Rule\", \n BoxColu mn(color, 'inset'=0, 'spacing'=5, \n 'border'='true', \n B oxRow(color, 'inset'=0, 'spacing'=0, \n TextBox['TB_rewrite'](' value'=rewriteStr, \n 'editable'='false', 'visible'='true', \+ lightcolor, \n 'height'=19, 'width'=50, 'tooltip'=\"Using th e rewrite rule\") \n ), # end BoxRow\n BoxRow(color, 'inse t'=0, 'spacing'=20, \n Button(\"Close\", darkcolor, 'onclick'=C loseWindow('rewriteInfoWin'))\n ) # end BoxRow\n ) # end BoxCo lumn \n ), # end rewriteWin\n\n################################### #########################\n\n Window['helpWin']( 'resizable'='false', \n 'title'=\"Using the Step-by-Step Differentiation Problem Solver \+ Maplet\",\n BoxColumn(color, 'border'='true', 'inset'=0, 'spacing'= 8,\n BoxCell(\n TextBox('height'=24, 'width'=40,\n \+ lightcolor, 'foreground'=\"#333399\", \n 'editable'='false' , 'font'='F2', \n 'value'=helpStr\n ) # end TextBox\n \+ ), # end BoxCell\n BoxRow(color, 'inset'=0, 'spacing'=0, \n \+ Button(\"Close\", lightcolor, \n CloseWindow('helpWin' ))\n ) # end BoxRow\n ) # end BoxColumn\n ), # end helpWin\n \n############################################################\n\n Ac tion['A_Diff'](\n Evaluate('function'='startRule()') \n ), # end A _Diff\n \n Action['A_diffAll'](\n Evaluate('function'='diffAllSte ps()')\n ), # end A_diffAll\n\n Action['A_diff'](\n Evaluate('fun ction'='getFinalResult()')\n ), # end A_diff \n\n Action['A_clear'] (\n Evaluate('function'='clearSteps()')\n ), # end A_clear\n \n \+ Action['A_getHint'](\n Evaluate('function'='getHint()')\n ), # end A_getHint\n\n Action['A_applyHint'](\n Evaluate('function'='apply Hint()')\n ), # end A_applyHint\n\n Action['A_other'](\n Evaluate ('function'='applyOtherRule()'),\n CloseWindow('otherWin'), \n S etOption('TF_other'=\"\")\n ), # end A_other\n\n##################### #######################################\n\n Action['A_i_constant'](\n Evaluate('function'='aboutRule(constant,c)'),\n RunWindow('rule Win')\n ), # end A_i_constant\n \n Action['A_i_constantmultiple'](\n Evaluate('function'='aboutRule(constantmultiple,c*f(x))'),\n Ru nWindow('ruleWin')\n ), # end A_i_constantmultiple\n \n Action['A_i _sum'](\n Evaluate('function'='aboutRule(sum,f(x)+g(x))'),\n Run Window('ruleWin') \n ), # end A_i_sum\n\n Action['A_i_difference']( \n Evaluate('function'='aboutRule(sum,f(x)-g(x))'),\n RunWindow( 'ruleWin') \n ), # end A_i_difference\n \n Action['A_i_identity']( \n Evaluate('function'='aboutRule(identity,x)'),\n RunWindow('ru leWin')\n ), # end A_i_identity\n \n Action['A_i_power'](\n Eval uate('function'='aboutRule(power,x^n)'),\n RunWindow('ruleWin')\n \+ ), # end A_i_power\n\n Action['A_i_product'](\n Evaluate('function '='aboutRule(product,f(x)*g(x))'),\n RunWindow('ruleWin')\n ), # e nd A_i_product\n\n Action['A_i_quotient'](\n Evaluate('function'=' aboutRule(quotient,f(x)/g(x))'),\n RunWindow('ruleWin')\n ), # end A_i_sum\n\n Action['A_i_chain'](\n Evaluate('function'='aboutRule (chain,f(g(x)))'),\n RunWindow('ruleWin')\n ), # end A_i_chain\n\n Action['A_i_int'](\n Evaluate('function'='aboutRule(int,Int(f(t), t=c..x))'),\n RunWindow('ruleWin')\n ), # end A_i_chain\n\n Actio n['A_i_exp'](\n Evaluate('function'='aboutRule(exp,exp(x))'),\n \+ RunWindow('ruleWin')\n ), # end A_i_exp\n\n Action['A_i_log10'](\n \+ Evaluate('function'='aboutRule(log10,log10(x))'),\n RunWindow('ru leWin')\n ), # end A_i_log10\n\n Action['A_i_ln'](\n Evaluate('fu nction'='aboutRule(ln,ln(x))'),\n RunWindow('ruleWin')\n ), # end \+ A_i_ln\n\n Action['A_i_sin'](\n Evaluate('function'='aboutRule(sin ,sin(x))'),\n RunWindow('ruleWin')\n ), # end A_i_sin\n\n Action[ 'A_i_cos'](\n Evaluate('function'='aboutRule(cos,cos(x))'),\n Ru nWindow('ruleWin')\n ), # end A_cos\n\n Action['A_i_tan'](\n Eval uate('function'='aboutRule(tan,tan(x))'),\n RunWindow('ruleWin')\n \+ ), # end A_i_tan\n\n Action['A_i_cot'](\n Evaluate('function'='ab outRule(cot,cot(x))'),\n RunWindow('ruleWin')\n ), # end A_i_cot\n \n Action['A_i_sec'](\n Evaluate('function'='aboutRule(sec,sec(x)) '),\n RunWindow('ruleWin')\n ), # end A_i_sec\n\n Action['A_i_csc '](\n Evaluate('function'='aboutRule(csc,csc(x))'),\n RunWindow( 'ruleWin')\n ), # end A_i_csc\n\n Action['A_i_arcsin'](\n Evaluat e('function'='aboutRule(arcsin,arcsin(x))'),\n RunWindow('ruleWin') \n ), # end A_i_arcsin\n\n Action['A_i_arccos'](\n Evaluate('func tion'='aboutRule(arccos,arccos(x))'),\n RunWindow('ruleWin')\n ), \+ # end A_i_cos\n\n Action['A_i_arctan'](\n Evaluate('function'='abo utRule(arctan,arctan(x))'),\n RunWindow('ruleWin')\n ), # end A_i_ arctan\n\n Action['A_i_arccot'](\n Evaluate('function'='aboutRule( arccot,arccot(x))'),\n RunWindow('ruleWin')\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 A ction['A_i_arccsc'](\n Evaluate('function'='aboutRule(arccsc,arccsc (x))'),\n RunWindow('ruleWin')\n ), # end A_i_arccsc\n\n Action[' A_i_sinh'](\n Evaluate('function'='aboutRule(sinh,sinh(x))'),\n \+ RunWindow('ruleWin')\n ), # end A_i_sinh\n\n Action['A_i_cosh'](\n \+ Evaluate('function'='aboutRule(cosh,cosh(x))'),\n RunWindow('rule Win')\n ), # end A_i_cosh\n\n Action['A_i_tanh'](\n Evaluate('fun ction'='aboutRule(tanh,tanh(x))'),\n RunWindow('ruleWin')\n ), # e nd A_i_tanh\n\n Action['A_i_coth'](\n Evaluate('function'='aboutRu le(coth,coth(x))'),\n RunWindow('ruleWin')\n ), # end A_i_coth\n\n Action['A_i_sech'](\n Evaluate('function'='aboutRule(sech,sech(x) )'),\n RunWindow('ruleWin')\n ), # end A_i_sech\n\n Action['A_i_c sch'](\n Evaluate('function'='aboutRule(csch,csch(x))'),\n RunWi ndow('ruleWin')\n ), # end A_i_csch\n\n Action['A_i_arcsinh'](\n \+ Evaluate('function'='aboutRule(arcsinh,arcsinh(x))'),\n RunWindow(' ruleWin')\n ), # end A_i_arcsinh\n\n Action['A_i_arccosh'](\n Eva luate('function'='aboutRule(arccosh,arccosh(x))'),\n RunWindow('rul eWin')\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('fu nction'='aboutRule(arccoth,arccoth(x))'),\n RunWindow('ruleWin')\n \+ ), # end A_i_arccoth\n\n Action['A_i_arcsech'](\n Evaluate('funct ion'='aboutRule(arcsech,arcsech(x))'),\n RunWindow('ruleWin')\n ), # end A_i_arcsech\n\n Action['A_i_arccsch'](\n Evaluate('function '='aboutRule(arccsch,arccsch(x))'),\n RunWindow('ruleWin')\n ), # \+ end A_i_arccsch\n\n################################################### #########\n\n Action['A_constant'](\n Evaluate('function'='applyRu le(constant)')\n ), # end A_constant\n \n Action['A_constantmultipl e'](\n Evaluate('function'='applyRule(constantmultiple)')\n ), # e nd A_constantmultiple\n \n Action['A_sum'](\n Evaluate('function' ='applyRule(sum)')\n ), # end A_sum\n\n Action['A_difference'](\n \+ Evaluate('function'='applyRule(difference)')\n ), # end A_difference \n \n Action['A_identity'](\n Evaluate('function'='applyRule(iden tity)')\n ), # end A_identity\n \n Action['A_power'](\n Evaluate ('function'='applyRule(power)')\n ), # end A_power\n\n Action['A_pro duct'](\n Evaluate('function'='applyRule(product)')\n ), # end A_p roduct\n\n Action['A_quotient'](\n Evaluate('function'='applyRule( quotient)')\n ), # end A_quotient\n\n Action['A_chain'](\n Evalua te('function'='applyRule(chain)')\n ), # end A_chain\n\n Action['A_i nt'](\n Evaluate('function'='applyRule(int)')\n ), # end A_chain\n \n Action['A_exp'](\n Evaluate('function'='applyRule(exp)')\n ), \+ # end A_exp\n\n Action['A_log10'](\n Evaluate('function'='applyRul e(log10)')\n ), # end A_log10\n\n Action['A_ln'](\n Evaluate('fun ction'='applyRule(ln)')\n ), # end A_ln\n\n Action['A_sin'](\n Ev aluate('function'='applyRule(sin)')\n ), # end A_sin\n\n Action['A_c os'](\n Evaluate('function'='applyRule(cos)')\n ), # end A_cos\n\n Action['A_tan'](\n Evaluate('function'='applyRule(tan)')\n ), # \+ end A_tan\n\n Action['A_cot'](\n Evaluate('function'='applyRule(co t)')\n ), # end A_cot\n\n Action['A_sec'](\n Evaluate('function'= 'applyRule(sec)')\n ), # end A_sec\n\n Action['A_csc'](\n Evaluat e('function'='applyRule(csc)')\n ), # end A_csc\n\n Action['A_arcsin '](\n Evaluate('function'='applyRule(arcsin)')\n ), # end A_arcsin \n\n Action['A_arccos'](\n Evaluate('function'='applyRule(arccos)' )\n ), # end A_cos\n\n Action['A_arctan'](\n Evaluate('function'= 'applyRule(arctan)')\n ), # end A_arctan\n\n Action['A_arccot'](\n \+ Evaluate('function'='applyRule(arccot)')\n ), # end A_arccot\n\n A ction['A_arcsec'](\n Evaluate('function'='applyRule(arcsec)')\n ), # end A_arcsec\n\n Action['A_arccsc'](\n Evaluate('function'='app lyRule(arccsc)')\n ), # end A_arccsc\n\n Action['A_sinh'](\n Eval uate('function'='applyRule(sinh)')\n ), # end A_sinh\n\n Action['A_c osh'](\n Evaluate('function'='applyRule(cosh)')\n ), # end A_cosh \n\n Action['A_tanh'](\n Evaluate('function'='applyRule(tanh)')\n \+ ), # end A_tanh\n\n Action['A_coth'](\n Evaluate('function'='appl yRule(coth)')\n ), # end A_coth\n\n Action['A_sech'](\n Evaluate( 'function'='applyRule(sech)')\n ), # end A_sech\n\n Action['A_csch'] (\n Evaluate('function'='applyRule(csch)')\n ), # end A_csch\n\n \+ Action['A_arcsinh'](\n Evaluate('function'='applyRule(arcsinh)')\n \+ ), # end A_arcsinh\n\n Action['A_arccosh'](\n Evaluate('function' ='applyRule(arccosh)')\n ), # end A_cosh\n\n Action['A_arctanh'](\n \+ Evaluate('function'='applyRule(arctanh)')\n ), # end A_arctanh\n\n Action['A_arccoth'](\n Evaluate('function'='applyRule(arccoth)') \n ), # end A_arccoth\n\n Action['A_arcsech'](\n Evaluate('functi on'='applyRule(arcsech)')\n ), # end A_arcsech\n\n Action['A_arccsch '](\n Evaluate('function'='applyRule(arccsch)')\n ), # end A_arccs ch\n\n\n############################################################\n \n Action['A_u_constant'](\n Evaluate('function'='changeUnderstood Rules(constant, CMI_constant)')\n ), # end A_u_constant\n \n Action ['A_u_constantmultiple'](\n Evaluate('function'='changeUnderstoodRu les(constantmultiple, CMI_constantmultiple)')\n ), # end A_u_constant multiple\n \n Action['A_u_sum'](\n Evaluate('function'='changeUnd erstoodRules(sum, CMI_sum)')\n ), # end A_u_sum\n\n Action['A_u_diff erence'](\n Evaluate('function'='changeUnderstoodRules(difference, \+ CMI_difference)')\n ), # end A_u_difference\n \n Action['A_u_identi ty'](\n Evaluate('function'='changeUnderstoodRules(identity, CMI_id entity)')\n ), # end A_u_identity\n \n Action['A_u_power'](\n Ev aluate('function'='changeUnderstoodRules(power, CMI_power)')\n ), # e nd A_u_power\n\n Action['A_u_product'](\n Evaluate('function'='cha ngeUnderstoodRules(product, CMI_product)')\n ), # end A_u_product\n\n Action['A_u_quotient'](\n Evaluate('function'='changeUnderstoodRu les(quotient, CMI_quotient)')\n ), # end A_u_quotient\n\n Action['A_ u_chain'](\n Evaluate('function'='changeUnderstoodRules(chain, CMI_ chain)')\n ), # end A_u_chain\n\n Action['A_u_int'](\n Evaluate(' function'='changeUnderstoodRules(int, CMI_int)')\n ), # end A_u_chain \n\n Action['A_u_exp'](\n Evaluate('function'='changeUnderstoodRul es(exp, CMI_exp)')\n ), # end A_u_exp\n\n Action['A_u_log10'](\n \+ Evaluate('function'='changeUnderstoodRules(log10, CMI_log10)')\n ), # end A_u_log10\n\n Action['A_u_ln'](\n Evaluate('function'='change UnderstoodRules(ln, CMI_ln)')\n ), # end A_u_ln\n\n Action['A_u_sin' ](\n Evaluate('function'='changeUnderstoodRules(sin, CMI_sin)')\n \+ ), # end A_u_sin\n\n Action['A_u_cos'](\n Evaluate('function'='cha ngeUnderstoodRules(cos, CMI_cos)')\n ), # end A_u_cos\n\n Action['A_ u_tan'](\n Evaluate('function'='changeUnderstoodRules(tan, CMI_tan) ')\n ), # end A_u_tan\n\n Action['A_u_cot'](\n Evaluate('function '='changeUnderstoodRules(cot, CMI_cot)')\n ), # end A_u_cot\n\n Acti on['A_u_sec'](\n Evaluate('function'='changeUnderstoodRules(sec, CM I_sec)')\n ), # end A_u_sec\n\n Action['A_u_csc'](\n Evaluate('fu nction'='changeUnderstoodRules(csc, CMI_csc)')\n ), # end A_u_csc\n\n Action['A_u_arcsin'](\n Evaluate('function'='changeUnderstoodRule s(arcsin, CMI_arcsin)')\n ), # end A_u_arcsin\n\n Action['A_u_arccos '](\n Evaluate('function'='changeUnderstoodRules(arccos, CMI_arccos )')\n ), # end A_u_cos\n\n Action['A_u_arctan'](\n Evaluate('func tion'='changeUnderstoodRules(arctan, CMI_arctan)')\n ), # end A_u_arc tan\n\n Action['A_u_arccot'](\n Evaluate('function'='changeUnderst oodRules(arccot, CMI_arccot)')\n ), # end A_u_arccot\n\n Action['A_u _arcsec'](\n Evaluate('function'='changeUnderstoodRules(arcsec, CMI _arcsec)')\n ), # end A_u_arcsec\n\n Action['A_u_arccsc'](\n Eval uate('function'='changeUnderstoodRules(arccsc, CMI_arccsc)')\n ), # e nd A_u_arccsc\n\n Action['A_u_sinh'](\n Evaluate('function'='chang eUnderstoodRules(sinh, CMI_sinh)')\n ), # end A_u_sinh\n\n Action['A _u_cosh'](\n Evaluate('function'='changeUnderstoodRules(cosh, CMI_c osh)')\n ), # end A_u_cosh\n\n Action['A_u_tanh'](\n Evaluate('fu nction'='changeUnderstoodRules(tanh, CMI_tanh)')\n ), # end A_u_tanh \n\n Action['A_u_coth'](\n Evaluate('function'='changeUnderstoodRu les(coth, CMI_coth)')\n ), # end A_u_coth\n\n Action['A_u_sech'](\n \+ Evaluate('function'='changeUnderstoodRules(sech, CMI_sech)')\n ), \+ # end A_u_sech\n\n Action['A_u_csch'](\n Evaluate('function'='chan geUnderstoodRules(csch, CMI_csch)')\n ), # end A_u_csch\n\n Action[' A_u_arcsinh'](\n Evaluate('function'='changeUnderstoodRules(arcsinh , CMI_arcsinh)')\n ), # end A_u_arcsinh\n\n Action['A_u_arccosh'](\n Evaluate('function'='changeUnderstoodRules(arccosh, CMI_arccosh)') \n ), # end A_u_cosh\n\n Action['A_u_arctanh'](\n Evaluate('funct ion'='changeUnderstoodRules(arctanh, CMI_arctanh)')\n ), # end A_u_ar ctanh\n\n Action['A_u_arccoth'](\n Evaluate('function'='changeUnde rstoodRules(arccoth, CMI_arccoth)')\n ), # end A_u_arccoth\n\n Actio n['A_u_arcsech'](\n Evaluate('function'='changeUnderstoodRules(arcs ech, CMI_arcsech)')\n ), # end A_u_arcsech\n\n Action['A_u_arccsch'] (\n Evaluate('function'='changeUnderstoodRules(arccsch, CMI_arccsch )')\n ), # end A_u_arccsch\n\n Action['A']()\n\n) : # end maplet\n\n Student:-Calculus1:-Understand(Diff,none):\nMaplets[Display](maplet) : \n\nend use: # end use\nend proc: # end runDiffMaplet\n\n############# ###############################################\n\n\n################# ###########################################\nend module: # end DiffMap let()\nDiffMaplet:-runDiffMaplet();" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{MARK "4" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 } {PAGENUMBERS 0 1 2 33 1 1 }