iunfoldr is an iterative operation that applies a function f repeatedly.
It produces a sequence of state values [s_0, s_1 .. s_w] and a bitvector
v where f i s_i = (s_{i+1}, b_i) and b_i is bit ith least-significant bit
in v (e.g., getLsb v i = b_i).
Theorems involving iunfoldr can be eliminated using iunfoldr_replace below.