InstallAnalysisClassesAA:
PROC [] ~ {
local declarations
summationClass, integrationClass, indefIntClass, nRadicalClass, radicalClass, limitClass, dDxClass, partialDerivClass: CompoundClass;
lbArg, ubArg, summandArg, llimArg, ulimArg, integrandArg, wrtArg, nArg, radicandArg, ofArg, approachesArg, differandArg: Argument;
sigmaSym, integralSym, dxSym, lineSym, radRootSym, radLineSym, integralSpaceSym, limSym, limSpaceSym, radSpaceSym, dOfSym, partialOfSym, partialWrtSym: Symbol;
numerSpSym, denomSpSym: Symbol;
define info for "summation lowerbound upperbound summand"
lbArg ← MakeArgument[$lowerbound, NIL, script];
ubArg ← MakeArgument[$upperbound, NIL, script];
summandArg ← MakeArgument[$summand, LIST[$aliasHot], normal];
sigmaSym ← MakeSymbol[$sigma, LIST[$aliasOp], normal, MathConstructors.MakeBigMathSym['\172]];
define info for indefinite & definite integrals (normal & surface)
llimArg ← MakeArgument[$lowerlimit, NIL, script];
ulimArg ← MakeArgument[$upperlimit, NIL, script];
integrandArg ← MakeArgument[$integrand, LIST[$aliasHot], normal];
wrtArg ← MakeArgument[$wrt, NIL, normal];
integralSym ← MakeSymbol[$integral, LIST[$aliasOp], normal, MathConstructors.MakeBigMathSym['\165]];
dxSym ← MakeSymbol[$dx, NIL, normal, MathConstructors.MakeItalSym['d]];
integralSpaceSym ← MakeSymbol[$space, LIST[$aliasSpace], normal, MathConstructors.MakeSpace[$thick]];
define info for "dDx differandArg wrtArg"
denomSpSym ← MakeSymbol[$bottomSpace, LIST[$aliasSpace], normal, MathConstructors.MakeSpace[$medium]];
numerSpSym ← MakeSymbol[$topSpace, LIST[$aliasSpace], normal, MathConstructors.MakeSpace[$medium]];
lineSym ← MakeSymbol[$fractionBar, LIST[$aliasLine], normal, MathConstructors.MakeLine[]];
differandArg ← MakeArgument[$differand, LIST[$aliasHot], normal];
dOfSym ← MakeSymbol[$dOf, NIL, normal, MathConstructors.MakeItalSym['d]];
define info for "PartialDeriv differandArg wrtArg"
partialOfSym ← MakeSymbol[$partialOf, NIL, normal, MathConstructors.MakeBigMathSym['\272]];
partialWrtSym ← MakeSymbol[$partialWrt, NIL, normal, MathConstructors.MakeBigMathSym['\272]];
define info for "radical n radicand"
nArg ← MakeArgument[$n, LIST[$aliasB], script];
radicandArg ← MakeArgument[$radicand, LIST[$aliasA, $aliasHot], normal];
radRootSym ← MakeSymbol[$radRoot, NIL, normal, MathConstructors.MakeBigMathSym['\174]];
radLineSym← MakeSymbol[$radLine, LIST[$aliasLine], normal, MathConstructors.MakeLine[]];
radSpaceSym ← MakeSymbol[$space, LIST[$aliasSpace], normal, MathConstructors.MakeSpace[$medium]];
define info for limits
ofArg ← MakeArgument[$of, LIST[$aliasA, $aliasHot], normal];
approachesArg ← MakeArgument[$approaches, NIL, script];
limSpaceSym ← MakeSymbol[$space, LIST[$aliasSpace], normal, MathConstructors.MakeSpace[$limit]];
limSym ← MakeSymbol[$lim, NIL, script, MathConstructors.MakePlainRope["lim"]];
summationClass ← MakeCompoundClass[$summation, op, "summation", LIST[lbArg, ubArg, summandArg], LIST[sigmaSym], SummationBoxRule, SummationCompRule, "(summation $lowerbound $upperbound $summand)"];
integrationClass ← MakeCompoundClass[$integration, op, "def integration", LIST[llimArg, ulimArg, integrandArg, wrtArg], LIST[integralSym, dxSym, integralSpaceSym], DefiniteIntBoxRule, IntegrationCompRule, "(integral $lowerlimit $upperlimit $integrand $wrt)", "Int[$integrand, $wrt, $lowerlimit, $upperlimit]"];
indefIntClass ← MakeCompoundClass[$indefInt, op, "indef integration", LIST[integrandArg, wrtArg], LIST[integralSym, dxSym, integralSpaceSym], IndefiniteIntBoxRule, IndefiniteIntCompRule, "(indefIntegral $integrand $wrt)", "int($integrand, $wrt)", "Int[$integrand, $wrt]"];
dDxClass ← MakeCompoundClass[$dDx, over, "dF / dx", LIST[differandArg, wrtArg], LIST[lineSym, dOfSym, dxSym, numerSpSym, denomSpSym], dDxBoxRule, dDxCompRule, "d $differand / d $wrt", "df($differand, $wrt)", "Diff[$differand, $wrt]"];
partialDerivClass ← MakeCompoundClass[$partialDeriv, over, "partial Derivative", LIST[differandArg, wrtArg], LIST[lineSym, partialOfSym, partialWrtSym, numerSpSym, denomSpSym], PartialDerivBoxRule, PartialDerivCompRule, "partial $differand / partial $wrt", "df($differand, $wrt)", "Diff[$differand, $wrt]"];
nRadicalClass ← MakeCompoundClass[$nRadical, radical, "nth radical", LIST[nArg, radicandArg], LIST[radRootSym, radLineSym, radSpaceSym], NRadicalBoxRule, NRadicalCompRule, "(nthRoot $radicand $n)"];
radicalClass ← MakeCompoundClass[$radical, radical, "radical", LIST[radicandArg], LIST[radRootSym, radLineSym, radSpaceSym], RadicalBoxRule, RadicalCompRule, "(Root $radicand)"];
limitClass ← MakeCompoundClass[$limit, other, "limit", LIST[approachesArg, ofArg], LIST[limSpaceSym, limSym], FixedSizeBoxRule, LimitCompRule, "(limit $approaches $of)"];
Register compound classes in user-friendly order
MathDB.InstallCompoundClass[summationClass];
MathDB.AddOperator[summationClass, $Analysis];
MathDB.InstallCompoundClass[limitClass];
MathDB.AddOperator[limitClass, $Analysis];
MathDB.InstallCompoundClass[integrationClass];
MathDB.AddOperator[integrationClass, $Analysis];
MathDB.InstallCompoundClass[indefIntClass];
MathDB.AddOperator[indefIntClass, $Analysis];
MathDB.InstallCompoundClass[dDxClass];
MathDB.AddOperator[dDxClass, $Analysis];
MathDB.InstallCompoundClass[partialDerivClass];
MathDB.AddOperator[partialDerivClass, $Analysis];
MathDB.InstallCompoundClass[radicalClass];
MathDB.AddOperator[radicalClass, $Analysis];
MathDB.InstallCompoundClass[nRadicalClass];
MathDB.AddOperator[nRadicalClass, $Analysis];
};