Fixpoint closeFrom (a n : nat) (f : fol.Formula L) {struct n} :
 fol.Formula L :=
  match n with
  | O => f
  | S m => fol.forallH L (a + m) (closeFrom a m f)
  end.

Lemma reduceSubAll : forall (T : fol.System L) (map : nat -> fol.Term L) (A B : fol.Formula L), (forall v : nat, ~ In_freeVarSys L v T) -> folProof.SysPrf L T (fol.iffH L A B) -> folProof.SysPrf L T (fol.iffH L (subAllFormula A map) (subAllFormula B map)).