induction E generalizing F binders V V' σ σ'
D : Type
I : Interpretation D
V V' : VarAssignment D
E : Env
σ σ' : VarName → VarName
binders : Finset VarName
F : Formula
h1 : admitsAux σ binders F
h2 : ∀ (v : VarName), v ∈ binders ∨ σ' v ∉ binders → V v = V' (σ' v)
h2' : ∀ v ∈ binders, v = σ' v
h3 : ∀ v ∉ binders, σ' v = σ v
⊢ Holds D I V E F ↔ Holds D I V' E (fastReplaceFree σ' F)
case nil
D : Type
I : Interpretation D
V V' : VarAssignment D
σ σ' : VarName → VarName
binders : Finset VarName
F : Formula
h1 : admitsAux σ binders F
h2 : ∀ (v : VarName), v ∈ binders ∨ σ' v ∉ binders → V v = V' (σ' v)
h2' : ∀ v ∈ binders, v = σ' v
h3 : ∀ v ∉ binders, σ' v = σ v
⊢ Holds D I V [] F ↔ Holds D I V' [] (fastReplaceFree σ' F)

case cons
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V V' : VarAssignment D) (σ σ' : VarName → VarName) (binders : Finset VarName) (F : Formula),
    admitsAux σ binders F →
      (∀ (v : VarName), v ∈ binders ∨ σ' v ∉ binders → V v = V' (σ' v)) →
        (∀ v ∈ binders, v = σ' v) →
          (∀ v ∉ binders, σ' v = σ v) → (Holds D I V tail✝ F ↔ Holds D I V' tail✝ (fastReplaceFree σ' F))
V V' : VarAssignment D
σ σ' : VarName → VarName
binders : Finset VarName
F : Formula
h1 : admitsAux σ binders F
h2 : ∀ (v : VarName), v ∈ binders ∨ σ' v ∉ binders → V v = V' (σ' v)
h2' : ∀ v ∈ binders, v = σ' v
h3 : ∀ v ∉ binders, σ' v = σ v
⊢ Holds D I V (head✝ :: tail✝) F ↔ Holds D I V' (head✝ :: tail✝) (fastReplaceFree σ' F)