fact: Fixpoint bIter {n A} : BITS n -> (A -> A) -> A -> A := if n is m.+1 then fun p f x => if p == zero _ then x else let (p,b) := eta_expand (splitlsb p) in if b then let r := bIter p f (f x) in bIter p f r else let r := bIter p f x in bIter p f r else fun p f x => x.
imports: mathcomp.ssreflect.ssreflect mathcomp(ssrfun ssrbool eqtype ssrnat seq tuple) spec