examples.scm 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. (define-module (trs examples)
  2. #:use-module (trs trs)
  3. #:export (logic-1
  4. arith-1
  5. logic-2
  6. cnf
  7. arith-2
  8. peano
  9. klop
  10. free-group))
  11. (define-trs logic-1
  12. (--> (<-> x y) (and (-> x y) (-> y x)))
  13. (--> (-> x y) (or (not x) y)))
  14. (define-trs arith-1
  15. (--> (+ x 0) x)
  16. (--> (+ 0 x) x)
  17. (--> (* x 1) x)
  18. (--> (* 1 x) x)
  19. (--> (+ (- x) x) 0)
  20. (--> (+ x (- x)) 0))
  21. (define-trs logic-2
  22. (--> (and x (not x)) #f)
  23. (--> (and (not x) x) #f)
  24. (--> (or x (not x)) #t)
  25. (--> (or (not x) x) #t)
  26. (--> (and #t #t) #t)
  27. (--> (or #t x) #t)
  28. (--> (or x #t) #t)
  29. (--> (and #f x) #f)
  30. (--> (and x #f) #f)
  31. (--> (or #f #f) #f))
  32. (define-trs cnf
  33. (--> (not (not x)) x)
  34. (--> (not (and x y)) (or (not x) (not y)))
  35. (--> (not (or x y)) (and (not x) (not y)))
  36. (--> (or x (and y z)) (and (or x y) (or x z)))
  37. (--> (or (and x y) z) (and (or x z) (or y z))))
  38. (define-trs arith-2
  39. ;; this really illustrates limitations of TRS
  40. ;;
  41. ;; hacked together to try to repeat the example
  42. ;; (a + b)^2 = a^2 + 2ab + b^2
  43. ;; from
  44. ;;
  45. ;; <http://www.meta-environment.org/doc/books/extraction-transformation/term-rewriting/term-rewriting.html>
  46. (--> (^ x 2) (* x x))
  47. (--> (* k (+ a b)) (+ (* k a) (* k b)))
  48. (--> (* (+ a b) k) (+ (* a k) (* b k)))
  49. (--> (+ (* a b) (+ (* b a) z)) (+ (* 2 a b) z))
  50. (--> (+ (+ u v) w) (+ u (+ v w))))
  51. (define-trs peano
  52. (--> (+ (z) x) x)
  53. (--> (+ (s x) y) (s (+ x y)))
  54. (--> (* (z) x) (z))
  55. (--> (* (s x) y) (+ (* x y) y)))
  56. (define-trs klop
  57. ;; taken from
  58. ;;
  59. ;; http://www.informatik.uni-bremen.de/agbkb/lehre/rbs/texte/Klop-TR.pdf
  60. ;; page 17
  61. (--> ($ ($ ($ (s) x) y) z)
  62. ($ ($ x z) ($ y z)))
  63. (--> ($ ($ (k) x) y)
  64. x)
  65. (--> ($ (i) x)
  66. x)
  67. (--> ($ ($ ($ (b) x) y) z)
  68. ($ x ($ y z)))
  69. (--> ($ ($ ($ (b) x) y) z)
  70. ($ x ($ y z))))
  71. (define-trs free-group
  72. ;; An example of a Knuth-Bendix completion
  73. ;;
  74. ;; https://en.wikipedia.org/wiki/Word_problem_%28mathematics%29
  75. (--> (* (e) x) x)
  76. (--> (* (/ x) x) (e))
  77. (--> (* (* x y) z) (* x (* y z)))
  78. (--> (* (/ x) (* x y)) y)
  79. (--> (/ (e)) (e))
  80. (--> (* x (e)) x)
  81. (--> (/ (/ x)) x)
  82. (--> (* x (/ x)) (e))
  83. (--> (* x (* (/ x) y)) y)
  84. (--> (/ (* x y)) (* (/ y) (/ x))))