Fixpoint nnHelp (f : Formula L) : Formula L :=
  match f with
  | equal t s => equal L t s
  | atomic r ts => atomic L r ts
  | impH A B => impH L (nnHelp A) (nnHelp B)
  | notH A => notH L (nnHelp A)
  | forallH v A => forallH L v (notH L (notH L (nnHelp A)))
  end.Definition nnTranslate (f : Formula L) : Formula L :=
  notH L (notH L (nnHelp f)).

(* Specifications: *)
Lemma freeVarNNHelp : forall f : Formula L, freeVarFormula L f = freeVarFormula L (nnHelp f).
Lemma subNNHelp : forall (f : Formula L) (v : nat) (s : Term L), substituteFormula L (nnHelp f) v s = nnHelp (substituteFormula L f v s).