  The Internet of Things (IoT) connects millions of devices of different
cyber-physical systems (CPSs) providing the CPSs additional (implicit)
redundancy during runtime. However, the increasing level of dynamicity,
heterogeneity, and complexity adds to the system's vulnerability, and
challenges its ability to react to faults. Self-healing is an increasingly
popular approach for ensuring resilience, that is, a proper monitoring and
recovery, in CPSs. This work encodes and searches an adaptive knowledge base in
Prolog/ProbLog that models relations among system variables given that certain
implicit redundancy exists in the system. We exploit the redundancy represented
in our knowledge base to generate adaptive runtime monitors which compares
related signals by considering uncertainties in space and time. This enables
the comparison of uncertain, asynchronous, multi-rate and delayed measurements.
The monitor is used to trigger the recovery process of a self-healing
mechanism. We demonstrate our approach by deploying it in a real-world CPS
prototype of a rover whose sensors are susceptible to failure.
