Section AdjointTheorems.
Context {L: Language}
{minL: MinimumLanguage L}
{Gamma: Provable L}
{minAX: MinimumAxiomatization L Gamma}
{prodp funcp: expr -> expr -> expr}
{Adj: Adjointness L Gamma prodp funcp}.

Lemma adjoint_iter:
forall x xs y,
|-- fold_left prodp xs x --> y <-> |-- x --> (fold_right funcp y xs).