home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / j / jacal1a0.zip / jacal / func.scm < prev    next >
Text File  |  1992-12-11  |  2KB  |  39 lines

  1. ;;; JACAL: Symbolic Mathematics System.        -*-scheme-*-
  2. ;;; Copyright 1990, 1992 Aubrey Jaffer.
  3. ;;; See the file "COPYING" for terms applying to this program.
  4.  
  5. ;;; This section deals with functions which are non-algebraic or
  6. ;;; unspecified.  These functions are canonicalized with regard to
  7. ;;; symmetric, antisymmetric, even, odd, distributive and anti-distributive
  8. ;;; properties on a per argument basis.  This does not canonicalize
  9. ;;; functions because there are many other functional properties.  What is
  10. ;;; possible in this area?  What other properties are important to include?
  11.  
  12. ;;; f(x,y,z) = f(y,x,z)        f is symmetric in arguments 1 and 2.
  13. ;;; f(x,y,z) = -f(y,x,z)    f is anti-symmetric in arguments 1 and 2.
  14. ;;; f(x,y) = f(-x,y)        f is even in argument 1.
  15. ;;; f(x,y) = -f(-x,y)        f is odd in argument 1.
  16. ;;; f(g(x,y),z) = g(f(x,z),y)    f and g distribute over argument 1.
  17. ;;; f(g(x,y),z) = -g(f(x,z),y)    f and g anti-distribute over argument 1.
  18. ;;; f(f(x,z),z) = f(x,z)    f idempotent over argument 1.
  19.  
  20. ;;; When one of the functions in a distributive pair is '+' (and '-') the
  21. ;;; system knows that constant factors can be pulled out.  When one of the
  22. ;;; functions in a distributive pair is '*' the system knows that it applies
  23. ;;; to '/' and exponentiated terms also. 
  24.  
  25. ;;; Normalization procedure:
  26.  
  27. ;;; First, apply distributive rules to pairs (to sets?) of distributive
  28. ;;; functions in such a was as to push the lower priority function to the
  29. ;;; bottom (smallest terms).  '+' followed by '*' and exponentiation are the
  30. ;;; highest priority functions. 
  31.  
  32. ;;; Colapse any idempotent cases.
  33.  
  34. ;;; Starting with the innermost terms conditionally negate arguments in
  35. ;;; order to make the highest order term of the argument positive (negating
  36. ;;; the function if odd). 
  37.  
  38. ;;; Finally, sort sets of symmetric arguments by highest order term ranking.
  39.