  We present a novel approach for generalizing the IC3 algorithm for invariant
checking from finite-state to infinite-state transition systems, expressed over
some background theories. The procedure is based on a tight integration of IC3
with Implicit (predicate) Abstraction, a technique that expresses abstract
tran- sitions without computing explicitly the abstract system and is
incremental with respect to the addition of predicates. In this scenario, IC3
operates only at the Boolean level of the abstract state space, discovering
inductive clauses over the abstraction predicates. Theory reasoning is confined
within the underlying SMT solver, and applied transparently when performing
satisfiability checks. When the current abstraction allows for a spurious
counterexample, it is refined by discov- ering and adding a sufficient set of
new predicates. Importantly, this can be done in a completely incremental
manner, without discarding the clauses found in the previous search. The
proposed approach has two key advantages. First, unlike current SMT gener-
alizations of IC3, it allows to handle a wide range of background theories
without relying on ad-hoc extensions, such as quantifier elimination or
theory-specific clause generalization procedures, which might not always be
available, and can moreover be inefficient. Second, compared to a direct
exploration of the concrete transition system, the use of abstraction gives a
significant performance improve- ment, as our experiments demonstrate.
