Event patterns for distributed runtime verification