intros.
unfold close in |- *.
induction (In_dec eq_nat_dec v (no_dup _ eq_nat_dec (freeVarFormula x))).
apply freeVarClosedList1.
auto.
unfold not in |- *; intros.
elim b.
apply no_dup1.
eapply freeVarClosedList2.
apply H.
Qed.
Fixpoint freeVarListFormula (l : fol.Formulas L) :
list nat :=
match l with
| nil => nil (A:=nat)
| f :: l => freeVarFormula f ++ freeVarListFormula l
end.

(* Specifications: *)
Lemma freeVarListFormulaApp :
forall a b : fol.Formulas L,
freeVarListFormula (a ++ b) = freeVarListFormula a ++ freeVarListFormula b.
Lemma In_freeVarListFormula :
forall (v : nat) (f : fol.Formula L) (F : fol.Formulas L),
In v (freeVarFormula f) -> In f F -> In v (freeVarListFormula F).
Lemma In_freeVarListFormulaE :
forall (v : nat) (F : fol.Formulas L),
In v (freeVarListFormula F) ->
exists f : fol.Formula L, In v (freeVarFormula f) /\ In f F.