Fixpoint composeOptN' {A} (f : A -> option A) n x :=
match n with
| 0 => Some x
| S n =>
match composeOptN' f n x with
| Some y => f y
| None => None
end
end.

Lemma composeOptN_assoc {A} (f : A -> option A) n x :
composeOptN f n x = composeOptN' f n x.