rules.csp 569 Bytes
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
---------------------------------------------------------
-- COMMUNICATION RULES --
---------------------------------------------------------

INTER(P,Q) = P ||| Q
COMM(P,Q,c1,c2) = (P ||| Q) [| {| c1,c2 |} |] BFIO(c1,c2)
FEED(P,c1,c2) = P[| {| c1,c2 |} |] BFIO(c1,c2)
REF(P,c1,c2) = P[| {| c1,c2 |} |] BFIO(c1,c2)

-- BUFFERS
BUFFER(ci,co, n) =
let
B(<>) = ci?x -> B(<x>)
B(s) = (co!head(s) -> B(tail(s)))
[] (#s<n & ci?x -> B(s^<x>))
within B(<>)
BFIO(c1,c2) = BUFFER(c1.req, c2.req,1) ||| BUFFER(c2.ack, c1.ack,1)