home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.yorku.ca 2015 / ftp.cs.yorku.ca.tar / ftp.cs.yorku.ca / pub / peter / SVT / simplify.prolog < prev    next >
Text File  |  1999-02-07  |  2KB  |  59 lines

  1. /*
  2.  
  3.   SIMPLIFY
  4.  
  5. copyright  P. H. Roosen-Runge, October 1992, 1997
  6. %=====================================================
  7. %      1.3.1 July 8: expects rules to be loaded from theory files
  8. %                rather than the file simplification rules.
  9. %                Rules can be asserted interactively.
  10. %      1.4   Nov. 30, 1997: rename any Prolog variables in result
  11. %      1.4.1   Dec. 21, 1998: paths defined in prolog.ini
  12. %=====================================================
  13.   The program 'simplify' uses the predicate simplify/2 found in 
  14.   prolog-lib/simp.prolog to simplify terms read from the standard input, 
  15.   using simplification rules loaded from theory modules such arithmetic.simp.
  16.  
  17.   theory files are loaded by including 
  18.       theory('<file specification>').
  19.   in the  input data.
  20.  
  21. */
  22.  
  23. :- no_style_check(single_var).
  24. :- nofileerrors.
  25. :- multifile '->>'/2.
  26. :- dynamic '->>'/2.  % so rules can be asserted interactively.
  27.  
  28. % use prolog.ini for path
  29. :- ensure_loaded(lib('simp.prolog')).  % simplify/2 and canonical/2
  30.  
  31. user_error_handler(_,_,_,_) :-  error('!! Something wrong.').
  32. error(X) :- write('!! '), write(X), nl. 
  33.  
  34. activate :- 
  35.  write('Version 1.4.1, December 21, 1998; using simp.prolog, Version 1.8')
  36.      , nl,
  37.        simplifyTerms
  38.      ;
  39.      nl, write('!! Something wrong.'), nl, halt.
  40.  
  41. simplifyTerms :- read(T),
  42.       (T==end_of_file, halt
  43.       ;
  44.        (T = theory(File) -> theory(File)
  45.            ;
  46.             T = assert((Rule)) -> addRule((Rule))
  47.        ;
  48.         simplify(T, Result), 
  49.         copy_term(T ->> Result, Pretty),
  50.             numbervars(Pretty, 0, _),    Pretty = (PT ->> PR),
  51.             nl, write(PT), write(' ->> '),
  52.             nl, write('   '), write(PR), nl
  53.        ),
  54.        simplifyTerms, nl
  55.       ).
  56.  
  57. :- save_program(simplify, activate).
  58.  
  59.