We introduce *Runtime Verification with Particle Filtering* (RVPF), a
powerful and versatile method for controlling the tradeoff between
uncertainty and overhead in runtime verification. Overhead and accuracy are
controlled by adjusting the frequency and duration of *observation gaps*,
during which program events are not monitored, and by adjusting the number
of particles used in the RVPF algorithm. We succinctly represent the
program model, the program monitor, their interaction, and their
observations as a dynamic Bayesian network (DBN). Our formulation of RVPF
in terms of DBNs is essential for a proper formalization of *peek events*:
low-cost observations of parts of the program state, which are performed
probabilistically at the end of observation gaps. Peek events provide
information that our algorithm uses to reduce the uncertainty in the
monitor state after gaps.

We estimate the internal state of the DBN using particle filtering (PF) with sequential importance resampling (SIR). PF uses a collection of conceptual particles (random samples) to estimate the probability distribution for the system's current state: the probability of a state is given by the sum of the importance weights of the particles in that state. After an observed event, each particle chooses a state transition to execute by sampling the DBN's joint transition probability distribution; particles are then redistributed among the states that best predicted the current observation. SIR exploits the DBN structure and the current observation to reduce the variance of the PF and increase its performance.

We experimentally compare the overhead and accuracy of our RVPF algorithm with two previous approaches to runtime verification with state estimation: an exact algorithm based on the forward algorithm for HMMs, and an approximate version of that algorithm, which uses precomputation to reduce runtime overhead. Our results confim RVPF's versatility, showing how it can be used to control the tradeoff between execution time and memory usage while, at the same time, being the most accurate of the three algorithms.