Verifying hyperproperties at runtime is a challenging problem as
hyperproperties, such as non-interference and observational determinism, relate
multiple computation traces with each other. It is necessary to store
previously seen traces, because every new incoming trace needs to be compatible
with every run of the system observed so far. Furthermore, the new incoming
trace poses requirements on future traces. In our monitoring approach, we focus
on those requirements by rewriting a hyperproperty in the temporal logic
HyperLTL to a Boolean constraint system. A hyperproperty is then violated by
multiple runs of the system if the constraint system becomes unsatisfiable. We
compare our implementation, which utilizes either BDDs or a SAT solver to store
and evaluate constraints, to the automata-based monitoring tool RVHyper