ABSTRACT
A typical protocol makes various assumptions about the environment in which it is deployed. For instance, to guarantee a security requirement, a protocol may rely on the attacker not having prior knowledge of secrets that the system relies on, or the end user correctly carrying out a key protocol step (e.g., browser authentication). Similarly, a distributed protocol typically relies on assumptions about the reliability of the underlying network (e.g., a message is delivered without corruption; certain network nodes are always connected).