An algorithm for evolving protocol constraints. - Mark Collins (2006)