End MonoTheorems.
Section AssocTheorems.
Context {e: expr}
{Mono: Monotonicity L Gamma prodp}
{Assoc: Associativity L Gamma prodp}.

(* Specifications: *)
Lemma prodp_assoc: forall x y z, |-- prodp x (prodp y z) <--> prodp (prodp x y) z.
Context {LU: LeftUnit L Gamma e prodp}
{RU: RightUnit L Gamma e prodp}.
Lemma assoc_fold_left_fold_right_equiv: forall xs,
|-- fold_left prodp xs e <--> fold_right prodp e xs.
Lemma assoc_prodp_fold_left_equiv: forall xs1 xs2,
|-- prodp (fold_left prodp xs1 e) (fold_left prodp xs2 e) <--> fold_left prodp (xs1 ++ xs2) e.