
                  GANITH algebraic geometry toolkit
                 
                  Chanderjit Bajaj   Andrew Royappa 

                    Department of Computer Science
                           Purdue University
                        West Lafayette, IN 47907



                               Abstract

  We are building a general-purpose tool for computing and visualising
  solutions to systems of algebraic equations.  Diverse algorithms exist
  for this problem and related sub-problems, and we shall incorporate
  several of them.  We are also developing a new set of solution
  techniques using multi-polynomial resultants and birational maps
  between arbitrary algebraic sets and hypersurfaces.  Our designed tool
  shall be portable and allow rapid prototyping of new and existing
  algorithms, in an intelligent blend of algebraic and numeric methods,
  and real solutions.  Complex solutions can also be computed, but
  visualizing them is difficult.  The software shall also take advantage
  of any parallel hardware that is present.  In all, we anticipate
  improving the state of the art of algebraic equation solving by
  devising novel techniques, blending existing methods to form new ones,
  and comparing the relative efficacy of the various methods. 
  
    A prototype system implementing some of these goals is built and
  evolving.  It is written in Common Lisp and C, and runs under version
  11 of the X window system.  The system is portable to any machine that
  runs vanilla Common Lisp, supports the X window system, and has at
  least a rudimentary Lisp/C interface.  At the present time it can
  solve systems of up to two equations in any number of variables.
  Example applications of this are curve and surface display,
  curve-curve intersections, surface-surface intersections, etc.  A
  graphical user interface allows the display and manipulation of 0D
  (points), 1D (curves) or 2D (surface) solutions.
  
    
  
    
  PLATFORMS
  
  We have built a prototype toolkit that implements many of the features
  sketched above.  Although the prototype was implemented on a Sun-4
  workstation running the Unix operating system, with Sun Common Lisp,
  it is written entirely in standard Common Lisp.  The only Sun-specific
  parts pertain to the Lisp/C interface.  The GANITH toolkit is meant to
  be portable to any machine that supports Common Lisp, the X11 window
  system via the Xlib library and Athena Widget toolkit, and has a
  Lisp/C interface that allows strings to be passed between Lisp and C.
  The entire tool runs within one Lisp process, however due to the X
  Window systme the user interface window may appear on any X window
  server.  The advantage of this is that the tool may run computations
  on non-graphics machines.  Thus one may compute on a powerful
  non-graphics supercomputer and interact with the tool on a lightweight
  workstation with poor computation but good graphical facilities.
  
  USER INTERFACE
  
  The graphical user interface is contained in an X window, and can be
  manipulated (e.g. moved, resized) by the window system as usual.  It
  contains within itself three subwindows.
  
    Input:  This an editor buffer where commands are entered.  The
  default editing commands are Emacs-like (Emacs is a UNIX screen
  editor) although the user may substitute alternate editing commands.
  
    Graphics:  This window is used to display solutions to systems of
  equations.  For curve-curve intersections the two curves are plotted in
  different colors and their intersection points are circled.  For
  surface-surface intersections, the space curve of intersection is
  displayed in the mouse-sensitive graphics window.  The space curve may
  be viewed from different viewpoints by moving the mouse.
  
    Output:  This is a text window used to annotate the solutions
  displayed in the graphics widow.  For instance, in the curve-curve
  intersection case the output window will display the (x,y) coordinates
  of the intersection points in the plane (the points that are circled
  in the graphics window).  This window also contains a scrollbar so the
  history of the session can be perused.  One can also cut text from the
  output window to paste into the input window, if necessary.
  
  
  REFERENCES
  
  [1] Bajaj, C., and Royappa, A., (1989), "GANITH: A Package for
  Algebraic Geometry", Comp. Science Tech. Rept. 914, and CAPO report
  CER-89-21, Purdue University.  

  AVAILABILITY

  GANITH is available from the anonymous FTP at cs.purdue.edu in the
  directory /pub/avr/ganith-src.tar.Z
