Definition eq_bool_dec : forall a b : bool, {a = b} + {a <> b}.Fixpoint le_bool (a b : nat) {struct b} : bool :=
  match a, b with
  | O, _ => true
  | S a1, S b1 => le_bool a1 b1
  | _, _ => false
  end.

Theorem fold_left_init : (forall (a : A) (b : B), h (f a b) = f (h a) b) -> forall (a : A) (l : list B), fold_left f l (h a) = h (fold_left f l a).