Type sbf/state?.

This commit is contained in:
Sergiu Ivanov 2023-03-29 17:46:53 +02:00
parent ed67927803
commit b8b9fee9ce
2 changed files with 19 additions and 0 deletions

View file

@ -81,3 +81,13 @@ and weights, as well as a threshold.
@ex[ @ex[
(make-tbf/state '((x1 . 1) (x2 . 1)) 1) (make-tbf/state '((x1 . 1) (x2 . 1)) 1)
]} ]}
@defproc[(sbf/state? [tbfs TBF/State]) Boolean]{
A state sign Boolean function (SBF) is a @racket[TBF/State] whose
threshold is 0.
@ex[
(sbf/state? (tbf/state (hash 'a -1 'b 1) 0))
(sbf/state? (tbf/state (hash 'a -1 'b 1) 1))
]}

View file

@ -16,6 +16,7 @@
apply-tbf-to-state apply-tbf-to-state
(struct-out tbf/state) TBF/State tbf/state-w tbf/state-θ make-tbf/state (struct-out tbf/state) TBF/State tbf/state-w tbf/state-θ make-tbf/state
sbf/state?
) )
(: apply-tbf-to-state (-> TBF (State (U Zero One)) (U Zero One))) (: apply-tbf-to-state (-> TBF (State (U Zero One)) (U Zero One)))
@ -45,6 +46,14 @@
(define f (make-tbf/state '((x1 . 1) (x2 . 1)) 1)) (define f (make-tbf/state '((x1 . 1) (x2 . 1)) 1))
(check-equal? (tbf/state-w f) #hash((x1 . 1) (x2 . 1))) (check-equal? (tbf/state-w f) #hash((x1 . 1) (x2 . 1)))
(check-equal? (tbf/state-θ f) 1))) (check-equal? (tbf/state-θ f) 1)))
(: sbf/state? (-> TBF/State Boolean))
(define (sbf/state? tbfs) (zero? (tbf/state-θ tbfs)))
(module+ test
(test-case "sbf/state?"
(check-true (sbf/state? (tbf/state (hash 'a -1 'b 1) 0)))
(check-false (sbf/state? (tbf/state (hash 'a -1 'b 1) 1)))))
) )
(module+ test (module+ test