Fixpoint df_mexists n f :=
    match n with 
      | 0   => f
      | S n => df_mexists n (df_exst f)
    end.Fact df_mexists_size n f : df_size (df_mexists n f) = n + df_size f.Fact df_mexists_size_Z n f : df_size_Z (df_mexists n f) = (Z.of_nat n + df_size_Z f)%Z.

Lemma df_mexists_spec n f ν : df_pred (df_mexists n f) ν <-> exists π, df_pred f (fun i => if le_lt_dec n i then ν (i-n) else π i).