fact: Definition big_flat_op {T} (op : T -> T -> T) (a : T) (sz : nat) : T := Eval cbv [Z_of_nat Pos.of_succ_nat Pos.iter_op Pos.succ] in match Z_of_nat sz with | Z0 => a | Zpos p => Pos.iter_op op p a | Zneg p => a end.
imports: Coq.ZArith.ZArith Coq.Lists.List