exec agent S() = (^m_tel,mary,d)(John(d,mary) | Mary(m_tel) |
		DirectoryAssistance(d,m_tel,mary))

agent John(d,mary) = (^j_tel)'d<mary,j_tel>.j_tel(marys_number).(John(d,mary) | (^hello)'marys_number<hello>.0)

agent Mary(m_tel) = m_tel(message).Mary(m_tel)

agent DirectoryAssistance(d,m_tel,mary)
		= d(name,chan).(DirectoryAssistance(d,m_tel,mary)|[name = mary]'chan<m_tel>.0) + 'm_tel<message>.DirectoryAssistance(d,m_tel,mary)