rs: Start.
This commit is contained in:
parent
007c5b96bf
commit
bb247d9eb8
2 changed files with 43 additions and 0 deletions
12
rs-tests.rkt
Normal file
12
rs-tests.rkt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#lang typed/racket
|
||||||
|
|
||||||
|
;;; Tests for dds/rs.
|
||||||
|
|
||||||
|
(require typed/rackunit "rs.rkt")
|
||||||
|
|
||||||
|
(test-case "Basic definitions"
|
||||||
|
(let ([r (reaction (set 'a) (set 'b) (set 'c))]
|
||||||
|
[s1 (set 'a 'c)]
|
||||||
|
[s2 (set 'a 'b)])
|
||||||
|
(check-true (enabled? r s1))
|
||||||
|
(check-false (enabled? r s2))))
|
31
rs.rkt
Normal file
31
rs.rkt
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#lang typed/racket
|
||||||
|
|
||||||
|
;;; dds/rs
|
||||||
|
|
||||||
|
;;; Definitions for working with reaction systems.
|
||||||
|
|
||||||
|
(provide
|
||||||
|
;; Structures
|
||||||
|
reaction
|
||||||
|
;; Functions
|
||||||
|
enabled?)
|
||||||
|
|
||||||
|
;;; =================
|
||||||
|
;;; Basic definitions
|
||||||
|
;;; =================
|
||||||
|
|
||||||
|
;;; A species is a symbol.
|
||||||
|
(define-type Species Symbol)
|
||||||
|
|
||||||
|
;;; A reaction is a triple of sets, giving the reactants, the
|
||||||
|
;;; inhibitors, and the products, respectively.
|
||||||
|
(struct reaction ([reactants : (Setof Symbol)]
|
||||||
|
[inhibitors : (Setof Symbol)]
|
||||||
|
[products : (Setof Symbol)]))
|
||||||
|
|
||||||
|
;;; A reaction is enabled on a set if all of its reactants are in the
|
||||||
|
;;; set and none of its inhibitors are.
|
||||||
|
(: enabled? (-> reaction (Setof Symbol) Boolean))
|
||||||
|
(define/match (enabled? r s)
|
||||||
|
[((reaction r i p) s)
|
||||||
|
(and (subset? r s) (set-empty? (set-intersect i s)))])
|
Loading…
Reference in a new issue