Fixpoint app_fin_inf {ora: RandomOracle} (l: list RandomQA) (f: nat -> RandomQA) :=
  match l with
  | nil => f
  | qa :: l0 => fun n =>
                match n with
                | 0 => qa
                | S m => app_fin_inf l0 f m
                end
  end.

Lemma nth_error_app1: forall {T} (al bl : list T) (j: nat), (j < length al)%nat -> nth_error (al++bl) j = nth_error al j.