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