summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rabbit-prover.scm34
1 files changed, 15 insertions, 19 deletions
diff --git a/rabbit-prover.scm b/rabbit-prover.scm
index fde842d..a3f0a58 100644
--- a/rabbit-prover.scm
+++ b/rabbit-prover.scm
@@ -619,43 +619,40 @@
(define current-book (make-parameter '()))
-(define (add-book b x)
- (cond ((assoc (proposition-name x) b)
- => (lambda (prop)
- (if (equal? x prop)
- b
- (error "add-book: error"))))
- (else (cons x b))))
+(define (add-book x)
+ (let ((b (current-book)))
+ (current-book
+ (cond ((assoc (proposition-name x) b)
+ => (lambda (prop)
+ (if (equal? x prop)
+ b
+ (error "add-book: error"))))
+ (else (cons x b))))))
(define-syntax define-axiom
(syntax-rules ()
((_ name (var ...) expr)
(current-book
- (add-book (current-book)
- (axiom 'name '(var ...) 'expr))))))
+ (add-book (axiom 'name '(var ...) 'expr))))))
(define-syntax define-theorem
(syntax-rules ()
((_ name (var ...) expr)
- (current-book
- (add-book (current-book)
- (theorem 'name '(var ...) 'expr))))))
+ (add-book (theorem 'name '(var ...) 'expr)))))
(define-syntax define-function
(syntax-rules ()
((_ name (var ...) expr)
(let ((f (function 'name '(var ...) 'expr)))
- (current-book (add-book (current-book) f))
+ (add-book f)
f))))
(define-syntax define-macro
(syntax-rules ()
((_ name () ((lhs1 . lhs2) rhs) ...)
- (current-book
- (add-book (current-book)
- (macro 'name
- (list (mrule (all-vars 'lhs2) '(lhs1 . lhs2) 'rhs)
- ...)))))))
+ (add-book (macro 'name
+ (list (mrule (all-vars 'lhs2) '(lhs1 . lhs2) 'rhs)
+ ...))))))
(define-syntax define-book
(syntax-rules ()
@@ -742,7 +739,6 @@
(equal? (app (app x y) z)
(app x (app y z)))))
-
(define (size x)
(if (pair? x)
(+ 1