proposition: Lemma fold_single : forall A B (m:monoid_op B) (f:A->B) (x:A), Monoid m -> fold m f \{x} = f x.
proof: Proof. Proof using. intros. rewrite fold_eq_fold_to_list. rewrite to_list_single. rewrite~ fold_cons. rewrite fold_nil. rewrite~ monoid_neutral_r. Qed.
imports: Coq.Classes.Morphisms TLC(LibTactics LibLogic LibReflect LibList LibOperation LibMonoid LibInt LibNat LibEpsilon LibRelation LibMin)