CAMINOREAL: AN INTERACTIVE MATHEMATICAL NOTEBOOK CAMINOREAL: AN INTERACTIVE MATHEMATICAL NOTEBOOK CAMINOREAL: AN INTERACTIVE MATHEMATICAL NOTEBOOK SUBMITTED TO EP88 FOR PUBLICATION SUBMITTED TO EP88 FOR PUBLICATION SUBMITTED TO EP88 FOR PUBLICATION CaminoReal: An Interactive Mathematical Notebook Dennis Arnon, Richard Beach, Kevin McIsaac, and Carl Waldspurger c Copyright 1987 Xerox Corporation. All rights reserved. Abstract: Four broad categories of mathematical software are numerical computation, mathematical typesetting, computer algebra (symbolic mathematics), and ``technical electronic mail'' (mail that contains formatted mathematical expressions). In each of these categories one finds powerful and sophisticated systems. Nonetheless, what one really would like is simultaneous, integrated access to all four types of functionality. CaminoReal is a working system that addresses this need. It is part of Cedar, the programming environment of Xerox PARC's Computer Science Laboratory, and is used in conjunction with Tioga, Cedar's multimedia document editor. Printing and management of other document components, such as text, graphics, and voice, is provided by Tioga. For computation, CaminoReal offers a small built-in algebra package based on the notions of objects and domains, plus access to ``algebra servers'' on a network. Mathematical expressions are exchanged among CaminoReal, Tioga, and these algebra servers in pure functional notation. Our current algebra servers are the Reduce, SMP, and SAC-2 computer algebra systems. This document has been produced using Tioga/CaminoReal. Keywords: computational mathematics, document processing, mathematical typesetting, technical documents, mathematics editing, WYSIWYG, user interfaces, direct manipulation, computer algebra, symbolic mathematical computation, object-oriented programming XEROX Xerox Corporation Palo Alto Research Center 3333 Coyote Hill Road Palo Alto, California 94304 DRAFT  Submitted to EP88 for publication  DRAFT There is no `royal road' to geometry. Euclid, said to Ptolemy I 1. Introduction 1.1 Overview of CaminoReal CaminoReal is a system for direct manipulation of mathematical expressions, whether as part of a technical document or as input and outputs of a computational engine. CaminoReal supports interactive, syntax-directed, two-dimensional, WYSIWYG editing of mathematical expressions, placing/fetching such expressions in/from formatted documents, and manipulating algebraic expressions. Computation can be performed through the same user interface either by using a small built-in algebra package or accessing well-known algebra systems such as Reduce [Hearn, 1982], SMP [Wolfram, 1985], and SAC-2 [Collins, 1980] over a network. The internal algebra package is based on an object-oriented paradigm that supports polymorphic procedures. For example, with CaminoReal one can easily create and perform simple arithmetic on matrices of polynomials with complex number coefficients, or matrices of such matrices, etc. CaminoReal also provides a testbed for exploring user interface issues concerned with manipulating mathematics within documents. CaminoReal has much in common with other recent work, but we believe it has two unique features as of this writing in August 1987: 1. The tight coupling of its computation facilities with a sophisticated document system, thereby opening interesting new opportunities for computed and interactive documents (details in sections 3, 4, and 5 below). 2. The accessibility from CaminoReal of a variety of different computational ``math servers'' on our local network (details in section 4 below). These novel capabilities have been facilitated by building CaminoReal upon the rich base provided by Cedar, the programming environment of the Computer Science Laboratory at Xerox PARC [Swinehart et al. 1986, Donahue 1986]. CaminoReal also depends greatly on Tioga, Cedar's multimedia document editor. Tioga provides document production facilities for printing and managing other document constituents such as text, graphics, and voice. The screen, mouse actions and keyboard input are managed by the Cedar viewers package. A viewer is a window that can be scrolled and resized, and a viewer can have buttons and pop-up menus that invoke commands. The mouse is used to point and select text or expressions. CaminoReal is a prototype of a recently proposed standard architecture [Arnon, 1987] for so-called ``mathematical systems,'' in which one can edit the mathematical notation interactively, display mathematics in its traditional two-dimensional appearance, compute symbolically or numerically with the mathematical expressions, and format and organize documents containing such mathematical objects. We summarize this architecture in section 2 of this paper. CaminoReal is composed of three major components: Meddle, an interactive mathematics expression editor, AlgebraStructures, an exploratory domain-based algebra system with remote access to other algebra services via distributed network protocols, and Tioga, the integrated multimedia document production system. Section 3 below discusses Meddle and Tioga, and section 4 covers AlgebraStructures and additional means of computation. In section 4.2 we explain some of the reasons why we believe that associating domains with mathematical expressions can be a significant help in document creation, proofreading and computation. CaminoReal supports the creation of ``interactive'' technical documents. For example, the user can browse a typeset draft of a technical document on the workstation screen, select, edit and compute with mathematical expressions in the document (besides editing other document constituents, of course), and insert the resulting expressions back into the document. One can extend this scenario to the notion of a ``computed document,'' that is, a document with imbedded computations. Two particularly useful flavors of computed documents are mathematical form letters and spreadsheets, which we discuss in section 5. 1.2 Previous work In the 27 years since J.C.R. Licklider presented the notion of man-computer symbiosis [Licklider 1960], there have been continuous efforts to define and build such ``symbiotic systems'' for mathematical work. Clapp and Kain's Magic Paper system [1963], Minsky's MATHSCOPE proposal [1963], and Martin's Symbolic Mathematical Laboratory [1967] appear to be the earliest. The papers of Sammet [1966], Griesmer/Jenks [1971], Sundblad [1974], Ng [1979], Berman/Kulp [1979], Hearn [1980, 1982], Allen/Nix/Perlis [1981], Foster [1984], Engeler [1985], and Fich [1986] chronicle subsequent progress and offer pointers to the future. MathScribe [Smith/Soiffer 1986], MathCAD [MathSOFT 1986], the Dynamicist's Workbench [Abelson 1987], MUFIE [Spirkovska 1986], and the Engineering/Scientific Workstation [Bloomberg/Hogg 1987] are representative examples of recent work. Following Licklider and most of the works just cited, when we discuss mathematical systems in this paper, we exclude from consideration those aspects that pertain to intelligence, learning, and automated reasoning. These are issues of compelling interest, but we believe that certain more mundane topics deserve greater near-term priority. Much remains to be done before we have satisfactory ``mundane'' systems, and we need good ``dumb'' systems before we try for good ``smart'' ones. Some examples of the sort of ``intelligence'' that we exclude from consideration are: the "mentor" and problem-solving capabilities projected for MACSYMA in section I of Martin/Fateman [1971], the English-speaking MACSYMA Advisor described in Genesereth [1977], the artificial intelligence aspects of the system design in Calmet/Lugiez [1987], the tutoring abilities of the calculus environment described in Suppes et al. [1987], and the theorem proving and heuristic reasoning functionality described in Bundy [1986]. Our work on CaminoReal, like most other current work in this field, leverages off certain hardware and software developments. In hardware, these are: (1) high-resolution screens and printers, (2) pointing devices, such as mice, light-pens and touch-sensitive screens, (3) high-speed networks, and (4) personal computers. Important software developments are: (1) the emergence of large collections of sophisticated and powerful symbolic and numerical software, (2) the rapid diffusion of high-quality electronic publishing systems that utilize the hardware devices just enumerated, and (3) the broad acceptance of certain user interface paradigms for interactive software, such as WYSIWYG editing, direct manipulation [Shneidermann 1983], menus, windows, holophrasting [Koved/Shneidermann 1986], icons, and browsers. Certain of these developments originated at Xerox PARC [Crecine 1986], and most are well integrated into the Cedar environment. We view electronic mail as a form of electronic publishing. Previous work on mathematical systems has not dealt conclusively with the integration of documents and computation. As detailed in the references [Wactlar 1964], [Foderaro 1979], and [Fateman 1987], a number of translators for computational systems have been built for converting internal representations of mathematical expressions into typeset quality output. However, this has been a one-way path. Once the conversion is done, one cannot subsequently access the expressions for computation. Although a number of interactive WYSIWYG mathematical systems, such as MathCAD [MathSoft 1986], MILO [Avitzur 1987], and INFOR [Schelter 1987], allow the production of some sort of document, only INFOR could be said to support professional-quality typesetting for text and mathematics, but it has no provision for other media such as voice or complex graphics, and is not currently connected to computational systems. Recent multimedia document systems such as Diamond [Crowley 1987] and Andrew [Morris et al. 1986] support a range of media, but are only beginning to support math in documents, and do not yet address the issue of computations with the math in a document. Allen/Nix/Perlis's experimental PEN system [Allen 1981] had some of the same goals as CaminoReal; its design decisions are a continuing resource as we attempt to build systems of broader scope. Spreadsheet systems can be said to integrate documents and computation, but they are typically limited in the types of documents that can be created, and the media that those documents can contain. For us, documents such as multimedia technical papers, automatically generated logs, and audit trails (see section 5.2 for a discussion of the latter), are a crucial part of a mathematical system. Furthermore, we want all of the documents in our system to be ``interactive''. That Tioga/CaminoReal provides a professional-quality publishing system may be gauged by the fact that this document has been produced with it. Tioga/CaminoReal documents are interactive. Hence we call CaminoReal a system for interactive mathematical notebooks. 2. Standard Mathematical Systems 2.1 Introduction The material in this section is adapted from the Report of the Workshop on Environments for Computational Mathematics [Arnon 1987]. We postulate that there is an abstract syntax for any mathematical expression (cf. [McCarthy 1962]). A piece of abstract syntax consists of an operator and a list of arguments, where each argument is (recursively) a piece of abstract syntax. Functional notation, Lisp sexpressions, directed acyclic graphs, and n-ary trees are isomorphic representations of abstract syntax. For example, the common mathematical expression X could be represented in abstract syntax by the functional notation Plus[Times[a,b],c] or the binary tree A ``Standard Mathematical Component'' (abbreviated SMC) is a collection of software and hardware modules, each with a single function, which if it reads mathematical expressions, reads them as abstract syntax, and which if it writes mathematical expressions, writes them as abstract syntax. A ``Standard Mathematical System'' (abbreviated SMS) is a collection of SMC's, which are used together and which communicate with each other in abstract syntax over a ``wire'' joining them. Clearly, there are many possible (isomorphic) abstract syntax representations for a given mathematical expression; we do not assume that the various SMC's within a single SMS all use the same form of abstract syntax. We identify five possible types of components in an SMS, which we define in section 2.2. Any particular SMS may have zero, one, or several instances of each component type. 2.2 Standard Mathematical Components 2.2.1 ED - Math Editors An ED component edits abstract syntax to abstract syntax. A particular system may have editors that operate on some other representation of mathematical expressions, such as a bitmap or a formatting language, however such an editor does not qualify as an ED. 2.2.2 DISP - Math Displayers DISP components are suites of software packages, device drivers, and hardware devices that take in an expression in abstract syntax and render it. Two examples might be (1) the combination of an abstract syntax to TEX translator, plus TEX itself, plus a printer (see [Knuth 1984] for more information on TEX), or (2) a plotting package plus a plotting device. A DISP component may or may not support ``pointing'' (selection) within an expression it has displayed. For example, a DISP that renders onto a printer probably doesn't, but a DISP driving a display screen may. If pointing is supported, then the DISP must be able to pass back the selected subexpression(s) in abstract syntax. 2.2.3 COMP - Computation Systems A COMP takes in an expression in abstract syntax, performs some computation on it, and returns the result in abstract syntax. Examples of COMP components are numerical libraries and computer algebra systems. When using a COMP as part of an SMS, questions naturally arise as to its state at the time it receives an input expression. For example, what global flags are set, or what previous expressions have been computed that the current expression may refer to? We have no good general answers to these issues at this time, however we describe CaminoReal's current behavior in section 4.2 and some possible modifications in section 4.3. 2.2.4 DOC - Document Systems The simplest example of a DOC is a text editor for documents in which mathematical expressions are stored in abstract syntax. However a DOC need have no relation to printing, so for example, database, hypertext, and electronic mail systems could all qualify as DOC components. Actually, for our purposes, a DOC is simply a system that manipulates certain data structures (which we think of as "documents" or "databases") in which we can ``park'' multiple math expressions represented in abstract syntax. Note that if math is editable in place in a document, this is not part of the DOC per se, but part of some ED and perhaps some DISP. The interactions between the various components when an editing operation takes place are: (1) the DISP and the ED process the user's input and modify the abstract syntax representation of the expression, (2) the DISP (if one is involved here, that is, if we are doing more than just showing the text of the abstract syntax) queries the DOC to be given an area (typically a box) in which to display the new expression, and (3) the DISP paints the expression in the specified box. 2.2.5 MAN - System Managers It is the function of a MAN to coordinate and connect up the ED, DISP, COMP and DOC components that comprise an SMS. Typically an SMS has one MAN component, although it might be able to switch between several. SMS's may vary greatly in the face they present to the user, and such differences may well arise from differing amounts of ``knowledge'' or sophistication possessed by their MAN components. MAN components do whatever is necessary to make the other components play together, and perhaps more besides to make life easier for the user. For example, abstract syntax provides a syntax for a communication language among SMC's, but leaves unspecified the semantics of sentences in this language. Thus, if the function (i.e. operator) names of the abstract syntax used by an ED component differ from those used by a COMP, the MAN provides the translation. The user of a SMS need not, and is encouraged not to, understand the naming conventions of the particular components it contains. As another example, a MAN may have some ``knowledge'' of the relative merits of several COMP components for different tasks, and provide automatic routing of computational requests to the most appropriate one. 2.3 Further notes on the overall architecture A typical SMS will have a "WYSIWYG expression editor" that consists of an ED and a DISP that are much more closely coupled than is suggested here. For example, the internal representations of abstract syntax in an ED and a DISP (such as a tree of boxes), might have pointers back and forth, or the two may even share a common data structure. This is acceptable, but it should always be possible to access the two components in the canonical decoupled way. This would mean that the ED should be able to receive a standard abstract syntax representation for an expression plus an editing command in abstract syntax, for example, Edit[expr, cmd], and return an abstract syntax representation for the result. Similarly the DISP should be able to receive abstract syntax over the wire and display it, and if it supports pointing, be able to return selected subexpressions in abstract syntax. The boundaries between the component types are not hard and fast. An ED might support simple computations (such as simplification, rearrangement of subexpressions, and arithmetic), or a DOC might contain a facility for displaying mathematical expressions. The key for a given software, or software/hardware module to qualify as an SMS component of one of the above types is its ability to read and write abstract syntax. Since abstract syntax is human-readable, any text editor can be used as an ED. However many users of an SMS will only want to interact with mathematics that has a typeset appearance; they should not need to know that their system talks abstract syntax within itself or to the outside world. Katz's recent proposal [Katz 1987] and others in the typesetting and documents communities, distinguish the form (appearance) of a mathematical expression from its content (meaning or value). It is a thesis of the above architecture that such a distinction cannot usefully be made. Rather, we claim that abstract syntax can convey form, meaning, or both, and that its interpretation is strictly in the eye of the beholder(s). In other words, ``meaning is just a handshake between sender and recipient'' [Arnon 1987]. 3. CaminoReal as a prototype SMS: Expression Editing and Basic Documents 3.1. The Expression Editor (ED and DISP) CaminoReal provides a stand-alone interactive expression editor called Meddle. Its user interface paradigm follows the Tioga document editor quite closely. Multiple selections are made via a mouse pointing device. Operations upon the selections are initiated both from the keyboard and from mouse activation of menu commands. These input actions are parsed by a user interface management system that uses state transitions rather than a formal grammar specification. Incremental modifications to the expression are updated on the display after each keystroke or mouse action. There may be more than one CaminoReal editor tool active at any one time. The editing paradigm is based on expression trees, with operators as interior nodes and atoms as leaves. For each operator there is a template that defines a notation for that operator. The components of such a notation are zero or more glyphs representing an "operator name", the notations for subexpressions (these are either atomic notations or, recursively, notations of the same sort), and any desired additional glyphs. For example, the summation template specifies that a Greek sigma, S, be used to denote the operator, and that there be three subexpressions: a lower bound, an upper bound and a summand. Such templates are written as procedures in the Cedar language and dynamically loaded with CaminoReal. When templates are first presented, any unfilled expressions are represented by placeholders ( X ). Thus, if we put up a summation template X , we may then replace its summand placeholder with an indefinite integral template to give X , and then continue to fill in placeholders, eventually arriving at the expression X . One may select subexpressions corresponding to subtrees by pointing at the relevant object. This strategy helps ensure that structurally correct expressions are created at the expense of freedom to manipulate all symbols in a notation. The intention is that additional operator templates be added to accommodate new notation rather than permitting the editor to rearrange subexpressions arbitrarily. To facilitate keyboard entry, a complete set of navigational commands is provided, such as select parent, sibling or child of the current selection. CaminoReal depends on four types of selections: primary, copy, move, and the keyboard caret. These selections may be in any of several CaminoReal tools. The primary selection, made by pointing and clicking with the mouse, establishes the focus of most operations. The copy selection, made by chording the keyboard SHIFT key and clicking the mouse, supplies the argument for copying a subexpression to replace the primary selection. A move selection, made by chording the keyboard CTRL key and clicking the mouse, supplies the argument for moving a subexpression to replace the primary selection. The keyboard caret identifies the expression most recently entered by a keyboard input action and determines where the next keyboard input will be directed. All editing operations are available from menu buttons and several common ones are mapped onto keyboard keys. CaminoReal uses a pseudo-parser in the Cedar user interface management system to map keystrokes into editing operations. This provides a feel similar to an operator precedence grammar, but is unfortunately not very natural. For example, the keystroke invokes the `select parent' operation, so the keyboard sequence x^2+1=0 is required to get the proper associations for the expression X . Modifications to the primary selection may occur either by a replace operation or a wrap operation. In a replace operation, the subexpression in the primary selection is deleted and a new subexpression, determined by either a keyboard input action or a menu choice, is inserted in the expression tree. In a wrap operation, the primary selection is retained and replaces one of the placeholders in the new subexpression. For example, consider the first placeholder in the addition template X as the primary selection. Typing the letter `r' replaces the first placeholder with X resulting in the new expression X , and subsequently typing the key `^' wraps a superscript template around the X to produce X (whereas replacing the X with a superscript template would produce X ). The math expression editor provides several `creature comforts' suited to interactive editing of complex notation, especially the undo command and various scaling operations to improve the readability on low resolution display screens. Previous mathematical expression editors include the Xerox Star [Kimball 1978], [McGregor 1978a, 1978b, 1980], [Becker 1987], EDIMATH [Quint 1983, 1984], DREAMS [Foster 1984], MathScribe [Smith 1986], MILO [Avitzur 1987], and INFOR [Schelter 1987]. It should be noted that although we, like many others, have been influenced by the Star equation editor, CaminoReal's Meddle editor has been designed and built from scratch in Cedar, and differs from Star's editor in ways both numerous and fundamental. 3.2. Character sets CaminoReal finesses the challenge of presenting the rich collection of multilingual and technical symbols in mathematics by utilizing the Xerox character code standard [Xerox, 1986]. This standard assigns a unique code (possibly 1, 2 or 3 bytes long) to each symbol and subsumes several international standards, such as ISO and JIS, as well as de facto standards, such as the AMS TEX math symbols [Knuth 1984]. Fonts that conform to the Xerox character code standard will have mathematical symbols in standard code positions. Should a font lack particular symbols, a backstop ``kitchen sink'' font with a glyph for every code may be automatically substituted. Otherwise, the scalable font algorithms in the Cedar Imager (see [Swinehart 1986]) ensure that symbols will appear on the display or in the document with appropriate size and shape information. Nonetheless, there remains the challenge of identifying and inputing symbols beyond the standard keyboard keys. CaminoReal employs a tentative solution by using menus for special symbols and Greek letters. Other Xerox systems use virtual keyboards to map the keys into arbitrary character codes and abbreviation name lookup translations to map token identifiers into symbols [Becker, 1987], an approach that offers food for thought. 3.3. The Integrated Document Formatter (DOC and DISP) The integration of mathematical content into a Tioga multimedia document is accomplished by defining a mathematical object class to Tioga. The class specification includes (Cedar) procedures that return a bounding box for layout formatting, and that paint the object into a given imaging context. Thus the CaminoReal DOC component (Tioga) relies on its DISP component (Meddle) to format mathematical notation. The formatted mathematics may appear either as in-line expressions or displayed notation, both of which occur in this paper. Currently Tioga views a mathematical expression in a document as a single, decorated, character, so expressions can be Tioga selections just like any other character. Putting this another way, mathematical expressions in Tioga documents are currently treated as indivisible units: they can be moved around within the document just like text, but there is no way to get at their insides while they reside in the document. Thus mathematical expressions in a Tioga document cannot currently be edited "in place", but must be extracted into a CaminoReal tool, edited there, and reinserted into the document. However, the expression evaluation operations described in section 4 below, that are part of the CaminoReal tool interface, can operate equally well on Tioga selections and CaminoReal selections. Thus computation on expressions in documents can be performed by simply pointing at them in the document and invoking the desired actions in the CaminoReal tool. 4. CaminoReal as a prototype SMS: Computation CaminoReal provides two methods for algebraic computation, both integrated through the same tool interface: (1) an experimental domain-oriented package, AlgebraStructures, executed locally in Cedar, and (2) several traditional algebra packages accessed as algebra servers over the network. One may evaluate expressions at several levels of detail, from selected subexpressions to complete expressions to entire documents (see section 5.1 for an example of the latter). The results of evaluating an expression may be alternatively presented in place or in a new CaminoReal tool. The integration of this computation capability and the interactive editing environment, especially utilizing the undo command, provides a very handy tool for exploring complicated expressions. 4.1. The AlgebraStructures Package The Cedar AlgebraStructures package supports a limited set of algebraic operations defined within a mathematical domain. Ground domains include expressions, variables, integers, booleans, (arbitrary precision) rationals, reals and complex numbers. Domain structuring operations include sets, sequences, vectors, matrices and polynomials. Evaluation of expressions proceeds bottom-up: given an operator and domains for its arguments, a suitable domain for the entire expression is determined. The design of AlgebraStructures was influenced by work such as Abdali/Cherry/Soiffer [1986] and Jenks [1984]. For example, if we create the following expression in a CaminoReal tool: X and ask the AlgebraStructures evaluator to evaluate it, then the domain will be determined to be 5X5 matrices of polynomials in x with integer coefficients. If we select the (1,1) element of the matrix and evaluate it, its domain will be determined to be the integers. If we ask for the available operations on the matrix, we get a menu appropriate to its domain, one of whose entries is Determinant. Upon selecting this operation, we get a value of X , whose domain is polynomials in x with integer coefficients. Domains could be useful for run-time checking that the edited expressions remain in an asserted domain when evaluated. These semantic checks are distinguished from ``compile-time'' checks which prevent the user from making syntactic errors while entering expressions. Domain information is also useful for guiding a MAN component to choose appropriate algebra servers for particular operations. For example, the AlgebraStructures package currently uses the SAC-2 package for polynomial GCD calculations but does its own integer GCD computations. The design of the algebra system using domains provides a convenient framework for organizing these choices. 4.2. Computation with algebra servers Algebraic computation is accomplished by selecting an expression or subexpression in a CaminoReal viewer and sending it to a specific algebra server (COMP). The MAN converts the expression to abstract syntax appropriate for the specified algebra server, and that abstract syntax is then passed over the network to the remote computer on which the algebra system exists. The resulting expression from the COMP returns via the same mechanism. Currently, a new process on the remote machine is invoked for each computation. This takes a few seconds to start up a typical COMP. Furthermore, there is no support for noncomputational communication, such as receiving error messages, querying the help databases or checking the state of a COMP. Suppose we have the following integral in a CaminoReal editor tool (Cedar users browsing this document online: select the following displayed equation and extract it into a CaminoReal tool): X Since AlgebraStructures has no integration algorithms, using it to evaluate this expression yields the result: X If we send the selected integral off to Reduce for evaluation, after about ten seconds we get back the expression X in our CaminoReal viewer. If we wish, we can display the form into which CaminoReal converts the original integral for transmission to Reduce: int(quotient(difference(1, times(2, expt(x, 3))), expt(( plus(1, expt(x, 3)) ), 2)), x) or for transmission to SMP: Int[Div[Minus[1, Mult[2, Pow[x, 3]]], Pow[( Plus[1, Pow[x, 3]] ), 2]], x] Thus, CaminoReal allows the user to compute with different algebra systems without knowing the different command names and styles used in each. However, this capability is rather primitive at the moment. CaminoReal's style of interchange of mathematical expressions may be contrasted with the directed-acyclic graphs advocated in the Iris system [Leong, 1986]. 4.3. Issues for future work on computation The ability to access multiple algebra systems through CaminoReal has raised several issues requiring future work. One issue is the synchronization of outstanding algebra requests with concurrent interactive editing. Because some algebra operations may take a considerable length of time, it is unreasonable to suspend editing completely during such an operation. It would also be desirable to permit multiple algebra requests from CaminoReal. This raises two issues: (1) the multiplexing of algebra requests to a single server and (2) the definition of the computational state for each request. One might fork a separate process for each request and provide a ``clean'' state for each new request, although the number of processes might be limited with outstanding requests queued. An irritating problem with existing algebra systems that is partly masked by CaminoReal is the choice of different names for the same command in different systems. Because the design of existing algebra systems precedes the use of abstract syntax, some translation of commands will be necessary. Additional error handling and error reporting paradigms are also necessary for the convenient integration of algebra servers. At present, the data and message streams are combined into one, making it difficult to identify errors returned by the server. Long running computations raise the necessity for inquiries to the algebra system for status and progress reporting, as well as additional controls to suspend or abort computations. The overhead and low bandwidth of communications between clients and servers may make compression and caching of conversations desirable. The underlying communications software in Cedar provides these capabilities, although they are not used at present. 5. Computed Documents 5.1. Mathematical form letters CaminoReal's expression language supports an assignment statement. Also, expressions assigned to variables are maintained in a symbol table that is global to CaminoReal across all documents and tool instances. This requires metafunctions to kill values in the environment, and special notation to identify unevaluated expressions. For example, X is our current notation for "quote X" (we chose this notation in order to clearly indicate the scope of the quoting). The function X clears the environment, while X removes only the value of the variable X (of course, variables which have not been assigned values evaluate to themselves). If desired, the math expressions imbedded in a Tioga document can be evaluated prior to being formatted whenever the document is displayed. This evaluation scheme permits expressions to be defined as functions of other expressions, and makes possible Tioga documents that are spreadsheets or mathematical form letters, or more generally, ``computed documents.'' Having the math in a technical paper computed on the fly minimizes the introduction of typographical errors, and therefore reduces the burden of proofreading. When the EvalBeforePaint flag is off (the default), CaminoReal expressions in a Tioga document are painted just as they are stored. When the EvalBeforePaint flag is on, they are evaluated before being painted. This enables the computing of a document. A Cedar command toggles the EvalBeforePaint flag. Let's look at an example. The following is the ``definition level'' of a form letter about Sylvester matrices: ==================================== Let F be defined to be X. Let G be defined to be X. Let M be the Sylvester matrix of F and G: X Then the resultant is the determinant of M, that is X ==================================== The first two expressions, which define X and X, may be thought of as the ``input data'' to the form letter, in the sense that the last two expressions are functions which depend on the first two. If we now turn EvalBeforePaint on, and simply repaint the document (on screen or printer), we get: ==================================== Let F be defined to be X. Let G be defined to be X. Let M be the Sylvester matrix of F and G: X Then the resultant is the determinant of M, that is X ==================================== Suppose now that we edit one of the items of input data, for example, let us suppose that we replace (at the definition level) the expression X by the expression X. Then when EvalBeforePaint is on and we repaint the document, we will get the correctly updated matrix and resultant: ==================================== Let F be defined to be X. Let G be defined to be X. Let M be the Sylvester matrix of F and G: X Then the resultant is the determinant of M, that is X ==================================== 5.2. Future work on automated proofreading, spreadsheets, audit trails. The example in the previous section showed the use of the expression environment and evaluation for generating documents. In the future, we expect to refine the use of these tools to provide more proofreading features. For example, suppose in the form letter above that we stored both the unevaluated and evaluated form of each expression. Then one need only do the (possibly expensive) evaluations occasionally, when one wishes to check and verify that the document is correct. The unevaluated expressions could thus be viewed as ``assertions'' about the actual expressions in the document, which can be checked by evaluating them and checking for equality with the evaluated form. Because spreadsheets may contain formulae and perform computations, it is natural to consider the extension of CaminoReal to provide spreadsheet capabilities in documents. An interesting issue is the provision of a naming scheme for math equations and expressions that is equivalent to the cell naming scheme in spreadsheets. The current use of a global symbol table presents some difficulties. A discussion of spreadsheets that hits on many of the issues of interest to CaminoReal can be found in Davis [1986]. Similarly, an audit trail of computations within a document is a natural extension to the ability to compute expressions. The audit trail would retain the dependency of subexpressions as well as the mathematical operations used to compute the results, so that when one expression is edited, all of the relevant changes elsewhere in the document could be computed and updated. Audit trails could be examined or edited to modify the derivation of new results. The integration of mathematical content into formatted documents through CaminoReal has provided a rich mother lode for exploring these issues and experimenting with architectures for mathematical systems. 6. Acknowledgements Thanks to Michael Plass, Ken Pier, and Christian LeCocq for technical assistance. Thanks to those in the Computer Science Lab at PARC who have used CaminoReal for their documents and computations, and suggested improvements, especially James Rauen in his work on algebraic surface display. Thanks to Alan Perlis and Alan Demers for inspiration. Dennis Arnon has been the chief architect and maintainer of CaminoReal and wrote AlgebraStructures. Carl Waldspurger wrote the expression editor Meddle. Kevin McIsaac has handled the care and feeding of algebra servers and contributed performance improvements and design ideas. Rick Beach had the earliest vision of the system architecture, helped build the connections between Meddle and Tioga, and has provided guidance and moral support throughout the project. References Abdali, K., Cherry, G. and Soiffer, N. An Object-Oriented Approach to Algebra System Design, Proc. 1986 Symp. Symbolic and Algebraic Computation (B. Char, ed.), ACM, pp. 24-30. Abelson, H., The Dynamicist's Workbench: I, Automatic Preparation of Numerical Experiments, AI Memo 955, Artificial Intelligence Laboratory, Massachusetts Institute of Technology, May 1987. Allen, T., Nix, R. and Perlis, A. PEN: A hierarchical document editor, Proc. 1981 ACM Symp. Text Manipulation, ACM SIGPLAN Notices, 16, 6 (June 1981), pp. 74-81. Arnon, D., Report of the Workshop on Environments for Computational Mathematics, held at ACM SIGGRAPH Conference, Anaheim, CA, July 27, 1987. Submitted for publication to the ACM SIGSAM Bulletin. Also Request for Comments RFC1019, ARPANET Information Center, SRI-NIC.ARPA, September 1987. Avitzur, Ron, MILO System [a Macintosh program], Palo Alto, CA 1987. Becker, J. Arabic word processing, Comm. ACM 30, 7 (July 1987) pp. 600-610. Berman, R. and Kulp, J., A new environment for computational physics, Proc. 1979 MACSYMA Users Conf. (Washington D.C., June 20-22, 1979), pp. 622-632. Bloomberg, D. and Hogg, T., Engineering/Scientific Workstation Project, Xerox PARC Technical Report GSL-87-01, Xerox Palo Alto Research Center, January 1987. Bundy, A., Discovery and reasoning in mathematics, Proc. IJCAI 1985, pp. 1221-1230. Calmet, J. and Lugiez, D., A Knowledge-Based System for Computer Algebra, ACM SIGSAM Bulletin, 21, 1, Issue #79 (Feb. 1987), pp. 7-13. Clapp, L. C. and Kain, R.Y., "A computer aid for symbolic mathematics", Proc. AFIPS 1963 Fall Joint Comp. Conf., V. 24, Nov. 1963, pp. 509-517. Collins, G. SAC-2 and ALDES now available, ACM SIGSAM Bulletin 14 (1980) p. 19. Crecine, J., The next generation of personal computers, Science, 231 (28 Feb. 1986), pp. 935-943. Crowley T., Forsdick, H., Landau, M., and Travers, V., The Diamond Multimedia Editor, Proc. USENIX 1987, pp. 1-17. Davis, R. Knowledge-Based Systems, Science, 231 (28 Feb. 1986), pp. 957-963. Donahue, J., Integration Mechanisms in Cedar, Proc. of the ACM SIGPLAN 87 Symposium on Language Issues in Programming Environments (Seattle, Wash., Jun. 1985). SIGPLAN Not. 20, 7 (July 1985). Engeler, E., Scientific computation: the integration of symbolic, numeric and graphic computation, Proc. EUROCAL '85, (B.F. Caviness, ed.), Linz, Austria, April 3-5, 1985, Springer-Verlag, Lecture Notes in Computer Science, 203 (1985), pp. 185-200 Fateman, R. TEX output from MACSYMA-like systems, unpublished manuscript, Department of Electrical Engineering and Computer Science, University of California at Berkeley, July 1987. Fich, F, Mathematics notepad, private communication, 1986. Foderaro, J. Typesetting MACSYMA Equations, Proc. 1979 MACSYMA Users Conf. (Washington D.C., June 20-22, 1979), pp. 345-361. Foster, G, DREAMS:Display Representation for Algebraic Manipulation Systems, Report CSD 84/193, Dept. of EECS, Univ. California Berkeley, April 1984. Genesereth, M., An automated consultant for MACSYMA, Proc. 1977 MACSYMA Users Conference (Berkeley, California, July 27-29, 1977), NASA CP-2012, pp. 309-314. Griesmer, J. and Jenks, R., Scratchpad/I - an interactive facility for symbolic mathematics., Proc. Second Symp. on Symbolic and Algebraic Manipulation (SIGSAM '71), ACM, pp. 42-58. Hearn, A., The Personal Algebra Machine, Proc. IFIP '80, North-Holland, Amsterdam, 1980, pp. 620-628. Hearn, A., REDUCE - a case study in algebra system development, Proc. EUROCAM '82, Marseille, France, April 1982, Lecture Notes in Computer Science, 144, Springer-Verlag, New York, 1982, pp. 263-272. Jenks, R.D. A Primer: 11 Keys to New SCRATCHPAD, Proc. EUROSAM 84, Lecture Notes in Computer Science, 174, Springer-Verlag, pp 123-147. Katz, A. Issues in Defining an Equations Representation Standard, RFC1003, ARPA Network Information Center, March 1987, reprinted in the ACM SIGSAM Bulletin (May 1987), pp. 19-24. Kimball, R., Formula User Interface Issues, Internal memo, Xerox PARC, March 8, 1978. Knuth, D.E., The TEXBook, Addison-Wesley, 1984. Koved L., Shneidermann B., Embedded menus: selecting items in context, Comm. ACM, 29, 4 (April 1986), pp. 312-318. Leong, B.L. Iris: Design of a User Interface Program for Symbolic Algebra, Proc. 1986 Symp. Symbolic and Algebraic Computation (B. Char, ed.), ACM, pp. 1-6. Licklider, JCR, Man-Computer Symbiosis, IRE Trans. on Human Factors in Electronics, HFE-1, 4-11 (1960). Martin, W., Symbolic Mathematical Laboratory, PhD thesis, MIT, Jan. 1967. Martin, W. and Fateman, R., The MACSYMA System, Proc. Second Symp. on Symbolic and Algebraic Manipulation (SIGSAM '71), ACM, pp. 59-75. MathSoft Inc, MathCAD System, 1 Kendall Square, Cambridge, MA 02139 McCarthy, J., Towards a Mathematical Theory of Computation, Proc. IFIP '62, North-Holland, Amsterdam, 1962. McGregor, S., Desktop Formula Frames Implementation, Xerox Office Products Division Internal Memo, November 1978, 13pp. McGregor, S., Star Formula Implementation, Xerox Office Products Division Internal Memo, November 1978, 3pp. McGregor, S., Tasks for Implementing Formulae in Star, Xerox Office Products Division Internal Memo, August 1980, 4pp. Minsky, M., MATHSCOPE, part I - a proposal for a mathematical manipulation-display system, Memo MAC-M-118, Artificial Intelligence Project, Project MAC, MIT, November 1963, 13pp. Morris, J. et al., Andrew: A Distributed Personal Computing Environment, Comm. ACM 29, 3 (March 1986), pp. 184-201) Ng, E., Symbolic-numeric interface: a review, Proc. EUROSAM '79, Marseille, France, June 1979, Lecture Notes in Computer Science, 72, Springer-Verlag, New York, 1979, pp. 330-345. Quint, V., An interactive system for Mathematical Text Processing, Technology and Science of Informatics, 2, 3, (1983), pp. 169-179. Quint, V., Interactive Editing of Mathematics, Proc. First International Conference on Text Processing Systems, (Dublin, Ireland, 24-26 October 1984), Boole Press, Dublin, 1984, pp. 55-68. Sammet, J., Survey of formula manipulation, Comm. ACM, 9, 8 (August 1966), pp. 555-569. Schelter, W.F., INFOR Display Editor, unpublished manuscript, Department of Mathematics, University of Texas-Austin, July 1987, 11pp. Shneiderman, B., Direct Manipulation: A Step Beyond Programming Languages, IEEE Computer, August 1983, pp. 57-69. Smith, C.J. and N. Soiffer, MathScribe: A User Interface for Computer Algebra Systems, Proc. 1986 Symp. Symbolic and Algebraic Computation (B. Char, ed.), ACM, pp. 7-12. Spirkovska, L., MUFIE: MACSYMA's user friendly interactive executive, MSc report, Department of Electrical Engineering and Computer Science, University of California at Berkeley, July 15, 1986. Sundblad, Y., Symbolic mathematical systems now and in the future, Proc. EUROSAM '74, ACM SIGSAM Bulletin, 8, 3 (August 1974), pp. 1-8. Suppes, P. et al., Applications of computer technology to pre-college calculus, first annual report, TR #310, Psychology and Education Series, Institute for Mathematical Studies in the Social Sciences, Stanford University, April 1987. Swinehart, D.C., Zellweger, P.T., Beach, R.J., and Hagmann, R.B., A Structural View of the Cedar Programming Environment, ACM Trans. on Programming Lang. and Systems 8, 4 (October 1986), p 419-490. Also available as Xerox PARC Technical Report CSL-86-1, Xerox Palo Alto Research Center, June 1986, 74pp. Wactlar, H. and Barnett, M., Mechanization of Tedious Algebra  the e Coefficients of Theoretical Chemistry, Comm. ACM 7, 12 (December 1964), pp. 704-710. Wolfram, S., Symbolic Mathematical Computation, Comm. ACM 28, 4 (April 1985), pp. 390-394. Xerox, Character code standard, Xerox System Integration Standard XNSS 058605, May 1986. : [Artwork node; type 'Artwork on' to command tool] Ê™é–"blueandwhite" style– -1 firstFolio•WordlistÔAlgebraStructures Abelson Dynamicist's Hogg Bloomberg MathSOFT MathCAD Soiffer MathScribe Fich Engeler Hearn Kulp Berman Ng Sundblad Jenks Griesmer Sammet MATHSCOPE Minsky's Kain's Clapp symbiotic Licklider symbiosis spreadsheets acyclic Spreadsheet Crowley Schelter INFOR Avitzur Crecine browsers iconification Shneidermann Koved holophrasting Bundy Suppes Lugiez Calmet Genesereth Fateman editable DOC SMS COMP subexpression DISP navigational placeholder placeholders unfilled summand beholder Katz Katz's rearrangement cmd expr decoupled metafunctions multiplexing SMP noncomputational evaluator inputing scalable backstop AMS JIS ISO multilingual unevaluated EvalBeforePaint typographical unevaluate SMC Foderaro Wactlar MACSYMA Spirkovska MUFIE resized Donahue Swinehart SAC maintainer Perlis Rauen LeCocq lode Leong GCD Abdali Becker Waldspurger ˜Iunleaded•Mark centerHeaderšÏs0˜0K–centerRectoHeaderš0˜0K–centerVersoHeaderš0˜0K– centerFooterš!˜!K–centerRectoFooterš!˜!K–centerVersoFooterš!˜!Ititle˜0Iauthorsšœ@˜@IabstractšÐms8ž˜:NšÏb œ£˜¬Nšœü˜üNšÐbnŸœuœx˜ýN˜I boilerplateš ÏqœÏoœ¢œ¢œ¢Ñbox3˜¤I pagebreak˜J–7flushRight lineFormatting flushRight lastLineFormattingšÏi%˜%J–7flushRight lineFormatting flushRight lastLineFormattingš˜headšœ˜ šœ˜Ibodyšœ¦˜¦Ršœê˜ê ˜‚Iitemšœ×˜×Sšœ˜—RšœÄ¤œþ˜ÇRšœÉ˜É šœ1˜1Sš¢œ/˜5Sš¢œ€˜‘Sš¢œ7˜<—Ršœº˜ºRšœé˜é— šœ˜R˜ÞRšœˆ¤œa˜ïR˜ïRšœê¤œÌ˜¼—— šœ!˜! šœ˜Ršœƒ˜ƒR• CharPropsÙƒ*Artwork MeddleExprPostfix[11.32054 pt leading 22.94569 pt topLeading 22.94569 pt topIndent 12.37485 pt bottomLeading MeddleExpr>CaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $product {$multiplier (ATOM $variable "a")} {$multiplicand (ATOM $variable "b")})} {$augend (ATOM $variable "c")}) MeddlePtSize11i–Ž8.301732 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.02684 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.02684 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.27489 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœº¤œ´¢œ˜”I artworkFigure•GGFile²Gargoyle file for scene: stuffed from Gargoyle at September 1, 1987 10:47:04 am PDT Produced by version 8706.25 Slope: [F 0.0] [F 30.0] [F 45.0] [F 60.0] [F 90.0] [F 120.0] [F 135.0] [F 150.0] Angle: [F -90.0] [F -60.0] [F -45.0] [F -30.0] [F 0.0] [F 30.0] [F 45.0] [F 60.0] [F 90.0] Radius: [F 4.0] [F 2.0] [F 1.0] [F 0.75] [F 0.6666667] [F 0.5] [F 0.3333333] [F 0.25] [F 0.125] [F 0.1111111] [F 5.555556e-2] LineDistance: [F 1.0] [F 0.5] [F 0.1111111] [F 5.555556e-2] [F 0.0] Midpoints: F Heuristics: F ShowAlignments: T ShowColors: F ScaleUnit: 72.0 DisplayStyle: print Gravity: T GravityExtent: 0.3472222 GravityType: pointsPreferred DefaultFont: xerox/pressfonts/helvetica-mrr [r1: 0.0 s: [10.0 10.0] r2: 0.0] 1.0 1.0 Defaults: [1 0.5] [1 1.0] 2.0 round round Dashed: F Anchor: F Entities: [13]: Outline fillColor: [1 0.5] Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [281.0,152.1991] (Line ) [244.5978,89.14854] Outline fillColor: [1 0.5] Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [281.0,152.1991] (Line ) [299.2011,120.6738] Outline fillColor: [1 0.5] Trajectories: [1] Traj (open) [1] arrows: 0 j: round e: T round w: 2.0 c: T [1 1.0] d: T F [262.7989,120.6738] (Line ) [281.0,89.14853] Circle [8.228748 0.0 262.7989 0.0 8.228748 120.6738] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [1 0.0] dashes: ( F ) props: ( F ) Circle [8.228748 0.0 299.2011 0.0 8.228748 120.6738] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [1 0.0] dashes: ( F ) props: ( F ) Text T "c" xerox/xc1-2-2/Classic-I [10.0 0.0 297.002 0.0 10.0 118.0][1 1.0] F 1.0 props: ( F ) Circle [8.228748 0.0 281.0 0.0 8.228748 152.1991] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [1 0.0] dashes: ( F ) props: ( F ) Text T "+" xerox/xc1-2-2/Classic [10.0 0.0 276.0 0.0 10.0 149.4984][1 1.0] F 1.0 props: ( F ) Circle [8.228748 0.0 281.0 0.0 8.228748 89.14853] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [1 0.0] dashes: ( F ) props: ( F ) Text T "b" xerox/xc1-2-2/Classic-I [10.0 0.0 278.2011 0.0 10.0 86.47469][1 1.0] F 1.0 props: ( F ) Circle [8.228748 0.0 244.5978 0.0 8.228748 89.14854] strokeWidth: 1.0 strokeColor: [1 1.0] fillColor: [1 0.0] dashes: ( F ) props: ( F ) Text T "a" xerox/xc1-2-2/Classic-I [10.0 0.0 241.7989 0.0 10.0 86.47469][1 1.0] F 1.0 props: ( F ) Text T "\264" xerox/xc1-2-2/Classic [10.0 0.0 257.7989 0.0 10.0 117.973][1 1.0] F 1.0 props: ( F ) –Ô33.69313 mm topLeading 33.69313 mm topIndent 1.411111 mm bottomLeading 0.5 0.3 0.95 backgroundColor the topLeading 6 pt .sub backgroundAscent 3 pt backgroundDescent 4 pt outlineBoxThickness 1 pt outlineBoxBearoff•Bounds90.0 mm xmin 0.0 mm ymin 27.8909 mm xmax 30.87091 mm ymax •Artwork Interpress• Interpress‰Interpress/Xerox/3.0  f j k j¡¥“ļ= ¤ ¨ x jijÁTÄÏS¢ ¢ ¨¢¯“¢°“¢·“¡¡¨¹ÄƒdÝ™ÄS WÄ#,e—˜¢¯“¢°“¢·“¡¡¨¹ÄƒdÝ™ÄÑ5³ÄX&»—˜¢¯“¢°“¢·“¡¡¨Ä·Á³ÄX&»™¹Ä#,e—˜ x j x j ¡¨Ä̇ ¤Ä·Á³ÄX&» ¢ ¥ ¨Ÿ ™¡ Ÿ ¡“¡¡ ¡™ k¡¡¨ r j  Š ªÄh»kÄM¶Äž™Äž™¡£¡¯“¢°“¢·“ÄjgkÄX&»™ÄjgkÄOñ¶Ä·Á³ÄOñ¶ÄÙ J¡”Ä¿ µÄOñ¶Ä¿ µÄX&»ÄÙ J¡”Ä¿ µÄvÕìÄ·Á³ÄvÕìÄÙ J¡”ÄjgkÄvÕìÄjgkÄX&»ÄÙ J¡”¡¸ k é k x j x j ¡¨Ä̇ ¤ÄÑ5³ÄX&» ¢ ¥ ¨Ÿ ™¡ Ÿ ¡“¡¡ ¡™ k¡¡¨ r jÄ&‰ Š ªÄh»kÄM¶Äž™Äž™¡£¡¯“¢°“¢·“ÄjgkÄX&»™ÄjgkÄOñ¶Ä·Á³ÄOñ¶ÄÙ J¡”Ä¿ µÄOñ¶Ä¿ µÄX&»ÄÙ J¡”Ä¿ µÄvÕìÄ·Á³ÄvÕìÄÙ J¡”ÄjgkÄvÕìÄjgkÄX&»ÄÙ J¡”¡¸ k é k x jª ¤Ä?qð ¢ ¥ ¨ÅXeroxÅXC1-2-2ÅClassic-italic£¡ “ •  —¡¡¨  Š¡²“Ác– k x j x j ¡¨Ä̇ ¤¹ÄƒdÝ ¢ ¥ ¨Ÿ ™¡ Ÿ ¡“¡¡ ¡™ k¡¡¨ r jÄ3CÑĦŠ ªÄh»kÄM¶Äž™Äž™¡£¡¯“¢°“¢·“ÄjgkÄX&»™ÄjgkÄOñ¶Ä·Á³ÄOñ¶ÄÙ J¡”Ä¿ µÄOñ¶Ä¿ µÄX&»ÄÙ J¡”Ä¿ µÄvÕìÄ·Á³ÄvÕìÄÙ J¡”ÄjgkÄvÕìÄjgkÄX&»ÄÙ J¡”¡¸ k é k x jª ¤´Äµž7 ¢ ¥ ¨ÅXeroxÅXC1-2-2ÅClassic£¡ “ •  —¡¡¨  Š¡²“Á+– k x j x j ¡¨Ä̇ ¤¹Ä#,e ¢ ¥ ¨Ÿ ™¡ Ÿ ¡“¡¡ ¡™ k¡¡¨ r jÄ3CÑÄ»Ç*Š ªÄh»kÄM¶Äž™Äž™¡£¡¯“¢°“¢·“ÄjgkÄX&»™ÄjgkÄOñ¶Ä·Á³ÄOñ¶ÄÙ J¡”Ä¿ µÄOñ¶Ä¿ µÄX&»ÄÙ J¡”Ä¿ µÄvÕìÄ·Á³ÄvÕìÄÙ J¡”ÄjgkÄvÕìÄjgkÄX&»ÄÙ J¡”¡¸ k é k x jª ¤Ä†³Ä5_ž ¢ ¥ ¨ÅXeroxÅXC1-2-2ÅClassic-italic£¡ “ •  —¡¡¨  Š¡²“Áb– k x j x j ¡¨Ä̇ ¤ÄS WÄ#,e ¢ ¥ ¨Ÿ ™¡ Ÿ ¡“¡¡ ¡™ k¡¡¨ r jÄÙ#ÄóÏcŠ ªÄh»kÄM¶Äž™Äž™¡£¡¯“¢°“¢·“ÄjgkÄX&»™ÄjgkÄOñ¶Ä·Á³ÄOñ¶ÄÙ J¡”Ä¿ µÄOñ¶Ä¿ µÄX&»ÄÙ J¡”Ä¿ µÄvÕìÄ·Á³ÄvÕìÄÙ J¡”ÄjgkÄvÕìÄjgkÄX&»ÄÙ J¡”¡¸ k é k x jª ¤Ä©³Ä5_ž ¢ ¥ ¨ÅXeroxÅXC1-2-2ÅClassic-italic£¡ “ •  —¡¡¨  Š¡²“Áa– k x jª ¤Ä´B³Ä¼˜ ¢ ¥ ¨ÅXeroxÅXC1-2-2ÅClassic£¡ “ •  —¡¡¨  Š¡²“Á´– k k k gšÏn3™3Ršœ»˜»Ršœ­˜­— šœ$˜$ šœ˜Ršœƒ˜ƒ— šœ˜RšœØÐdlœ¦œD¦œÿ˜²— šœ ˜ Ršœ€˜€— šœ˜Ršœù˜ùRšœR¤œ˜å— šœ˜Ršœµ ˜µ —— šœ-˜-Ršœö¢œõ˜úRšœ¦˜¦Ršœ¤˜¤Ršœ‡˜‡—— šœI˜I šœ)˜)R˜R–ë†.Artwork MeddleExprPostfix[18.51852 pt leading 26.62963 pt topLeading 26.62963 pt topIndent 15.88889 pt bottomLeading MeddleExprQCaminoRealExpressionRepresentationVersion1.1 (ATOM $placeholder "\377\357`") MeddlePtSize11–Œ10.18518 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.0463 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.0463 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.13889 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœîÐfgœÃ˜² šœ'˜'Idisplay–ØArtwork MeddleExprPostfixQ42.5926 pt leading 37.0 pt topLeading 37.0 pt topIndent 29.5926 pt bottomLeading MeddleExprJCaminoRealExpressionRepresentationVersion1.1 (CMPD $summation {$lowerbound (ATOM $placeholder "\377\357`")} {$upperbound (ATOM $placeholder "\377\357`")} {$summand (ATOM $placeholder "\377\357`")}) MeddlePtSize11–ˆ23.42593 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 25.75 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 25.75 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 21.67593 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ˜IblockšœX˜XU–¥Artwork MeddleExprPostfixY44.86123 pt leading 38.5468 pt topLeading 38.5468 pt topIndent 30.31443 pt bottomLeading MeddleExpr‚CaminoRealExpressionRepresentationVersion1.1 (CMPD $summation {$lowerbound (ATOM $placeholder "\377\357`")} {$upperbound (ATOM $placeholder "\377\357`")} {$summand (CMPD $indefInt {$integrand (ATOM $placeholder "\377\357`")} {$wrt (ATOM $placeholder "\377\357`")})}) MeddlePtSize11–Ž24.67368 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 26.60074 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 26.60074 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 22.07294 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ˜VšœP˜PU–©Artwork MeddleExprPostfixZ49.8019 pt leading 41.42576 pt topLeading 41.42576 pt topIndent 32.37614 pt bottomLeading MeddleExprƒCaminoRealExpressionRepresentationVersion1.1 (CMPD $summation {$lowerbound (CMPD $eqFormula {$lhs (ATOM $variable "i")} {$rhs (ATOM $integer "0")})} {$upperbound (ATOM $infinity "\377!g")} {$summand (CMPD $indefInt {$integrand (CMPD $fraction {$numerator (ATOM $integer "1")} {$denominator (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $variable "i")})})} {$wrt (ATOM $variable "x")})}) MeddlePtSize11–Ž27.39105 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 28.18417 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 28.18417 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 23.20688 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ˜—R˜§Rš œ0¤œ¤œ¤œ¤œâÐkoœ¢¨œ˜õR–Ç„ Artwork MeddleExprPostfixW16.56711 pt leading 28.256 pt topLeading 28.256 pt topIndent 12.31111 pt bottomLeading MeddleExpr0(CMPD $sum {$addend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "2")})} {$augend (CMPD $eqFormula {$lhs (ATOM $integer "1")} {$rhs (ATOM $integer "0")})}) MeddlePtSize11–Œ9.111913 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.9408 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.9408 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.17111 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœâ¢œK¢œB˜ŽR–›ƒlArtwork MeddleExprPostfix[18.51852 pt leading 26.62963 pt topLeading 26.62963 pt topIndent 15.88889 pt bottomLeading MeddleExprCaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (ATOM $placeholder "\377\357`")} {$augend (ATOM $placeholder "\377\357`")}) MeddlePtSize11VArtwork MeddleExprPostfixW9.359016 pt leading 21.35902 pt topLeading 21.35902 pt topIndent 12.0 pt bottomLeading MeddleExprFCaminoRealExpressionRepresentationVersion1.1 (ATOM $variable "r") MeddlePtSize11!Artwork MeddleExprPostfix[18.51852 pt leading 26.62963 pt topLeading 26.62963 pt topIndent 15.88889 pt bottomLeading MeddleExprCaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (ATOM $variable "r")} {$augend (ATOM $placeholder "\377\357`")}) MeddlePtSize11OArtwork MeddleExprPostfixW9.359016 pt leading 21.35902 pt topLeading 21.35902 pt topIndent 12.0 pt bottomLeading MeddleExprFCaminoRealExpressionRepresentationVersion1.1 (ATOM $variable "r") MeddlePtSize11 Artwork MeddleExprPostfix[22.48721 pt leading 30.59832 pt topLeading 30.59832 pt topIndent 15.88889 pt bottomLeading MeddleExprFCaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $pow {$base (ATOM $variable "r")} {$exponent (ATOM $placeholder "\377\357`")})} {$augend (ATOM $placeholder "\377\357`")}) MeddlePtSize11Artwork MeddleExprPostfixW9.359016 pt leading 21.35902 pt topLeading 21.35902 pt topIndent 12.0 pt bottomLeading MeddleExprFCaminoRealExpressionRepresentationVersion1.1 (ATOM $variable "r") MeddlePtSize11+Artwork MeddleExprPostfixZ27.4074 pt leading 35.51852 pt topLeading 35.51852 pt topIndent 15.88889 pt bottomLeading MeddleExprQCaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $pow {$base (ATOM $placeholder "\377\357`")} {$exponent (ATOM $placeholder "\377\357`")})} {$augend (ATOM $placeholder "\377\357`")}) MeddlePtSize11–Ž15.07407 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 24.93518 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 24.93518 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.13889 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ=¤œ¤œ³˜‹R˜ëR˜ø— šœ˜RšœÙ¤œ¦œÚ˜ÙRšœ²˜²— šœ6˜6RšœÀ˜ÀRšœž˜ž—— šœ.˜.R˜… šœ#˜#Ršœµ¤œ¤œ¤œ˜Ý šœH˜HU–Ë Artwork MeddleExprPostfixU66.79199 pt leading 45.396 pt topLeading 45.396 pt topIndent 45.396 pt bottomLeading MeddleExprŒ9CaminoRealExpressionRepresentationVersion1.1 (MTRX $matrix [5 5] {$r1c1 (ATOM $integer "1")} {$r1c2 (ATOM $integer "0")} {$r1c3 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "3")} {$multiplicand (ATOM $variable "x")})})} {$r1c4 (CMPD $negation {$a (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})} {$r1c5 (ATOM $integer "0")} {$r2c1 (ATOM $integer "0")} {$r2c2 (ATOM $integer "1")} {$r2c3 (ATOM $integer "0")} {$r2c4 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "3")} {$multiplicand (ATOM $variable "x")})})} {$r2c5 (CMPD $negation {$a (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})} {$r3c1 (ATOM $variable "x")} {$r3c2 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r3c3 (CMPD $negation {$a (ATOM $integer "1")})} {$r3c4 (ATOM $integer "0")} {$r3c5 (ATOM $integer "0")} {$r4c1 (ATOM $integer "0")} {$r4c2 (ATOM $variable "x")} {$r4c3 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r4c4 (CMPD $negation {$a (ATOM $integer "1")})} {$r4c5 (ATOM $integer "0")} {$r5c1 (ATOM $integer "0")} {$r5c2 (ATOM $integer "0")} {$r5c3 (ATOM $variable "x")} {$r5c4 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r5c5 (CMPD $negation {$a (ATOM $integer "1")})}) MeddlePtSize18–‹80.15039 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 52.0752 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 52.0752 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 52.0752 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ ˜ šœbÏmœ¤œ…¢ œ3˜ÄU–èArtwork MeddleExprPostfixZ12.54196 pt leading 24.28906 pt topLeading 24.28906 pt topIndent 12.2529 pt bottomLeading MeddleExpr‡QCaminoRealExpressionRepresentationVersion1.1 (CMPD $difference {$subtrahend (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $sum {$addend (CMPD $sum {$addend (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "3375")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "12")})})})} {$augend (CMPD $product {$multiplier (ATOM $integer "46")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "9")})})})} {$augend (CMPD $product {$multiplier (ATOM $integer "630")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "7")})})})} {$minuend (CMPD $product {$multiplier (ATOM $integer "9")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "4")})})})} {$augend (CMPD $product {$multiplier (ATOM $integer "6")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "2")})})})} {$minuend (ATOM $integer "1")}) MeddlePtSize11–Ž9.197436 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 21.01198 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 21.01198 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.18546 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ˜—V–Ž9.197436 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 21.01198 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 21.01198 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.18546 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ¤œ˜;—RšœŒ˜ŒRšœ„˜„— šœ&˜&Ršœº˜ºRšœª˜ª šœ¾˜¾U–½Artwork MeddleExprPostfix[44.26354 pt leading 42.98447 pt topLeading 42.98447 pt topIndent 25.27906 pt bottomLeading MeddleExpr„'CaminoRealExpressionRepresentationVersion1.1 (CMPD $indefInt {$integrand (CMPD $fraction {$numerator (CMPD $difference {$subtrahend (ATOM $integer "1")} {$minuend (CMPD $product {$multiplier (ATOM $integer "2")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$denominator (CMPD $pow {$base (CMPD $paren {$a (CMPD $sum {$addend (ATOM $integer "1")} {$augend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$exponent (ATOM $integer "2")})})} {$wrt (ATOM $variable "x")}) MeddlePtSize11–Ž24.34495 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 29.04146 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 29.04146 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 19.30348 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading ˜—šœn˜nU–©Artwork MeddleExprPostfixY35.85215 pt leading 37.0965 pt topLeading 37.0965 pt topIndent 22.75564 pt bottomLeading MeddleExpr…CaminoRealExpressionRepresentationVersion1.1 (CMPD $indefInt {$integrand (CMPD $fraction {$numerator (CMPD $sum {$addend (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "2")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$augend (ATOM $integer "1")})} {$denominator (CMPD $sum {$addend (CMPD $sum {$addend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "6")})} {$augend (CMPD $product {$multiplier (ATOM $integer "2")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$augend (ATOM $integer "1")})})} {$wrt (ATOM $variable "x")}) MeddlePtSize11–19.71868 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 25.80308 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 25.80308 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 17.9156 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading ˜—šœq˜qU–†Artwork MeddleExprPostfix[28.84938 pt leading 23.22882 pt topLeading 23.22882 pt topIndent 29.62056 pt bottomLeading MeddleExprpCaminoRealExpressionRepresentationVersion1.1 (CMPD $fraction {$numerator (ATOM $variable "x")} {$denominator (CMPD $sum {$addend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})} {$augend (ATOM $integer "1")})}) MeddlePtSize11–Ž15.86716 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 18.17585 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 18.17585 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 21.69131 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading ˜—šœ˜Uš¢W˜W—šœ˜Uš¢I˜I—Ršœê˜ê— šœ+˜+R˜rR˜ùR˜¤R˜¨R˜ýR˜µR˜þ—— šœ˜ ˜R–µ‚[Artwork MeddleExprPostfixY20.19372 pt leading 27.1453 pt topLeading 27.1453 pt topIndent 17.04843 pt bottomLeading MeddleExprbCaminoRealExpressionRepresentationVersion1.1 (CMPD $quote {$a (ATOM $variable "expression")}) MeddlePtSize11$Artwork MeddleExprPostfix‚ 10.09686 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 19.78686 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 19.78686 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprOCaminoRealExpressionRepresentationVersion1.1 (ATOM $variable "expression") MeddlePtSize11_Artwork MeddleExprPostfix‚9.311385 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.13805 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.13805 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 13.17333 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExpriCaminoRealExpressionRepresentationVersion1.1 (CMPD $nullaryFunction {$f (ATOM $variable "killAll")}) MeddlePtSize11Artwork MeddleExprPostfix‚10.0689 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.03 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.03 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.0389 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprCaminoRealExpressionRepresentationVersion1.1 (CMPD $unaryFunction {$f (ATOM $variable "killVariable")} {$arg1 (CMPD $quote {$a (ATOM $variable "x")})}) MeddlePtSize11(Artwork MeddleExprPostfix‚ 5.29585 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 17.18589 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 17.18589 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.10996 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprFCaminoRealExpressionRepresentationVersion1.1 (ATOM $variable "x") MeddlePtSize11S–5.29585 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 17.18589 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 17.18589 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.10996 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœý˜ýRšœŠ˜ŠRšœ ¢œv¢œ~¢œ˜°R˜o–Rule˜$J–©Artwork MeddleExprPostfix‚11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprƒ[CaminoRealExpressionRepresentationVersion1.1 (CMPD $assign {$lhs (ATOM $variable "F")} {$rhs (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "3")})} {$minuend (CMPD $product {$multiplier (ATOM $integer "3")} {$multiplicand (CMPD $product {$multiplier (ATOM $variable "x")} {$multiplicand (ATOM $variable "y")})})})} {$augend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})}) MeddlePtSize11–Ž11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ¢˜J–ìArtwork MeddleExprPostfix‚11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExpr„CaminoRealExpressionRepresentationVersion1.1 (CMPD $assign {$lhs (ATOM $variable "G")} {$rhs (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $product {$multiplier (ATOM $variable "x")} {$multiplicand (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "2")})})} {$minuend (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $product {$multiplier (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})} {$multiplicand (ATOM $variable "y")})})})} {$augend (ATOM $integer "1")})}) MeddlePtSize11–Ž11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ¢˜Jš¢)˜)Icenter–òArtwork MeddleExprPostfix[15.50964 pt leading 24.35857 pt topLeading 24.35857 pt topIndent 15.15108 pt bottomLeading MeddleExpr\CaminoRealExpressionRepresentationVersion1.1 (CMPD $assign {$lhs (ATOM $variable "M")} {$rhs (CMPD $binaryFunction {$f (ATOM $variable "sylvesterMatrix")} {$arg1 (ATOM $variable "F")} {$arg2 (ATOM $variable "G")})}) MeddlePtSize11–Ž11.37374 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 21.06295 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 21.06295 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢˜Jš¢3˜3W–Artwork MeddleExprPostfixR13.14 pt leading 24.045 pt topLeading 24.045 pt topIndent 13.095 pt bottomLeading MeddleExprCaminoRealExpressionRepresentationVersion1.1 (CMPD $unaryFunction {$f (ATOM $variable "det")} {$arg1 (ATOM $variable "M")}) MeddlePtSize11–…9.636 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.833 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.833 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.803 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢˜—V–Rule˜$R–¬(Artwork MeddleExprPostfixN10.95 pt leading 22.95 pt topLeading 22.95 pt topIndent 12.0 pt bottomLeading MeddleExprFCaminoRealExpressionRepresentationVersion1.1 (ATOM $variable "F") MeddlePtSize11Artwork MeddleExprPostfixW11.47261 pt leading 23.17261 pt topLeading 23.17261 pt topIndent 12.3 pt bottomLeading MeddleExprFCaminoRealExpressionRepresentationVersion1.1 (ATOM $variable "G") MeddlePtSize11y–‹8.413247 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.19325 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.19325 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.22 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœÕ¢œD˜¨–Rule˜$J–÷Artwork MeddleExprPostfix‚11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprƒ)CaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "3")})} {$minuend (CMPD $product {$multiplier (ATOM $integer "3")} {$multiplicand (CMPD $product {$multiplier (ATOM $variable "x")} {$multiplicand (ATOM $variable "y")})})})} {$augend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})}) MeddlePtSize11–Ž11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ¢˜J–ºArtwork MeddleExprPostfix‚11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprƒlCaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $product {$multiplier (ATOM $variable "x")} {$multiplicand (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "2")})})} {$minuend (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $product {$multiplier (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})} {$multiplicand (ATOM $variable "y")})})})} {$augend (ATOM $integer "1")}) MeddlePtSize11–Ž11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ¢˜Jš¢)˜)W–”Artwork MeddleExprPostfix‚ 80.15039 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 52.0752 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 52.0752 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 52.0752 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExpr‹KCaminoRealExpressionRepresentationVersion1.1 (MTRX $matrix [5 5] {$r1c1 (ATOM $integer "1")} {$r1c2 (ATOM $integer "0")} {$r1c3 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "3")} {$multiplicand (ATOM $variable "x")})})} {$r1c4 (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})} {$r1c5 (ATOM $integer "0")} {$r2c1 (ATOM $integer "0")} {$r2c2 (ATOM $integer "1")} {$r2c3 (ATOM $integer "0")} {$r2c4 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "3")} {$multiplicand (ATOM $variable "x")})})} {$r2c5 (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})} {$r3c1 (ATOM $variable "x")} {$r3c2 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r3c3 (ATOM $integer "1")} {$r3c4 (ATOM $integer "0")} {$r3c5 (ATOM $integer "0")} {$r4c1 (ATOM $integer "0")} {$r4c2 (ATOM $variable "x")} {$r4c3 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r4c4 (ATOM $integer "1")} {$r4c5 (ATOM $integer "0")} {$r5c1 (ATOM $integer "0")} {$r5c2 (ATOM $integer "0")} {$r5c3 (ATOM $variable "x")} {$r5c4 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r5c5 (ATOM $integer "1")}) MeddlePtSize18–‹80.15039 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 52.0752 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 52.0752 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 52.0752 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ˜Jš¢3˜3W–… Artwork MeddleExprPostfix‚9.197436 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 21.01198 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 21.01198 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.18546 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExpr‡;CaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $sum {$addend (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $difference {$subtrahend (CMPD $product {$multiplier (ATOM $integer "3375")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "12")})})} {$minuend (CMPD $product {$multiplier (ATOM $integer "44")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "9")})})})} {$minuend (CMPD $product {$multiplier (ATOM $integer "720")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "7")})})})} {$augend (CMPD $product {$multiplier (ATOM $integer "9")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "4")})})})} {$augend (CMPD $product {$multiplier (ATOM $integer "6")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "2")})})})} {$augend (ATOM $integer "1")}) MeddlePtSize11–Ž9.197436 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 21.01198 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 21.01198 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.18546 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ˜—V–Rule˜$R–â Artwork MeddleExprPostfix‚11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprƒ[CaminoRealExpressionRepresentationVersion1.1 (CMPD $assign {$lhs (ATOM $variable "F")} {$rhs (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "3")})} {$minuend (CMPD $product {$multiplier (ATOM $integer "3")} {$multiplicand (CMPD $product {$multiplier (ATOM $variable "x")} {$multiplicand (ATOM $variable "y")})})})} {$augend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})}) MeddlePtSize11Artwork MeddleExprPostfixZ15.4165 pt leading 24.26542 pt topLeading 24.26542 pt topIndent 15.15108 pt bottomLeading MeddleExpr‚!CaminoRealExpressionRepresentationVersion1.1 (CMPD $assign {$lhs (ATOM $variable "F")} {$rhs (CMPD $difference {$subtrahend (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "3")})} {$minuend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})}) MeddlePtSize11w–Ž11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ°¢œ[˜š–Rule˜$J–ÇArtwork MeddleExprPostfix‚11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExpryCaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $negation {$a (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})} {$augend (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "3")})}) MeddlePtSize11–Ž11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ¢˜J–ºArtwork MeddleExprPostfix‚11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprƒlCaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $difference {$subtrahend (CMPD $product {$multiplier (ATOM $variable "x")} {$multiplicand (CMPD $pow {$base (ATOM $variable "y")} {$exponent (ATOM $integer "2")})})} {$minuend (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $product {$multiplier (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})} {$multiplicand (ATOM $variable "y")})})})} {$augend (ATOM $integer "1")}) MeddlePtSize11–Ž11.30543 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 20.99464 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 20.99464 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 14.31079 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ¢˜Jš¢)˜)W–Ž Artwork MeddleExprPostfix‚ 80.15039 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 52.0752 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 52.0752 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 52.0752 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExprŠECaminoRealExpressionRepresentationVersion1.1 (MTRX $matrix [5 5] {$r1c1 (ATOM $integer "1")} {$r1c2 (ATOM $integer "0")} {$r1c3 (ATOM $integer "0")} {$r1c4 (CMPD $negation {$a (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})} {$r1c5 (ATOM $integer "0")} {$r2c1 (ATOM $integer "0")} {$r2c2 (ATOM $integer "1")} {$r2c3 (ATOM $integer "0")} {$r2c4 (ATOM $integer "0")} {$r2c5 (CMPD $negation {$a (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})} {$r3c1 (ATOM $variable "x")} {$r3c2 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r3c3 (ATOM $integer "1")} {$r3c4 (ATOM $integer "0")} {$r3c5 (ATOM $integer "0")} {$r4c1 (ATOM $integer "0")} {$r4c2 (ATOM $variable "x")} {$r4c3 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r4c4 (ATOM $integer "1")} {$r4c5 (ATOM $integer "0")} {$r5c1 (ATOM $integer "0")} {$r5c2 (ATOM $integer "0")} {$r5c3 (ATOM $variable "x")} {$r5c4 (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "15")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "3")})})})} {$r5c5 (ATOM $integer "1")}) MeddlePtSize18–‹80.15039 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 52.0752 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 52.0752 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 52.0752 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading š¢œ˜Jš¢3˜3W–éArtwork MeddleExprPostfix‚9.197436 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 21.01198 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 21.01198 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.18546 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading MeddleExpr„CaminoRealExpressionRepresentationVersion1.1 (CMPD $sum {$addend (CMPD $sum {$addend (CMPD $sum {$addend (CMPD $negation {$a (CMPD $product {$multiplier (ATOM $integer "3375")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "12")})})})} {$augend (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "9")})})} {$augend (CMPD $product {$multiplier (ATOM $integer "45")} {$multiplicand (CMPD $pow {$base (ATOM $variable "x")} {$exponent (ATOM $integer "7")})})})} {$augend (ATOM $integer "1")}) MeddlePtSize11–Ž9.197436 pt the leading 2 .copy .gt 3 1 .roll .ifelse leading 21.01198 pt the topLeading 2 .copy .gt 3 1 .roll .ifelse topLeading 21.01198 pt the topIndent 2 .copy .gt 3 1 .roll .ifelse topIndent 12.18546 pt the bottomLeading 2 .copy .gt 3 1 .roll .ifelse bottomLeading šœ˜—V–Rule˜$— šœH˜HR˜®Ršœ‚˜‚R˜ËR˜Í—— ˜RšœÚ˜ÚR˜Ò— šœ ˜ I referencešœ]¤3œ ˜°X˜½XšœG¤&œ¤œ˜¡Xšœ£˜£XšœD˜DXšœ$¤ œ˜LXšœF¤œ2˜–Xšœ˜Xšœ3¤œ˜SXšœJ¤œ%˜†X˜Xšœ+¤œ˜OXšœ8¤œ¤œ˜aXšœV¤œ ˜rXšœ#¤œ¤œ˜LXšœ.¤Uœ¤œ˜¿Xšœc¤œƒ˜÷Xšœ ¦œ§˜µX˜:Xšœ,¤œ2˜|X˜•Xšœ5¤#œE˜Xšœ^¤9œ˜µXšœ)¤œ-˜eXšœ@¤œv˜ÇXšœC¤&œ˜‡Xšœ‰¤œ˜³X˜UXšœ ¤Ñdil¤œ˜/XšœG¤ œ˜rXšœK¤3œ˜œXšœ(¤1œ˜gX˜IXšœ0¤9œ˜‡X˜CXšœ<¤œ ˜kX˜wX˜lX˜vX˜³Xšœ ¤œ8¤ œ˜sXšœ.¤œt˜³XšœC¤(œ˜„Xšœ/¤?œN˜¼Xšœ,¤ œ˜WX˜…XšœK¤ œ˜qXšœW¤3œ˜©X˜ÁXšœC¤)œ˜‡Xšœ ¤œØ˜êXšœz¤.œˆ˜°XšœD¤œ(¤ œ"˜šXšœ0¤ œ˜ZXšœX˜X——…—¶ÒPõ