NO = {0,1,2,3,4} N = 5 channel picksup, putsdown : NO.NO channel thinks, sits, eats, getsup : NO FORK(i) = picksup.i.i -> putsdown.i.i -> FORK(i) [] picksup.(i-1)%N.i -> putsdown.(i-1)%N.i -> FORK(i) PHIL(i) = thinks.i -> sits.i -> picksup.i.i -> picksup.i.(i+1)%N -> eats.i -> putsdown.i.(i+1)%N -> putsdown.i.i -> getsup.i -> PHIL(i) SYS = (|||i:NO @ FORK(i)) [| {| picksup, putsdown |} |] (|||i:NO @ PHIL(i))