first | apply forall_congr' | apply exists_congr
D : Type
I : Interpretation D
E : Env
F F' h1_phi : Formula
h1_x h1_y : VarName
h1_1 : ¬isFreeIn h1_y h1_phi
h1_2 : ¬isBoundIn h1_y h1_phi
V : VarAssignment D
⊢ (∃ d, Holds D I (Function.updateITE V h1_x d) E h1_phi) ↔
    ∃ d, Holds D I (Function.updateITE V h1_y d) E (Sub.Var.One.Rec.fastReplaceFree h1_x h1_y h1_phi)
case h
D : Type
I : Interpretation D
E : Env
F F' h1_phi : Formula
h1_x h1_y : VarName
h1_1 : ¬isFreeIn h1_y h1_phi
h1_2 : ¬isBoundIn h1_y h1_phi
V : VarAssignment D
⊢ ∀ (a : D),
    Holds D I (Function.updateITE V h1_x a) E h1_phi ↔
      Holds D I (Function.updateITE V h1_y a) E (Sub.Var.One.Rec.fastReplaceFree h1_x h1_y h1_phi)