ものすごく簡単な例が欲しい、というわけで。
Deadlockの例
; Definitions
(define-channel rch (x) '((0) (1)))
(define-channel sch (x) '((0) (1)))
; Receiver
(define-process Receiver
(? rch (x) (= x 0) (! sch (0) Receiver)))
; Sender : Deadlockの例1 SenderもReceiverもメッセージ受信待ち
(define-process Sender
(? sch (x) (= x 0) (! rch (0) Sender)))
; Sender : Deadlockの例2 Receriverは0を送信するが、Senderは1が来るまで待ち
(define-process Sender
(! rch (0) (? sch (x) (= x 1) Sender)))
; SYS
(define-process SYS
(par (list rch sch) Receiver Sender))