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_prodp_fold_left: forall xs1 xs2,
|-- prodp (fold_left prodp xs1 e) (fold_left prodp xs2 e) --> fold_left prodp (xs1 ++ xs2) e.