Section DerivableRules.
Context {L: Language}
{minL: MinimumLanguage L}
{pL: PropositionalLanguage L}
{Gamma: Provable L}
{minAX: MinimumAxiomatization L Gamma}
{ipAX: IntuitionisticPropositionalLogic L Gamma}.
Definition multi_and (xs: list expr): expr := fold_left andp xs truep.

Lemma multi_and_unfold_left_assoc:  forall (xs: list expr),
|-- multi_and xs <-->
match xs with
| nil => TT
| x :: xs0 =>
(fix f xs x :=
match xs with
| nil => x
| x0 :: xs0 => f xs0 (x && x0)
end) xs0 x
end.