hiding(隠蔽)

hiding'\'は (PROCESS) \ {(events)} と記述し、プロセスのアルファベット(インターフェイス)から指定したイベントを隠蔽する。下記の sharing で考えた例を使って解説する。

channel coin, coke, cider, lemonade, drink
MIKE = coin -> ( coke -> drink -> SKIP
                 |~|
                 cider -> drink -> SKIP )

RISA = coin -> lemonade -> drink -> SKIP

VMS = coin -> ( coke -> VMS
                []
                lemonade -> VMS
                []
                cider -> VMS )

MIKEとRISA は ジュースで乾杯するとし、イベントdrink で同期する。sharing(共有)で解説したとおり、

PEOPLE = MIKE |[{drink}]| RISA

ここで、イベントdrink は PEOPLEの中でのイベントであり、VMSとは関係のないイベントである。そこでこのイベントを PEOPLEの内部に隠蔽する。
MIKE と RISA が2人だけで乾杯するとき、PEOPLEの外部との相互作用としてイベントdrink は見えていないことが適切であり、例えば他に drinkイベントを持つKEN が現われても、もはや MIKE と RISA の乾杯には干渉できない。*1
プロセスPEOPLE と VMSは coin,coke,lemonade,ciderで同期をとる。

 PEOPLE = MIKE |[{drink}]| RISA \ {drink}

 aPEOPLE = {coin,coke,lemonade,cider}
 -- aPEOPLE = aMIKE ∪ aRISA - {drink}

 aVMS = {coin,coke,lemonade,cider}

 SYSTEM = PEOPLE [aPEOPLE||aVMS] VMS

*1:もちろん、KEN が2人の乾杯に参加するような場合はイベントdrink を隠蔽しない。