Fixpoint addExists (m n : nat) (f : Formula) {struct n} : Formula :=
  match n with
  | O => f
  | S n' => existH (n' + m) (addExists m n' f)
  end.

Lemma subAddExistsNice : forall (n m : nat) (A : Formula) (v : nat) (s : Term), n + m <= v \/ v < m -> (forall v : nat, In v (freeVarTerm LNN s) -> n + m <= v \/ v < m) -> substituteFormula LNN (addExists m n A) v s = addExists m n (substituteFormula LNN A v s).