Lemma cut_omega_exists {A: Type}: forall (h: stream A) (P: A -> Prop), (exists a, h 0 = Some a /\ P a) -> (exists hs, (forall n, is_fin_stream (hs n)) /\ h = stream_capp hs /\ (forall m n a, hs m (S n) = Some a -> ~ P a) /\ (forall n, exists a, hs n 0 = Some a /\ P a)) \/ (exists hs: list (stream A), (Forall is_fin_stream hs) /\ h = fold_right stream_app empty_stream hs /\ (Forall (fun h0: stream A => forall n a, h0 (S n) = Some a -> ~ P a) hs) /\ (Forall (fun h0: stream A => exists a, h0 0 = Some a /\ P a) hs)).