\begin{page}{UXANNA}{AXIOM/NAG Expert System} \centerline{\tt{\inputbitmap{\htbmdir{}/anna_logo.xbm}}\rm} \newline \centerline{This expert system chooses, and uses, NAG numerical routines.} \begin{scroll} \blankline \indent{2} \beginmenu \menumemolink{Integration}{UXANNAInt} \blankline \menumemolink{Ordinary Differential Equations}{UXANNAOde} \blankline \menumemolink{Partial Differential Equations}{UXANNAPde} \blankline \menumemolink{Optimization}{UXANNAOpt} \vspace{10} \menumemolink{About the AXIOM/NAG Expert System}{UXANNATxt} %\unixcommand{(Postscript)}{ghostview \ \htbmdir{}/anna.ps} %\blankline %\menumemolink{How to use the NAGLINK}{nagLinkIntroPage} %\blankline %\menumemolink{Tutorial}{tutorialIntroPage} %\blankline %\item \menulispdownlink{Interpolation}{(|interp1|} \endmenu \indent{0} \end{scroll} %\unixcommand{Netscape}{netscape \ http:\/\/www.bath.ac.uk\/\~masbjd\/anna.html} \autobutt{HelpContents} \end{page} \begin{page}{UXANNAInt}{Integration} Welcome to the Integration section of {\tt \inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em AXIOM/NAG Expert System}. This system chooses, and uses, NAG numerical routines. \begin{scroll} \blankline \indent{2} \beginmenu \item \menulispdownlink{Integration}{(|annaInt|)}\space{}\newline \indent{5} Integrating a function over a finite or infinite range. \blankline \item \menulispdownlink{Multiple Integration}{(|annaMInt|)}\space{}\newline \indent{5} Integrating a multivariate function over a finite space. The dimensions of the space need to be 2 <= n <= 15. \blankline \menudownlink{Examples}{UXANNAIntEx}\space{}\newline \indent{5} Examples of integration. These examples cover all of the major methods. Parameters can be changed to investigate the effect on the choice of method. \endmenu \indent{0} \end{scroll} \autobutt{MainHelp} \end{page} \begin{page}{UXANNAOde}{Ordinary Differential Equations} Welcome to the Ordinary Differential Equations section of {\tt \inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em AXIOM/NAG Expert System}. This system chooses, and uses, NAG numerical routines. \begin{scroll} \blankline \blankline \indent{2} \beginmenu \item \menulispdownlink{Ordinary Differential Equations}{(|annaOde|)}\space{}\newline \indent{5} Finding a solution to an Initial Value Problem of a set of Ordinary Differential Equations. \blankline \menudownlink{Examples}{UXANNAOdeEx}\newline \indent{5} Examples of ODE problems with various features using both stiff and non-stiff methods. Parameters can be changed to investigate the effect on the choice of method. \autobutt{MainHelp} \endmenu \indent{0} \end{scroll} \end{page} \begin{page}{UXANNAOpt}{Optimization} Welcome to the Optimization section of {\tt \inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em AXIOM/NAG Expert System}. This system chooses, and uses, NAG numerical routines. \begin{scroll} \blankline \indent{2} \beginmenu \item \menulispdownlink{Optimization of a Single Multivariate Function} {(|annaOpt|)}\space{}\newline \indent{6} Finding the minimum of a function in n variables. \newline \indent{6} Linear Programming and Quadratic Programming problems. \blankline \indent{4} \beginmenu \menudownlink{Examples}{UXANNAOptEx}\newline \indent{8} Examples of optimization problems with various constraint features. \endmenu \blankline \item \menulispdownlink{Optimization of a set of observations of a data set} {(|annaOpt2|)}\space{}\newline \indent{6} Least-squares problems. \newline \indent{6} Checking the goodness of fit of a least-squares model. \blankline \indent{4} \beginmenu \menudownlink{Examples}{UXANNAOpt2Ex}\newline \indent{8} Examples of least squares problems. \endmenu \endmenu \indent{0} \end{scroll} \autobutt{MainHelp} \end{page} \begin{page}{UXANNAPde}{Partial Differential Equations} Welcome to the Partial Differential Equations section of {\tt \inputbitmap{\htbmdir{}/anna.xbm.tiny}}, the {\em AXIOM/NAG Expert System}. \begin{scroll} \indent{2} \beginmenu \menulispdownlink{Second Order Elliptic Partial Differential Equation}{(|annaPDESolve|)} \newline \indent{4} Discretizing the PDE: \newline \centerline{\inputbitmap{\htbmdir{}/d03eef.xbm}} defined on a rectangular region with boundary conditions of the form \centerline{\inputbitmap{\htbmdir{}/d03eef1.bitmap}} and solving the resulting seven-diagonal finite difference equations using a multigrid technique. \blankline %\menulispdownlink{Helmholtz Equation in 3-D, Cartesian Coordinates}{(|d03fafVars|)} %\newline %\indent{4} Descretizing the PDE: %\newline %\centerline{\inputbitmap{\htbmdir{}/d03faf.xbm}} %and solving the resulting %seven-diagonal finite difference equations using a method based on the Fast %Fourier Transform. \endmenu \end{scroll} \autobutt{MainHelp} \end{page} \begin{page}{UXANNAOptEx}{Examples Using the AXIOM/NAG Expert System} \begin{scroll} Select any of these examples and you will be presented with a page which contains active areas for the function and its parameters. \blankline These parameters can be altered by selecting the area and replacing the default parameters by the new values. \blankline \beginmenu \item \menulispdownlink{Example 1: \newline \indent{2} Minimize the function: \centerline{\inputbitmap{\htbmdir{}/opt1.xbm}}}{(|annaOptDefaultSolve1|)}\space{} \blankline \item \menulispdownlink{Example 2: \newline \indent{2} Minimize the function: \centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}}{(|annaOptDefaultSolve2|)}\space{} \newline \indent{3} With conditions: \centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}} \blankline \item \menulispdownlink{Example 3: \newline \indent{2} Minimize the function: \centerline{\inputbitmap{\htbmdir{}/opt3.xbm}}}{(|annaOptDefaultSolve3|)}\space{} \newline \indent{3} With conditions: \centerline{\inputbitmap{\htbmdir{}/opt3c1.xbm}} \centerline{\inputbitmap{\htbmdir{}/opt3c2.xbm}} \blankline \item \menulispdownlink{Example 4: \newline \indent{2} Minimize the function: \centerline{\inputbitmap{\htbmdir{}/opt4.xbm}} }{(|annaOptDefaultSolve4|)}\space{} \newline \indent{3} With conditions: \centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}} \centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}} \centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}} \blankline \item \menulispdownlink{Example 5: \newline \indent{2} Minimize the function: \centerline{\inputbitmap{\htbmdir{}/opt5.xbm}} }{(|annaOptDefaultSolve5|)}\space{} \newline \indent{3} With conditions: \centerline{\inputbitmap{\htbmdir{}/opt4c1.xbm}} \centerline{\inputbitmap{\htbmdir{}/opt4c2.xbm}} \centerline{\inputbitmap{\htbmdir{}/opt4c3.xbm}} \blankline \endmenu \end{scroll} \autobutt{Mainhelp} \end{page} \begin{page}{UXANNAOpt2Ex}{Examples Using the AXIOM/NAG Expert System} \begin{scroll} Select this example and you will be presented with a page which contains active areas for the function and its parameters. \blankline These parameters can be altered by selecting the area and replacing the default parameters by the new values. \blankline \beginmenu \blankline \item \menulispdownlink{Example 1: \newline \indent{2} Calculate a least-squares minimization of the following functions: \centerline{\inputbitmap{\htbmdir{}/opt61.xbm}} \centerline{\inputbitmap{\htbmdir{}/opt62.xbm}} \centerline{\inputbitmap{\htbmdir{}/opt63.xbm}}} {(|annaOpt2DefaultSolve|)}\space{} \endmenu \end{scroll} \autobutt{MainHelp} \end{page} \begin{page}{UXANNAIntEx}{Examples Using the AXIOM/NAG Expert System} \begin{scroll} Select any of these examples and you will be presented with a page which contains active areas for the function and its parameters. \blankline These parameters can be altered by selecting the area and replacing the default parameters by the new values. In this way you can investigate the effect of the new parameters on the choice of method. \blankline \beginmenu \item \menulispdownlink{Example 1: \newline \centerline{\inputbitmap{\htbmdir{}/int1.xbm}}}{(|annaFoo|)}\space{} \blankline \item \menulispdownlink{Example 2: \newline \centerline{\inputbitmap{\htbmdir{}/int2.xbm}}}{(|annaBar|)}\space{} \blankline \item \menulispdownlink{Example 3: \newline \centerline{\inputbitmap{\htbmdir{}/int3.xbm}}}{(|annaJoe|)}\space{} \blankline \item \menulispdownlink{Example 4: \newline \centerline{\inputbitmap{\htbmdir{}/int4.xbm}}}{(|annaSue|)}\space{} \blankline \item \menulispdownlink{Example 5: \newline \centerline{\inputbitmap{\htbmdir{}/int5.xbm}}}{(|annaAnn|)}\space{} \blankline \item \menulispdownlink{Example 6: \newline \centerline{\inputbitmap{\htbmdir{}/int6.xbm}}}{(|annaBab|)}\space{} \blankline \item \menulispdownlink{Example 7: \newline \centerline{\inputbitmap{\htbmdir{}/int7.xbm}}}{(|annaFnar|)}\space{} \blankline \item \menulispdownlink{Example 8: \newline \centerline{\inputbitmap{\htbmdir{}/int8.xbm}}}{(|annaDan|)}\space{} \blankline \item \menulispdownlink{Example 9: \newline \centerline{\inputbitmap{\htbmdir{}/int9.xbm}}}{(|annaBlah|)}\space{} \blankline \item \menulispdownlink{Example 10: \newline \centerline{\inputbitmap{\htbmdir{}/int10.xbm}}}{(|annaTub|)}\space{} \blankline \item \menulispdownlink{Example 11: \newline \centerline{\inputbitmap{\htbmdir{}/int13.xbm}}}{(|annaRats|)}\space{} \blankline \item \menulispdownlink{Example 12: \newline \centerline{\inputbitmap{\htbmdir{}/int11.xbm}}}{(|annaMInt|)}\space{} \endmenu \end{scroll} \autobutt{MainHelp} \end{page} \begin{page}{UXANNAOdeEx}{Examples Using the AXIOM/NAG Expert System} \begin{scroll} Analyses the function for various attributes, chooses and then uses a suitable ODE solver to provide a solution to the system of n ODEs \center{\htbitmap{d02gaf},} for i = 1,2,...,n. \blankline Select either of these examples and you will be presented with a page which contains active areas for the function and its parameters. \blankline These parameters can be altered by selecting the area and replacing the default parameters by the new values. In this way you can investigate the effect of the new parameters on the choice of method. \blankline \beginmenu \item \menulispdownlink{Example 1: \tab{12} \inputbitmap{\htbmdir{}/ode1.xbm}}{(|annaOdeDefaultSolve1|)} \blankline with initial conditions: \newline \tab{12}\inputbitmap{\htbmdir{}/y1.xbm} \space{1} and \space{1} \inputbitmap{\htbmdir{}/x1.xbm} \blankline \blankline \blankline \item \menulispdownlink{Example 2: \tab{12} \inputbitmap{\htbmdir{}/ode2.xbm}}{(|annaOdeDefaultSolve2|)} \blankline with initial conditions: \newline \tab{12}\inputbitmap{\htbmdir{}/y2.xbm} \space{1} and \space{1} \inputbitmap{\htbmdir{}/x1.xbm} \blankline \blankline \blankline \endmenu \end{scroll} \autobutt{MainHelp} \end{page} \begin{page}{UXANNATxt}{About the AXIOM/NAG Expert System} \begin{scroll} \centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm} \vspace{-30}\horizontalline In applied mathematics, electronic and chemical engineering, the modelling process can produce a number of mathematical problems which require numerical solutions for which symbolic methods are either not possible or not obvious. With the plethora of numerical library routines for the solution of these problems often the numerical analyst has to answer the question {\em Which routine to choose?} \blankline Some analysis needs to be carried out before the appropriate routine can be identified i.e. {\em How stiff is this ODE?} and {\em Is this function continuous?} It may well be the case that more than one routine is applicable to the problem. So the question may become {\em Which is likely to be the best?} Such a choice may be critical for both accuracy and efficiency. \blankline An expert system is thus required to make this choice based on the result of its own analysis of the problem, call the routine and act on the outcome. This may be to put the answer in a relevant form or react to an apparent failure of the chosen routine and thus choose and call an alternative. It should also have sufficient explanation mechanisms to inform on the choice of routine and the reasons for that choice. \blankline \end{scroll} \downlink{ Examples }{UXANNAEx} \downlink{ Introduction }{UXANNAIntro} \downlink{ Decision Agents }{UXANNADec} \downlink{ Inference Mechanisms }{UXANNAInfer} \downlink{ Measure Functions }{UXANNAMeas} \end{page} \begin{page}{UXANNAIntro}{Introduction to the AXIOM/NAG Expert System} \begin{scroll} \centerline{\tt\inputbitmap{\htbmdir{}/anna_logo.xbm}\rm} \vspace{-30}\horizontalline Deciding amongst, and then implementing, several possible approaches to solving a numerical problem can be daunting for a novice user, or tedious for an expert. Different attributes of the problem need to be identified and their possible interactions weighed up before a final decision about which method to use can be made. \blankline The implementation is then largely an automatic, if laborious, process of writing, compiling and linking usually Fortran code. The aim is to build an expert system which will use computer algebra to analyse such features of a problem, inference mechanisms and a knowledge base to choose a numerical method appropriate to the solution of a given problem. \blankline Any interactive system is constrained by the need to provide a reasonable response time for the user. Given the complexity of some of the analysis our system will need to do, it is clear that we should only aim to select a good method, rather than try to identify the best one available. The overall goal is to provide a ``black-box'' interface to numerical software which allows non-experts access to its full potential. It will also provide explanation mechanisms commensurate with its role as a teaching aid. \blankline Given, say, an integration to perform (which may or may not be able to be handled symbolically), the system should choose and apply an appropriate method, thus mirroring as closely as possible the way that an experienced numerical analyst would think so, for example, given an integration to perform:\newline {\it \centerline{\inputbitmap{\htbmdir{}/int1.xbm}}} \newline the experienced analyst would see that the integral is semi-infinite and transform it by splitting the range and transforming the integral over {\it [1,\inputbitmap{\htbmdir{}/infty.xbm}]} into an integral over {\it [0,1] } using the transformation {\it x -> 1/t}. A different numerical routine might be used over each sub-region and the results added to give the final answer. \blankline It then requires the translation of the problem into Fortran code which may be extensive. Even with this simple example, the process is quite involved. \blankline \end{scroll} \autobuttons \downlink{ Decision Agents }{UXANNADec} \downlink{ Inference Mechanisms }{UXANNAInfer} \downlink{ Method Domains }{UXANNAMeth} \downlink{ Measure Functions }{UXANNAMeas} \end{page} \begin{page}{UXANNAEx}{Example using the AXIOM/NAG Expert System} \begin{scroll} \xtc{ {\bf Example 1}: The integral {\centerline{\inputbitmap{\htbmdir{}/int1.xbm}}} \newline is performed as follows: \blankline }{} \xtc{ }{ \spadpaste{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans} } } \blankline \xtc{ It creates a composite structure for which the field containing the result can be expanded as required.\blankline }{ \spadpaste{ans . 'result\free{ans}} } \blankline \xtc{ }{ \spadpaste{ans . 'abserr\free{ans}} } \blankline This system has performed the analysis described above, done the necessary problem transformation, written any necessary Fortran, called two different numerical routines, and amalgamated their results. This whole process was transparent to the user. \end{scroll} \autobuttons \downlink{Example 2}{UXANNAEx2} %\downlink{Decision Agents}{UXANNADec} \end{page} \begin{page}{UXANNAEx2}{Example using the AXIOM/NAG Expert System} \begin{scroll} \xtc{ {\bf Example 2}: The ODE {\centerline{\inputbitmap{\htbmdir{}/ode3.xbm}\space{1}with \space{1} {\inputbitmap{\htbmdir{}/y3.xbm}}}} \newline could be solved as follows: \blankline }{} \xtc{ }{ \spadpaste{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0, [1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2} } } \blankline \xtc{ It creates a composite structure for which the field containing the result can be expanded as required.\blankline }{ \spadpaste{ans2 . 'result\free{ans2}} } \blankline \xtc{ }{ \spadpaste{ans2 . 'y\free{ans2}} } \blankline \end{scroll} \autobuttons \downlink{Example 3}{UXANNAEx3} %\downlink{Decision Agents}{UXANNADec} \end{page} \begin{page}{UXANNAEx3}{Example using the AXIOM/NAG Expert System} \begin{scroll} \xtc{ {\bf Example 3}: The function {\centerline{\inputbitmap{\htbmdir{}/opt2.xbm}}} with simple bounds {\centerline{\inputbitmap{\htbmdir{}/opt2c.xbm}}} \newline could be minimized as follows: \blankline }{} \xtc{ }{ \spadpaste{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + (X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], [3,0,\%plusInfinity,3])\bound{ans3} } } \blankline \xtc{ It creates a composite structure for which the field containing the minimum can be expanded as required.\blankline }{ \spadpaste{ans3 . objf\free{ans3}} } \blankline \xtc{ }{ \spadpaste{ans3 . x\free{ans3}} } \blankline \xtc{ }{ \spadpaste{ans3 . attributes\free{ans3}} } \blankline \end{scroll} \autobuttons \downlink{Decision Agents}{UXANNADec} \end{page} \begin{page}{UXANNADec}{Decision Agents} \begin{scroll} \blankline Some features are either present or absent in a problem. Examples of such binary decisions include {\em is a matrix symmetric?} and {\em is a function continuous?} However in practice many questions are about the {\em degree} to which a problem exhibits a property: {\em how much does a function oscillate?}, or {\em how stiff are these differential equations?} \blankline We have therefore created decision agents of two types, reflecting their property --- {\em Binary Agents} are Boolean functions returning either true or false and {\em Intensity Functions} are quantitative and return a range of different values, either numerical or structured types. The framework we are developing is able to deal with both these forms of information. \blankline In any given problem area (for example solving ordinary differential equations, optimization etc.) we have a selection of {\em methods}. These might be to use a particular NAG routine, or they might involve employing a higher-level strategy such as transforming the problem into an equivalent, but easier to solve, form. \blankline Associated with every method we define a {\em measure function} which assesses the suitability of that method to a particular problem. Each measure function has access to a range of symbolic {\em agents} which can answer questions about the various properties of the problem in hand. \blankline \end{scroll} \downlink{ Inference Mechanisms }{UXANNAInfer} \downlink{ Method Domains }{UXANNAMeth} \downlink{ Measure Functions }{UXANNAMeas} \downlink{ Computational Agents }{UXANNAAgent} \end{page} \begin{page}{UXANNAInfer}{Inference Mechanisms} \begin{scroll} \blankline The inference machine will take the problem description as provided by the user and perform an initial analysis to verify its validity. It will consider, in turn, all of the available methods within its knowledge base which might solve that problem. In doing so it analyses the input problem to find out about any attributes that could affect the ability of the methods under consideration to perform effectively. \blankline Some of these measures may use lazy evaluation in the sense that, if a method already assessed is believed to be a good candidate, and if evaluating the current measure will be relatively expensive, then that measure will not be evaluated unless later evidence shows that the selected method is not, in fact, a successful strategy, for example if it has failed. \end{scroll} \downlink{ Method Domains }{UXANNAMeth} \downlink{ Measure Functions }{UXANNAMeas} \downlink{ Computational Agents }{UXANNAAgent} \downlink{ Examples }{UXANNAEx} \end{page} \begin{page}{UXANNAMeth}{Method Domains} \begin{scroll} \blankline An AXIOM {\em domain} has been created for each method or strategy for solving the problem. These method domains each implement two functions with a uniform (method independant) interface. \blankline {\bf measure:} A function which calculates an estimate of suitability of this particular method to the problem if there is a possibility that the method under consideration is more appropriate than one already investigated. \blankline If it may be possible to improve on the current favourite method, the function will call computational agents to analyse the problem for specific features and calculate the measure from the results these agents return, using a variation on the Lucks/Gladwell intensity and compatibility model if conflict between attributes, as investigated by these computational agents, may be present. \blankline {\bf implementation:} A function which may be one of two distinct kinds. The first kind uses the interface to the NAG Library to call a particular routine with the required parameters. Some of the parameters may need to be calculated from the data provided before the external function call. \blankline The other kind will apply a ``high level'' strategy to try to solve the problem e.g.~a transformation of an expression from one that is difficult to solve to one which is easier, or a splitting of the problem into several more easily solvable parts. For example, for a solution of the equation above, since the integral is semi-infinite we might wish to transform the range by, say, using the mapping {\it y -> 1/x} on the section {\it 1 < x < \inputbitmap{\htbmdir{}/infty.xbm}}) and adding the result to the unmapped section {\it 0 < x < 1}. \blankline \end{scroll} \downlink{ Measure Functions }{UXANNAMeas} \downlink{ Computational Agents }{UXANNAAgent} \downlink{ Examples }{UXANNAEx} \end{page} \begin{page}{UXANNAMeas}{Measure Functions} \begin{scroll} \blankline Each measure function will estimate the ability of a particular method to solve a problem. It will consult whichever agents are needed to perform analysis on the problem in order to calculate the measure. There is a parameter which would contain the best compatibility value found so far. \blankline However, the interpretation we give to the results of some tests is not always clear-cut. If a set of tests give conflicting advice as to the appropriateness of a particular method, it becomes important to decide not only {\it whether} certain properties are present but also their {\it degree}. This gives us a basis for estimating the compatibility of each property. \blankline We have taken for our model the system recommended by Lucks and Gladwell which uses a system of measurement of compatibility allowing for interaction and conflict between a number of attributes. All of these processes may not be required if the choice is clear-cut e.g. we have an integral to calculate which has a particular singularity structure for which one particular method has been specifically constructed. However, for more difficult cases a composite picture should be built up to calculate a true measurement. \blankline How the compatibility functions interpret the measurements of various attributes is up to them and may vary between differing methods. It is this area that takes as its basis the {\it judgement} of Numerical Analysis `experts' whether that be from the documentation (which may be deficient in certain respects) or from alternative sources. However, its assessment of the suitability or otherwise of a particular method is reflected in a single normalised value facilitating the direct comparison of the suitability of a number of possible methods. \blankline \end{scroll} \downlink{ Computational Agents }{UXANNAAgent} \downlink{ Examples }{UXANNAEx} \end{page} \begin{page}{UXANNAAgent}{Computational Agents} \begin{scroll} \blankline Computational Agents are those program segments which investigate the attributes of the input function or functions, such as {\bf stiffnessAndStabilityOfODEIF} (the {\em IF} indicates that it is an {\em Intensity Function} i.e. one that returns a normalised real number or a set of normalised real numbers). They are usually functions or programs written completely in the \Language{} language and implemented using computer algebra. \blankline Some agents will be common to more than one problem domain whereas others will be specific to a single domain. They also vary greatly in their complexity. It is a fairly simple task to return details about the range of a function since this information will have been included in the problem specification. It is a different order of complexity to return details of its singularity structure. \blankline \xtc{ As an example, here is a call to the computational agent {\bf singularitiesOf} to obtain the list of singularities of the function {\it tan x} which are in the range {\it 0..12\inputbitmap{\htbmdir{}/pi.xbm}}: \blankline }{ } \xtc{ }{ \spadpaste{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT \free{lib3} } } \blankline Each of these computational agents which may be called by a number of method domains retain their output in a dynamic hash-table, so speeding the process and retaining efficiency. \end{scroll} \downlink{ Examples }{UXANNAEx} \end{page}