aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob L. Kreuze2023-05-03 17:58:45 -0400
committerJakob L. Kreuze2023-05-03 17:58:45 -0400
commit75e75abb6a963e046e5388a621078544ab9b3264 (patch)
tree67019ba8cad73594b2fbb8a8681a7738e7e52eab
parent1b9cb164f918ace196a5db07a7a330e6da5e0d23 (diff)
Update unconditional assignment optimization
Now is #t == #t with `bool-to-prop' pass
-rw-r--r--compiler/lean.scm14
1 files changed, 8 insertions, 6 deletions
diff --git a/compiler/lean.scm b/compiler/lean.scm
index 11e6b5c..18f6833 100644
--- a/compiler/lean.scm
+++ b/compiler/lean.scm
@@ -192,23 +192,25 @@
(newline)
(for-each
(lambda (rule i)
- (if (equal? #t (body rule))
- ;; Special case where the fact is true unconditionally.
- (format #t "| rule~a : (~a = (~a)) → ~a ~a"
+ (match (body rule)
+ ;; Special case where the fact is true unconditionally.
+ (($ <lean-compare> 'eq ($ <constant> #t) ($ <constant> #t))
+ (format #t "| rule~a : (~a = (~a)) → ~a ~a"
(number->subscript i) ; rule~a
(subject x) ; (~a = ~a)
(compile (conclusion rule))
inductive-name ; → ~a
(subject x)
- )
- (format #t "| rule~a : ~a → (~a = (~a)) → ~a ~a"
+ ))
+ (_
+ (format #t "| rule~a : ~a → (~a = (~a)) → ~a ~a"
(number->subscript i) ; rule~a
(compile (body rule)) ; ~a →
(subject x) ; (~a = ~a)
(compile (conclusion rule))
inductive-name ; → ~a
(subject x)
- ))
+ )))
(newline))
(facts x)
(iota (length (facts x)))))))

© 2015 - 2026 Jakob L. Kreuze