canApply

Returns true iff op is valid to apply to this CardState.

The membership checks against local state double as dedup and as the primary double-encode defence; they are order-independent under per-sender FIFO delivery because a player appears in the local sets only via ops that subsume the rejected one (see applyOp).