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 liftCloseFrom : forall (n : nat) (f : fol.Formula L) (T : fol.System L) (m : nat), (forall v : nat, In v (freeVarFormula L f) -> v < m) -> n <= m -> folProof.SysPrf L T (closeFrom 0 n f) -> folProof.SysPrf L T (closeFrom m n (subAllFormula f (fun x : nat => match le_lt_dec n x with | left _ => fol.var L x | right _ => fol.var L (m + x) end))).