boolean-power,boolean-power-stream: Move from networks to utils.
This commit is contained in:
parent
1b65cd7624
commit
90bebbded9
2 changed files with 23 additions and 18 deletions
17
networks.rkt
17
networks.rkt
|
@ -72,8 +72,6 @@
|
||||||
[table->function (-> (listof (*list/c any/c any/c)) procedure?)]
|
[table->function (-> (listof (*list/c any/c any/c)) procedure?)]
|
||||||
[table->function/list (-> (listof (*list/c any/c any/c)) procedure?)]
|
[table->function/list (-> (listof (*list/c any/c any/c)) procedure?)]
|
||||||
[table->network (->* ((listof (*list/c any/c any/c))) (#:headers boolean?) network?)]
|
[table->network (->* ((listof (*list/c any/c any/c))) (#:headers boolean?) network?)]
|
||||||
[boolean-power (-> number? (listof (listof boolean?)))]
|
|
||||||
[boolean-power/stream (-> number? (stream/c (listof boolean?)))]
|
|
||||||
[enumerate-boolean-tables (-> number? (stream/c (listof (*list/c boolean? boolean?))))]
|
[enumerate-boolean-tables (-> number? (stream/c (listof (*list/c boolean? boolean?))))]
|
||||||
[enumerate-boolean-functions (-> number? (stream/c procedure?))]
|
[enumerate-boolean-functions (-> number? (stream/c procedure?))]
|
||||||
[enumerate-boolean-functions/list (-> number? (stream/c procedure?))]
|
[enumerate-boolean-functions/list (-> number? (stream/c procedure?))]
|
||||||
|
@ -908,21 +906,6 @@
|
||||||
(check-false (f2 (make-state '((x1 . #t) (x2 . #f)))))
|
(check-false (f2 (make-state '((x1 . #t) (x2 . #f)))))
|
||||||
(check-true (f2 (make-state '((x1 . #t) (x2 . #t)))))))
|
(check-true (f2 (make-state '((x1 . #t) (x2 . #t)))))))
|
||||||
|
|
||||||
;;; Returns the n-th Cartesian power of the Boolean domain: {0,1}^n.
|
|
||||||
(define (boolean-power n) (apply cartesian-product (make-list n '(#f #t))))
|
|
||||||
|
|
||||||
(module+ test
|
|
||||||
(test-case "boolean-power"
|
|
||||||
(check-equal? (boolean-power 2) '((#f #f) (#f #t) (#t #f) (#t #t)))))
|
|
||||||
|
|
||||||
;;; Like boolean-power, but returns a stream whose elements the
|
|
||||||
;;; elements of the Cartesian power.
|
|
||||||
(define (boolean-power/stream n) (apply cartesian-product/stream (make-list n '(#f #t))))
|
|
||||||
|
|
||||||
(module+ test
|
|
||||||
(test-case "boolean-power/stream"
|
|
||||||
(check-equal? (stream->list (boolean-power/stream 2)) '((#f #f) (#f #t) (#t #f) (#t #t)))))
|
|
||||||
|
|
||||||
;;; Returns the stream of the truth tables of all Boolean functions of
|
;;; Returns the stream of the truth tables of all Boolean functions of
|
||||||
;;; a given arity.
|
;;; a given arity.
|
||||||
;;;
|
;;;
|
||||||
|
|
24
utils.rkt
24
utils.rkt
|
@ -46,7 +46,9 @@
|
||||||
(-> (integer-in 1 4294967087) (stream/c exact-nonnegative-integer?))
|
(-> (integer-in 1 4294967087) (stream/c exact-nonnegative-integer?))
|
||||||
(-> exact-integer? (integer-in 1 4294967087)
|
(-> exact-integer? (integer-in 1 4294967087)
|
||||||
(stream/c exact-nonnegative-integer?)))]
|
(stream/c exact-nonnegative-integer?)))]
|
||||||
[cartesian-product/stream (->* () #:rest (listof stream?) stream?)])
|
[cartesian-product/stream (->* () #:rest (listof stream?) stream?)]
|
||||||
|
[boolean-power (-> number? (listof (listof boolean?)))]
|
||||||
|
[boolean-power/stream (-> number? (stream/c (listof boolean?)))])
|
||||||
;; Contracts
|
;; Contracts
|
||||||
(contract-out [variable-mapping? contract?]
|
(contract-out [variable-mapping? contract?]
|
||||||
[string-variable-mapping? contract?]
|
[string-variable-mapping? contract?]
|
||||||
|
@ -674,3 +676,23 @@
|
||||||
(2 4 b)
|
(2 4 b)
|
||||||
(2 5 a)
|
(2 5 a)
|
||||||
(2 5 b)))))
|
(2 5 b)))))
|
||||||
|
|
||||||
|
|
||||||
|
;;; ==================
|
||||||
|
;;; Boolean operations
|
||||||
|
;;; ==================
|
||||||
|
|
||||||
|
;;; Returns the n-th Cartesian power of the Boolean domain: {0,1}^n.
|
||||||
|
(define (boolean-power n) (apply cartesian-product (make-list n '(#f #t))))
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(test-case "boolean-power"
|
||||||
|
(check-equal? (boolean-power 2) '((#f #f) (#f #t) (#t #f) (#t #t)))))
|
||||||
|
|
||||||
|
;;; Like boolean-power, but returns a stream whose elements the
|
||||||
|
;;; elements of the Cartesian power.
|
||||||
|
(define (boolean-power/stream n) (apply cartesian-product/stream (make-list n '(#f #t))))
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(test-case "boolean-power/stream"
|
||||||
|
(check-equal? (stream->list (boolean-power/stream 2)) '((#f #f) (#f #t) (#t #f) (#t #t)))))
|
||||||
|
|
Loading…
Reference in a new issue