540 likes | 735 Views
General purpose systems. Lecture 2. Axiom - generalities. Computer Algebra System with Abstract Data Types http://www.axiom-developer.org First version in 1991 Interactive system Based on Cambridge’s Common Lisp GCL Includes a command-line interpreter, a hypertext-based help system,
E N D
General purpose systems Lecture 2
Axiom - generalities • Computer Algebra System with Abstract Data Types • http://www.axiom-developer.org • First version in 1991 • Interactive system • Based on Cambridge’s Common Lisp GCL • Includes a • command-line interpreter, • a hypertext-based help system, • graphics and • a compiler which allows efficient extensions to the system to be produced by users.
Axiom – links and OOP • Interactive link to NAG Fortran library for numerical processing. • Successor of the Scratchpad system developed by IBM. • Axiom’s object-centered design provides efficiency, consistency and robustness through a natural type system which categorizes objects according to their algebraic properties. • Users can add their own extensions to the system with the Axiom Library Compiler, known as Aldor.
Axiom - concepts • At the top level of the Axiom type system are Categories, which can be viewed as specifications of algebraic structures in terms of their abstract properties. e.g. Set or Ring, PolynomialCategory. • At the next level are Domains, which are concrete instances of categories. e.g. the domain Integer is a Ring. • A major benefit of this type system is that it allows the parameterization of domains and categories in a mathematical rational way. e.g. the Polynomial domain is parameterized by Ring allowing for multiple instantiations: Polynomial(Integer), Polynomial(PrimeField 3) and Polynomial(SquareMatrix(2,PolynomialInteger)) for example.
Axiom packages • Axiom has packages which are collections of functions implemented outside a domain or category. • Often these packages are parameterized by the types which they work over • E.g. the code for computing the GCD of two polynomials is implemented in a package which is parameterized by any element of PolynomialCategory. • Source code for all the algorithms in the system is distributed with the software, allowing the user to check its fidelity or adapt it to their own uses. • The Axiom library contains several hundreds categories, domains and packages and several thousands signatures representing functions • many of them can be overloaded, e.g. the function factor represents 39 different functions
Axiom – GUI • The Axiom interpreter is the principal mechanism by which a user can interact with the Axiom system. It uses sophisticated type interface techniques to remove the need for the user to specify the types of all objects, in a similar way to Reduce and Maple. • Axiom provides two and three dimensional graphics. Graphs are objects and can be manipulated from the command line or from a special control panel; they can be exported as PostScript or VRML objects.
Aldor – definition & history • programming language originally intended to developed compiled libraries for CA • The Aldor compiler was original used to produce libraries for Axiom (when the name wad Axiom XL) and its predecessor, Scratchpad II (when the name was A#), while more recent emphasis has been on the production of stand-alone programs or modules for the use in Maple. • The design of Aldor spanned the period 1985-1995 • From 2001, Aldor is independently from Axiom.
Aldor - characteristics • The language is modular to allow large libraries of independently developed facilities to be used together in any combination. • Types and programs are first class values in Aldor; they may be created and used dynamically. • An optimizing compiler has been developed for Aldor. Programs are • 1st compiled to a low-level intermediate language, this undergoes a number of optimizing transformations, • and from this C, Lisp or active object code is generated. • Inter-language interfaces support natural linking with programs written in C, C++ and Fortran
Aldor –functional programming language • A higher order type system and strict evaluation. • All values are treated uniformly • Memory is managed automatically. • The type system has two levels: • each value belongs to some unique type, known as its domain, • and the domains of expressions can be inferred statically. • Each domain is itself a value belonging to the domain Type. • Domains may additionally belong to some number of subtypes, known as categories. • Categories can specify properties of domains such as which operations they export, and are use to specify interfaces and inheritance hierarchies. • Ex post facto extension allows existing domains to belong to new categories. • This supports a programming style which has recently come be known as aspect-oriented programming.
Aldor – dependency • Dependent products are tuples where the type of some components depends on the value of another e.g. (n:Integer, m:IntegerMod(n)). • Dependent mappings are functions where the type of the result depends on the value of an argument, e.g. mod: (Integer, n:Integer) − >IntegerMod(n)
Aldor • Generic programming is achieved through explicit parametric polymorphism, using functions which take types as parameters and which operate on values of those types, e.g. f(R:Ring, a:R, b:R): R == a*b-b*a. • Object oriented programming can be achieved naturally using dependent product values, e.g. (R:Ring, r:R). • Control flow is explicit and uses a fixed set of language-defined primitives, including the usual conditionals, loops, function call and return, as well as stack-oriented exception handling (try/catch). • Control abstraction is provided by suspedable/resumable generators which yield values over the course of a computation.
Derive • computer algebra system developed for PCs • offers a wide rage of algebraic, numeric, and graphic algorithms. • it comprises less build-in functions than other CAS • the programmability is restricted to function definitions using recursion, conditionals, and iterations. • the scope of the built-in functions, its easy-to-use interface, and the low price make Derive particularly well suited for teaching and learning mathematics in high schools and in introductory courses at universities (in Central Europe).
TI-92 • The TI-92 is the first handheld calculator with true CA capabilities. • It is the result of cooperation between • Texas Instruments, • Soft Warehouse (the developers of Derive) and • University of Grenoble (the developers of Cabri Geometre6). • The TI-92 offers the following features: • CA similar to Derive, • two and three dimensional graphics, • interactive geometry (a subset of Cabri), • data/matrix editor, • text editor, and • program editor.
Macsyma • Comprehensive, powerful software system for doing symbolic and numeric scientific computing. • Has been used in a wider variety of applications since 1968, a longer period of time than any other symbolic-numerical mathematics software package. • Was born as a research project in 1968 at Massachusetts Institute of Technology (MIT). In that period was widely used for symbolic computation in research projects. • By 1980 Macsyma was easily the most advanced symbolic-numerical-graphical mathematics software in the world. • Same position was proved also in 1994-1995 with several benchmarks. • It has been commercialized after 1982. • One of its straights consists in the handling of differential equations. It contains • the PDELie package for finding Lie symmetries and symbolic solutions of systems of nonlinear PDEs, and • PDEease2D for solving systems of PDEs by finite element analysis.
Maxima/Macsyma • There is also a GPL-licensed version, called Maxima, based on the 1982 version of the Macsyma. • It is under active development, and can be compiled under several Common Lisp systems. • Maxima does not include any of the numerous enhancements made to the commercial version of Macsyma. • Due to this, extensive effort may be required to port code from Macsyma to Maxima.
Magma • based on a computational model that closely reflects the way in which algebraists view their subjects. • computing environment that is constructed out of the fundamental concepts of algebra (set, mapping, structure, morphism). • Its primary application areas include algebra, number theory, algebraic geometry, algebraic topology, algebraic combinatorics and all areas of mathematics which are algebraic in nature
Magma - history • The basic design for Magma emerged during the late 1980’s, building on extensive experience obtained through development and application of the Cayley system. • The core of the Magma system has been developed at University of Sydney. • Since the launch of Magma in 1993, the system has expanded enormously and its development continues at a rapid rate. • Magma includes algorithms and code generously contributed by many mathematicians from around the world. • In many ways the Magma project represents a major cooperative effort by mathematicians to develop a system properly tuned to their needs. • Magma facilities was augmented with several packages for abstract areas including algebraic geometry via schemes, polynomial equation solving, hyperelliptic curves, modular symbols and homological algebra.
Magma – concepts • The computational model at the heart of Magma is based on a modern structure view of mathematics, in which the central notions are structure and morphism. • The name of the system reflects the fact that the fundamental concept is a set with structure; the term magma is borrowed from Bourbaki who defines it to be a set with a law of composition. • Each object definable in Magma is considered to belong to a unique mathematical structure (magma), called its parent, and this parent must be resent at the time the object is created
Magma – concepts • Does not have the concept of a matrix as a primitive object; rather, a matrix may only exist as an element of some particular ring or bimodule. • Employs evaluation semantics, so that an expression may only be evaluated if every identifier appearing in it has a value. • Thus notions such as indeterminates or unknowns must be defined as elements of the appropriate magma, such as a univariate polynomial ring over a field, before any use is made of them.
Magma – organized hierarchically • At the top level are varieties, which are families of magmas sharing the same operations and axioms. • Typical varieties include groups, commutative rings and modules. • A variety has attached to its functions tat do not depend upon properties of a specific representation of a magma. • When computing with a structure it is necessary that it be represented in some concrete form; here we come to the level of categories. • For example, within the variety of groups there are categories for finitely-presented groups, permutation groups and matrix groups. • The general model for constructing a magma is to start with a free magma and then successively form submagmas, quotients, and extensions until the desired magma is obtained.
Magma – programming • user language is an interpreted high-level language with dynamic typing. • The data structures are designed around the ideas of set, sequence, mapping and structure. • While the language formally belongs to the class of imperative languages there is also a strong functional flavor. • The language has a functional subset, providing functions and procedures; functions are allowed multiple return values. • The run-time environment supports • packages containing user-defined intrinsics with automatic compilation; • command completion and interactive line editing; • a history system with recall and editing of previous lines; • online help facility; • redirection of I/O; • ability to save and restore user workspaces; • environment variables for configuring the style of output
Magma – working with structures • A great deal effort has been invested in the implementation of very efficient algorithms for working with most of the fundamental algebraic and geometrical structures in which computations is currently practical. • The system currently contains more then 10000 algorithms. • The mathematical structures implemented may be grouped into the following 9 areas: • semigroups, • groups, • commutative rings, • fields and their orders, • modules, • algebras, • algebraic geometry, • arithmetic geometry, • combinatorics.
Magma - databases • Magma package includes also a growing number of databases many of which are compressed versions of standard databases compiled by various mathematicians. • The current databases include • elliptic curves of conductor up to 5300, • the maximal subgroups and automorphism groups of all simple groups of order less then 10^7, • all groups of order up to 2000 etc. • For example, an algorithm needing to factorize the order of the multiplicative group of the finite field GF(p^n) would first consult a database containing 200 000 factorizations of integers of the form p^n −1 for primes p up to 1000 and various n, before deploying an integer factorization algorithm.
Maple • Powerful, interactive and easy-to-use general-purpose CAS for solving mathematical problems quickly and to any desired accuracy • It provides scientists, engineers, educators & students with a complete mathem. environment for • manipulating algebraic expressions; • calculating numerical results; • visualizing mathematics using two- and three-dimensional and • animated graphics. • It permits users to extend the power of its comprehensive library by adding new scripts and procedures.
Maple - history • Was created at the University of Waterloo, Canada, in 1980 in response to the need for a compact, flexible, and efficient CAS. • In 1988, Waterloo Maple Inc. was founded to create a high quality document-oriented user interface for Maple and to provide services and support for the expanding base of users. • Maple is used worldwide and across a wide range of technical disciplines including mathematics, physical sciences, business management, economics, and engineering. • Specific applications of Maple include modeling telecom systems, cryptography, turbojet design, control systems analysis, and brain research. • In education, the use of Maple as a learning tool encourages an exploratory approach to problem solving and enables students to concentrate on the concepts of a topic rather then simply the calculation methods.
Maple – the library • library of over 3000 functions which can be used for symbolic and numeric calculations. • include standard mathematical operations such as integration; products; solving many forms of equations; series expansions and limits; elementary functions; special functions; matrix methods; more specialized functions for specific fields of mathematics. • Maple handles many different types of mathematical objects such as integers; rationals; irrationals; complex numbers; algebraic numbers; floating point numbers; sets; lists; arrays; matrices; vectors; polynomials; boolean, relational or logical expressions; symmetric functions; constants; structured object types.
Maple – more than 30 specialized packages • routines for • solving ODEs and classes of PDEs, • teaching calculus, • linear algebra, • two-dimensional and three-dimensional Euclidian geometry, • statistics, • linear optimization, • group theory, • power series, • combinatorics, • tensors, • differential algebra, • Groebner bases, • Lie symmetries, and • financial applications • NAG numerical algorithms were recent integrated: Maple environment can now handle complex numeric computations with ease.
Maple – programming & outside • Users with Matlab installed on their machines can access Matlab via the Maple interface • Maple contains a powerful high-level programming language, which is similar in form to Pascal or C. • This language can be used to extend Maple by adding customized procedures. • The open architecture of Maple allows users to examine the source code for the entire Maple library. • The results can be automatically converted into optimized C or Fortran code for solutions that require highly iterative numeric calculations. • C or Fortran libraries can be also call into Maple environment.
Maple – GUI • Maple uses standard mathematical notation; this makes expressions easy to interpret and check. • It also includes extensive word-processing functionality for professional-looking documents as well as presentation tools such as hyperlinks, collapsible sections, and animation. • For new users, palettes containing common mathematical symbol and forms are available to help the users create mathematical formulae or expressions. • A comprehensive online help is provided with Maple. • There are over 300 books in 11 different language about Maple and its applications. • Over a million researchers, educators, and technical professionals world-wide use Maple, as a mathematical assistant for exploring and solving problems in mathematics, engineering, science, and other disciplines.
Mathematica • environment for technical computing, covering aspects such as symbolic manipulations on various kind of objects, numerical calculations, graphical visualization, and programming. • It is a commercial system designed, developed, distributed, and marketed by Wolfram Research Inc. since its first release in 1988. • At first its impact was felt mainly in the physical sciences, engineering and mathematics. But over the years, it has become important in a remarkable wide range of fields, such as biology, medicine, finance, social sciences, and other. • At the same time, the system plays a major role in math education, where the applications range from high-school level up to advanced university courses supported by Mathematica.
Mathematica • Main constituents of the system are: • a vast collection of mathematical algorithms, • a powerful high-level programming language, and • a comfortable, highly configurable user interface. • The algorithm library supports for arithmetic in various domains, such as integers of arbitrary length, rational numbers, floating point numbers, complex numbers, algebraic numbers, polynomials of arbitrary degree containing any number of variables over various coefficient domains, rational functions, transcendental expressions, matrices, and finite fields. • Special techniques are applied for preserving the accuracy when dealing with floating point arithmetic: a special tailored internal data structure called packed arrays optimizes speed and memory consumption of numerical operations. • For symbolic computations, Mathematica provides manipulation of symbolic expressions in various kinds, notably simplification to canonic forms, replacement of subexpressions, terms over common denominator, cancelling of common factors in rational expressions etc • Traditionally, polynomial related computations play a key role in CASs such as polynomial expansion, factorization of polynomial terms, decomposition of polynomials, greatest common divisors, and Groebner bases.
Mathematica • Mathematica offers algorithms for solving equations in many forms, from systems of linear eqs. with particular support for sparse systems, systems of algebraic (polynomial) eqs. based on Groebner bases method, and systems of ordinary or PDEs. For all of these types of equations there are algorithms for obtaining both symbolic (exact) and numeric (approximate) results. • In area of calculus, Mathematica provides support for symbolic and numerical differentiation and integration, computation of limits, expansion of functions as Taylor or Fourier series, function transformations such as the Fourier, Laplace or Z-transformation, or vector analysis. • Methods for optimization of linear and non-linear functions, interpolation and approximation of data sets, or eigenvalues and eigenvector computations are available. • Mathematica has nice capabilities in graphical representation of functions in two and three dimensions. A particularly nice feature is the visualization of a sequence of images in an animated movie, which nowadays is a standard feature in virtually all CASs but has appeared for the 1st time already in the 1st version of Mathematics.
Mathematica - layers of extendibility • Standard packages contain special purpose functions • over 100 available standard packages for solving polynomial inequalities, special PDEs, solving recurrence relations, spline fitting, and linear regression. • Add-on packages are separate commercial packages containing application-oriented functions for particular application domains • e.g. for electrical engineering, fuzzy logic, finance, optical design, or digital image processing • Math source is a common forum, where Mathematica users provide their own developments based on Mathematica.
Mathematica - high-level programming language • Multi-paradigm programming: A programmer developing software need not stick strictly to one programming paradigm, because the programming language supports • procedural programming (assignments, loops, conditionals and jumps), • functional programming (recursion, application of unnamed function on lists, etc.), • rule-based programming (applying transformation rules for application patterns), • or even certain aspects of object-oriented programming (polymorphism). • Higher order pattern matching: From the point of view of logic, the Mathematica language is an untyped higher-order language. • In definitions of functions, the arguments may be described using a highly advanced pattern specification that allows a very elegant style of programming. • During evaluation of functions, the parameter values are matched with the argument patterns by an efficient algorithm for high order matching. • Front end programming: A GUI for a mathematical software package written in Mathematica can be developed in the same programming environment, having interaction elements available such as windows, buttons, and hyperlinks.
Mathematica - high-level programming language • Name spaces: Keeping apart name spaces for symbolic is of utmost importance in software development. • In Mathematica, this is achieved by a mechanism of symbol contexts and packages. • MathLink: As for import and export capabilities, the MathLink communication standard gives the opportunity to set up communication channels to external programs with which structured data can be exchanged in both directions. • Toolkits for connecting to C/C++ and Java executables are available. • Compilation: A subset of the language containing only machine-near data types such as small integers, small floats, and strings may even be compiled for gaining efficiency.
Mathematica - GUI • Mathematica introduced the so-called notebook interface already at a time when all other systems only had text-based command-line interfaces. • It was certainly due to the emergence of Mathematica, that now most of the mathematical scientific software systems have a reasonable user interface. • A Mathematica notebook is • primarily the user interface for entering commands and mathematical expressions and displaying computation results • at the same time is an electronic document that can store all data entered into it during a Mathematica session, be it entered by the user or generated by computations (session log).
MuPAD • has been developed since 1989 mainly at the University of Padeborn, Germany. • MuPAD is an open CAS • It features both symbolic and numerical algorithms for computing with mathematical objects such as numbers, polynomials, matrices, or functions. • The system can be used as a problem solving environment in mathematics, engineering, natural sciences, and economy, but also as tutorial system in science and education. • It comprises • a high-level programming language, • a collection of library packages, • a window-based graphical user interface, • an online hypertext help system, and • a graphical component for rendering two- and three-dimensional mathematical data.
MuPAD features • a concept for object oriented programming and dynamical generation of new data (domains), • the possibility to link object code written in other programming languages, such as C++ or Fortran, to the system dynamically at run time (dynamic modules) • a source level debugger for debugging code written in MuPAD’s programming language, with a graphical user interface, and • the possibility to assume certain mathematical properties about identifiers, such as being prime or positive
MuPAD components • The concept of dynamic modules provide a comfortable way of extending the system’s functionality and linking MuPAD with other software packages • The main components of MuPAD are • its kernel, • the libraries, and • the user interfaces. • The kernel • provides the basic functionality of the system and • is written in C and C++ for efficiency reasons. • It contains • the parser and the evaluator for MuPAD’s programming language, • a multiprecision arithmetic package for integers and floating point numbers, • the memory management and • a collection of built-in functions for basic tasks.
MuPAD library • Most of MuPAD’s mathematical knowledge resides in the libraries. • Each library is a collection of procedures written in MuPAD’s programming language. • Users can access the source code of a library procedure interactive. • Besides the standard library , which contains the most commonly used routines, there are library packages for code generation, combinatorics, differential equations, factorization and gcd computation, functional programming, Groebner bases, input and output, integral transforms, linear algebra, linear programming, mathematical properties of expressions, number theory, numerical algorithms, plotting mathematical data, polynomials, recurrence equations, series expansions, solving equations and inequalities, special functions, statistics, string manipulation, symbolic integration, type checking, and for defining abstract mathematical data types. • MuPAD provides 2 library packages for computing exact solutions of ordinary differential equations and for arithmetic of linear ordinary differential operators.
MuPAD – programming & structures • Many actions that are familiar from C-code debuggers are available in the MuPAD’s debugger: single stepping, inspecting variables, setting (conditional) breakpoints etc. • Besides the standard data types, such as integers, rational numbers, floating point numbers, complex numbers, Boolean values, strings, and identifiers, MuPAD provides container types, such as sequences, lists, sets, tables, or arrays, and more complex mathematical types, such as multivariate polynomials, series expansions, functions, matrices, differential operators, rings, and fields. • MuPAD features a high-level functional programming language with a C- and Pascal like syntax and a concept for object oriented programming that is tailored to mathematical objects such as polynomials, matrices, rings or fields: the domains concept.
MuPAD – domains • A domain is an abstract data type, comparable to a class in C++, that represents a certain structured mathematical set, • such as the ring of integers, the field of integers modulo 7, or the ring of all 2×2 matrices whose entries are polynomials in two indeterminates with complex coefficients. • A domain usually has several slots attached to it. • Domains may be derived from other domains and either inherit or overload their slots. • A domain may also belong to several categories and inherits their slots. • A category represents a more abstract mathematical notion, such as a group, a ring, or a field. • This provides a concept for generic algorithms. • For example, the parametrized domain SquareMatrix is derived from the domain Matrix, which in turn belongs to the category Matrix; the first domain inherits the slots row, col, plus and mult from this category. • Domains and categories may be associated with axioms asserting certain properties, such as the existence of a normal form or a unit element. • Slot procedures may query such axioms and react accordingly
MuPAD – domains package • Contains a variety of predefined categories for sets, groups, rings, fields, modules, vector spaces, algebras, differential rings, polynomials, and matrices. • It also features domains for the most commonly used mathematical structures, such as residue class rings, algebraic extensions, ideals, quaternions, or tensor algebras.
MuPAD – dynamic module • provides an efficient and flexible concept for plugging C/C++ code or other compiled machine code into MuPAD at runtime: dynamic modules. • After a module is loaded, it can be used like any library package. • A module consists of module functions implemented in C/C++ using MuPAD application programming interface • provides routines for creating, manipulating, and converting MuPAD data, accessing its memory management and the multi-precision arithmetic etc. • The module source code is compiled to a dynamically linked library • Examples for well known software components that have linked to MuPAD via dynamic modules are • the NAG library for numerical algorithms, • the GNU library for multiprecision arithmetic GMP, • the library for number theory NTL, • the Parallel Virtual Machine PVM, • the Groebner basic package GB, and • RealSolving for computing real roots of univariate polynomials.
MuPAD in education • Germany: MuPAD has been used for several years not only in introductory courses for students in physics, engineering, computer science, and economy, but also in advanced courses for mathematics students, such as numerical analysis and computer algebra. • MuPAD is used as a back end in Mathlantis Algebra, an algebra tutoring package disguised as a computer adventure game. • In a German national project, MuPAD computing server was used in Internet and Intranet applications: • the idea is that remote clients, such as plugins for Web browsers or Java applets, can • connect to the server via sockets, • send requests like integrate this, • receive the answer from the server, • and render it on screen (OpenMath or MathML must be supported in the future)
MuPAD and PVM • Based on PVM, a parallel MuPAD version for distributed computing in heterogeneous networks has been developed. • Following the master-worker paradigm, it features local and remote work queues, work groups, shared variables, and semaphores for synchronizing tasks in the network.
MuPAD and other CASs • The package Singular for commutative algebra, algebraic geometry, and singularity theory • has been linked to MuPAD via a dynamic module. • The protocol MP is used for exchanging mathematical data. • A dynamic module is developed that provides the functionality of the numerical computation package Scilab from within MuPAD. • This is useful for efficient symbolic-numeric computations. • For example, an engineering problem is • first modeled in terms of symbolic equations, using MuPAD. • Then the user calls the appropriate Scilab functions from within MuPAD itself. • The protocol UDX is used for exchanging data. • MuPAD is applied in the simulation of parallel robots. • It is used in the symbolic modelling stage, for generating systems of polynomial equations, and as a control environment. • Then the dynamical linked modules GB and RealSolving are used to solve huge systems of polynomial equations comprising several megabytes of data. • The protocol UDX is used for exchanging data. • MuPAD is used as back end in the software package CAMeL-View for computer-aided engineering, a tool that supports modelling, analysis, synthesis, and realization of mechatronic systems, such as cars or robots. • It is used in the modelling stage to generate systems of ordinary differential equations, • which are then transformed into optimized C code for efficient numerical solving.
Reduce • The starting point of more than 30 years ago were formal computations for problems in high energy physics (Feynman diagrams, cross sections etc.), which are hard and time consuming if done by hand. • Although the facilities of the today Reduce are no longer comparable with those of the early versions, the direction towards big formal computations in applied mathematics, physics and engineering has been stable over the years, however leading to a much broader spectrum of application. • Although Reduce is a mature program system, it is extended and updated in a contiguous process. • Since the establishment of the Reduce Network library in 1990 users take part in the development such that the compatibility step caused by new releases is reduced. • The primary scope of Reduce is the solution of large scale formal problems in mathematics, science and engineering. Its development is oriented towards a collection of powerful tools which enable problem solving by combination.
Reduce - basics • The central object of Reduce is the formal expression, which is built with respect to the common mathematical rules. • Elementary items are numbers, symbols, functional expressions, and operators. • There are also data structures which collect a number of formal expressions, e.g. equations, lists, arrays, matrix. • For specifying symbolic tasks and algorithms, Reduce offers a set of different programming paradigms: • algebraic desk calculator, • imperative algebraic programming, • rule-oriented programming, • symbolic imperative programming, • algebraic evaluation. • Formulae can be entered, combined, stored and processed by a set of powerful operators like differentiation, integration, polynomial GCD, factorization etc. • Evaluation of a single formula with the immediate output of the result is a special case for a statement in the Reduce programming language. • It allows to code complicated evaluation sequences like conditionals, groups, blocks, iterations (controlled by counters or list structures) and the definition of complete parameterized procedures with local variables.
Reduce – rules • Global algebraic relations can be formulated with rules. • A rule links an algebraic search pattern to a replacement pattern, sometimes controlled by additional conditions. • Rules can be activated (and deactivated) globally, or they can be invoked with a limited scope for single evaluations (e.g. rules for trigonometric functions). • The frequent conversions are time consuming and for very large problems it might be desirable to keep intermediate results in the internal form in order to avoid the conversion overhead. • The symbolic mode can be used, which gives you access to internal data structures and procedures directly with the same syntax as in top level programming. • This level of programming requires some knowledge about Lisp and about internal Reduce structures. • In the context of symbolic computation mostly exact arithmetic is used, especially with algorithms from the classical computer algebra. • This aspect is supported by Reduce with arbitrarily long integer arithmetic and, built on top of that, rational numbers, modular numbers (p-adic) etc.