Comparing trace expressions and linear temporal logic for runtime verification