simp only [List.mem_toFinset] at s1
case h1
D : Type
I : Interpretation D
hd : Definition
tl : List Definition
ih :
  ∀ (V V' : VarAssignment D) (F : Formula),
    (∀ (v : VarName), isFreeIn v F → V v = V' v) → (Holds D I V tl F ↔ Holds D I V' tl F)
X : DefName
xs : List VarName
V V' : VarAssignment D
h1 : ∀ v ∈ xs, V v = V' v
c1 : X = hd.name ∧ xs.length = hd.args.length
v : VarName
a1 : v ∈ hd.q.freeVarSet
s1 : v ∈ hd.args.toFinset
⊢ Function.updateListITE V hd.args (List.map V xs) v = Function.updateListITE V' hd.args (List.map V' xs) v
case h1
D : Type
I : Interpretation D
hd : Definition
tl : List Definition
ih :
  ∀ (V V' : VarAssignment D) (F : Formula),
    (∀ (v : VarName), isFreeIn v F → V v = V' v) → (Holds D I V tl F ↔ Holds D I V' tl F)
X : DefName
xs : List VarName
V V' : VarAssignment D
h1 : ∀ v ∈ xs, V v = V' v
c1 : X = hd.name ∧ xs.length = hd.args.length
v : VarName
a1 : v ∈ hd.q.freeVarSet
s1 : v ∈ hd.args
⊢ Function.updateListITE V hd.args (List.map V xs) v = Function.updateListITE V' hd.args (List.map V' xs) v