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 を隠蔽しない。