  There is growing interest in termination reasoning for non-linear programs
and, meanwhile, recent dynamic strategies have shown they are able to infer
invariants for such challenging programs. These advances led us to hypothesize
that perhaps such dynamic strategies for non-linear invariants could be adapted
to learn recurrent sets (for non-termination) and/or ranking functions (for
termination). In this paper, we exploit dynamic analysis and draw termination
and non-termination as well as static and dynamic strategies closer together in
order to tackle non-linear programs. For termination, our algorithm infers
ranking functions from concrete transitive closures, and, for non-termination,
the algorithm iteratively collects executions and dynamically learns conditions
to refine recurrent sets. Finally, we describe an integrated algorithm that
allows these algorithms to mutually inform each other, taking counterexamples
from a failed validation in one endeavor and crossing both the static/dynamic
and termination/non-termination lines, to create new execution samples for the
other one.

Programming Languages