Here is a list of properties to check: 1) Liveness: If a processor requests a read then it will eventually be serviced. 2) Safety: If a cache has exclusive access to a block, then the other cache has no access to that block 3) Safety: If the block is in state SHARED in the cache controller, its corresponding bit is set in the Rlist of the directory. 4) Safety: If the block is in state EXCLUSIVE in the cache controller, its corresponding bit is set in the Wlist of the directory