simp only [Function.updateITE]
case neg
D : Type
I : Interpretation D
E : Env
c : Char
x : VarName
phi : Formula
phi_ih : ∀ (V : VarAssignment D) (σ : VarName → VarName), Holds D I V E (sub σ c phi) ↔ Holds D I (V ∘ σ) E phi
V : VarAssignment D
σ : VarName → VarName
d : D
v : VarName
a1 : isFreeIn v phi
c1 : ¬∃ y ∈ phi.freeVarSet \ {x}, σ y = x
c2 : ¬v = x
s1 : ¬σ v = x
⊢ Function.updateITE V x d (Function.updateITE σ x x v) = Function.updateITE (V ∘ σ) x d v
case neg
D : Type
I : Interpretation D
E : Env
c : Char
x : VarName
phi : Formula
phi_ih : ∀ (V : VarAssignment D) (σ : VarName → VarName), Holds D I V E (sub σ c phi) ↔ Holds D I (V ∘ σ) E phi
V : VarAssignment D
σ : VarName → VarName
d : D
v : VarName
a1 : isFreeIn v phi
c1 : ¬∃ y ∈ phi.freeVarSet \ {x}, σ y = x
c2 : ¬v = x
s1 : ¬σ v = x
⊢ (if (if v = x then x else σ v) = x then d else V (if v = x then x else σ v)) = if v = x then d else (V ∘ σ) v