Do arbitrary/Byzantine failures include omission failures and timing failures? Distributed Systems 5ed by Coulouris says on p68


  2.4.2 Failure Models
  
  Omission Failures ...
  
  Arbitrary Failures
  The term arbitrary or Byzantine failure is used to describe the worst 
  possible failure semantics, in which any type of error may occur. For example, a process 
  may set wrong values in its data items, or it may return a wrong value in response to an 
  invocation.
  
  Timing Failures ...


Are arbitrary/Byzantine failures arbitrary? (Sounds yes to me.)

Do arbitrary/Byzantine failures include omission failures and timing failures? (I guess not. Otherwise, why does it describe omission failures and timing failures separately?)

The book on p660 says


  15.5.1 System model and problem definitions
  
  Our system model includes a collection of processes communicating by
  message passing. An important requirement that applies in many
  practical situa- tions is for consensus to be reached even in the
  presence of faults. We assume, as before,  that communication is
  reliable but that processes may fail. In this section we consider 
  Byzantine (arbitrary) process failures, as well as crash failures.


Does the above quote imply that crash failures (a kind of process omission failures, as the book said in Section 2.4.2) are not Byzantine (arbitrary) process failures?

Thanks.
Arbitrary failure means exactly what it says. It means that the failing process should be treated as if an opponent is choosing the process's behavior to try to break your system.

Other types of failure, such as omission failures and timing failures, are special cases of this. They are relevant because certain algorithms only guarantee correct results in all cases if, for example, it is assumed that a process may fail to respond to a message (omission failure) but cannot fail in other ways, such as by responding with incorrect data.