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).