diff options
| author | Jakob L. Kreuze | 2023-05-03 17:58:45 -0400 |
|---|---|---|
| committer | Jakob L. Kreuze | 2023-05-03 17:58:45 -0400 |
| commit | 75e75abb6a963e046e5388a621078544ab9b3264 (patch) | |
| tree | 67019ba8cad73594b2fbb8a8681a7738e7e52eab | |
| parent | 1b9cb164f918ace196a5db07a7a330e6da5e0d23 (diff) | |
Update unconditional assignment optimization
Now is #t == #t with `bool-to-prop' pass
| -rw-r--r-- | compiler/lean.scm | 14 |
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))))))) |