Section AssocTheorems.
Context {L: Language}
{minL: MinimumLanguage L}
{Gamma: Provable L}
{minAX: MinimumAxiomatization L Gamma}
{prodp: expr -> expr -> expr}
{e: expr}
{Mono: Monotonicity L Gamma prodp}
{Assoc: Associativity L Gamma prodp}
{LU: LeftUnit L Gamma e prodp}
{RU: RightUnit L Gamma e prodp}.
(* Since the left unit and right unit can only be identical, we can just assume that directly. *)

Lemma assoc_fold_left_cons: forall x xs,
|-- fold_left prodp xs (prodp e x) --> prodp x (fold_right prodp e xs).