simp only [phi_ih]
c : Char
x : VarName
phi : Formula
phi_ih : ∀ (σ : VarName → VarName), (sub σ c phi).freeVarSet = Finset.image σ phi.freeVarSet
σ : VarName → VarName
⊢ (sub
          (Function.updateITE σ x
            (if ∃ y ∈ phi.freeVarSet \ {x}, σ y = x then fresh x c (sub (Function.updateITE σ x x) c phi).freeVarSet
            else x))
          c phi).freeVarSet \
      {if ∃ y ∈ phi.freeVarSet \ {x}, σ y = x then fresh x c (sub (Function.updateITE σ x x) c phi).freeVarSet else x} =
    Finset.image σ (phi.freeVarSet \ {x})
c : Char
x : VarName
phi : Formula
phi_ih : ∀ (σ : VarName → VarName), (sub σ c phi).freeVarSet = Finset.image σ phi.freeVarSet
σ : VarName → VarName
⊢ Finset.image
        (Function.updateITE σ x
          (if ∃ y ∈ phi.freeVarSet \ {x}, σ y = x then
            fresh x c (Finset.image (Function.updateITE σ x x) phi.freeVarSet)
          else x))
        phi.freeVarSet \
      {if ∃ y ∈ phi.freeVarSet \ {x}, σ y = x then fresh x c (Finset.image (Function.updateITE σ x x) phi.freeVarSet)
        else x} =
    Finset.image σ (phi.freeVarSet \ {x})