  We design learning algorithms for synthesizing invariants using Horn
implication counterexamples (Horn-ICE), extending the ICE-learning model. In
particular, we describe a decision-tree learning algorithm that learns from
Horn-ICE samples, works in polynomial time, and uses statistical heuristics to
learn small trees that satisfy the samples. Since most verification proofs can
be modeled using Horn clauses, Horn-ICE learning is a more robust technique to
learn inductive annotations that prove programs correct. Our experiments show
that an implementation of our algorithm is able to learn adequate inductive
invariants and contracts efficiently for a variety of sequential and concurrent
programs.
