networks: Add make-tbn.

This commit is contained in:
Sergiu Ivanov 2020-10-15 00:33:18 +02:00
parent d6bf00d617
commit 119fcdb8df

View file

@ -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)))))