networks: Add make-tbn.
This commit is contained in:
parent
d6bf00d617
commit
119fcdb8df
1 changed files with 13 additions and 1 deletions
14
networks.rkt
14
networks.rkt
|
@ -100,7 +100,8 @@
|
||||||
[tbf/state-tabulate* (->* ((non-empty-listof tbf/state?)) (#:headers boolean?)
|
[tbf/state-tabulate* (->* ((non-empty-listof tbf/state?)) (#:headers boolean?)
|
||||||
(listof (listof (or/c symbol? number?))))]
|
(listof (listof (or/c symbol? number?))))]
|
||||||
[tbf/state-tabulate (->* (tbf/state?) (#:headers boolean?)
|
[tbf/state-tabulate (->* (tbf/state?) (#:headers boolean?)
|
||||||
(listof (listof (or/c symbol? number?))))])
|
(listof (listof (or/c symbol? number?))))]
|
||||||
|
[make-tbn (-> (listof (cons/c variable? tbf/state?)) tbn?)])
|
||||||
;; Predicates
|
;; Predicates
|
||||||
(contract-out [variable? (-> any/c boolean?)]
|
(contract-out [variable? (-> any/c boolean?)]
|
||||||
[state? (-> any/c boolean?)]
|
[state? (-> any/c boolean?)]
|
||||||
|
@ -1235,3 +1236,14 @@
|
||||||
;;; The tbf/state must only reference variables appearing in the
|
;;; The tbf/state must only reference variables appearing in the
|
||||||
;;; network. This contract does not check this condition.
|
;;; network. This contract does not check this condition.
|
||||||
(define tbn? (hash/c variable? tbf/state?))
|
(define tbn? (hash/c variable? tbf/state?))
|
||||||
|
|
||||||
|
;;; Builds a TBN from a list of pairs (variable, tbf/state).
|
||||||
|
(define make-tbn make-immutable-hash)
|
||||||
|
|
||||||
|
(module+ test
|
||||||
|
(test-case "make-tbn"
|
||||||
|
(define tbf-not (make-tbf/state '((a . -1)) -1))
|
||||||
|
(define tbf-id (make-sbf/state '((a . 1))))
|
||||||
|
(check-equal? (make-tbn `((a . ,tbf-not) (b . ,tbf-id)))
|
||||||
|
(hash 'a (tbf/state '#hash((a . -1)) -1)
|
||||||
|
'b (tbf/state '#hash((a . 1)) 0)))))
|
||||||
|
|
Loading…
Reference in a new issue