Runtime verification is a technique to check if a system satisfies given correctness properties by monitoring its execution. It involves lightweight monitoring of a system at runtime to identify incorrect behavior. There are three main types of verification: theorem proving, model checking, and testing. Runtime verification monitors systems to check if the actual behavior matches the expected behavior according to contracts or specifications. It can identify failures and additional code can then react, such as displaying error messages.