Program Definition stream_capp {A: Type} (h: nat -> stream A): stream A :=
  fun n: nat =>
    match partial_stream_clen' h n return option A with
    | Some (k, m) => h k m
    | None => None
    end.

Lemma stream_capp_spec2 {A: Type}: forall (h: nat -> stream A) (n m: nat), n > 0 -> is_n_stream n (h 0) -> stream_capp h (m + n) = stream_capp (fun n => h (S n)) m.