Option.ListSourceList.cons x l equals y::l if x is Some y and l otherwise.
List.flatten l is the list of all the ys such that l contains Some y (in the same order).
List.find f l is the first f a different from None, scrolling through elements a of l in left-to-right order; it is None if no such element exists.
List.map f [a1;...;an] is the list Some [b1;...;bn] if for all i, there is a bi such that f ai is Some bi; it is None if, for at least one i, f ai is None.