Implementing comprehensive assertions traditionally involves writing complicated temporal expressions and properties using an assertion language or hand-coding tests ...