cases h2
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V V' : VarAssignment D) (F F' : Formula) (binders : List (VarName × VarName)),
    AlphaEqvVarAssignment D binders V V' → isAlphaEqvAux binders F F' → (Holds D I V tail✝ F ↔ Holds D I V' tail✝ F')
X : PredName
xs : List VarName
V V' : VarAssignment D
binders : List (VarName × VarName)
h1 : AlphaEqvVarAssignment D binders V V'
Y : PredName
ys : List VarName
h2 : X = Y ∧ isAlphaEqvVarList binders xs ys
⊢ Holds D I V (head✝ :: tail✝) (pred_var_ X xs) ↔ Holds D I V' (head✝ :: tail✝) (pred_var_ Y ys)
case intro
D : Type
I : Interpretation D
head✝ : Definition
tail✝ : List Definition
tail_ih✝ :
  ∀ (V V' : VarAssignment D) (F F' : Formula) (binders : List (VarName × VarName)),
    AlphaEqvVarAssignment D binders V V' → isAlphaEqvAux binders F F' → (Holds D I V tail✝ F ↔ Holds D I V' tail✝ F')
X : PredName
xs : List VarName
V V' : VarAssignment D
binders : List (VarName × VarName)
h1 : AlphaEqvVarAssignment D binders V V'
Y : PredName
ys : List VarName
left✝ : X = Y
right✝ : isAlphaEqvVarList binders xs ys
⊢ Holds D I V (head✝ :: tail✝) (pred_var_ X xs) ↔ Holds D I V' (head✝ :: tail✝) (pred_var_ Y ys)