constructor
v : Var
X : String
vs : List Var
⊢ v ∈ vs ∧ v.isFree ↔ ∃ a ∈ vs, v ∈ a.freeVarSet
case mp
v : Var
X : String
vs : List Var
⊢ v ∈ vs ∧ v.isFree → ∃ a ∈ vs, v ∈ a.freeVarSet

case mpr
v : Var
X : String
vs : List Var
⊢ (∃ a ∈ vs, v ∈ a.freeVarSet) → v ∈ vs ∧ v.isFree