cases ys
Δ : List Formula
F : Formula
X : PredName
D : Type
I : Interpretation D
V : VarAssignment D
E : Env
a✝ : ∀ H ∈ [], Holds D I V E H
xs_hd : VarName
xs_tl : List VarName
xs_ih :
  ∀ (ys : List VarName),
    xs_tl.length = ys.length →
      Holds D I V E (List.foldr and_ true_ (List.zipWith eq_ xs_tl ys)) → List.map V xs_tl = List.map V ys
ys : List VarName
ih_1 : (xs_hd :: xs_tl).length = ys.length
a1 : Holds D I V E (List.foldr and_ true_ (List.zipWith eq_ (xs_hd :: xs_tl) ys))
⊢ List.map V (xs_hd :: xs_tl) = List.map V ys
case nil
Δ : List Formula
F : Formula
X : PredName
D : Type
I : Interpretation D
V : VarAssignment D
E : Env
a✝ : ∀ H ∈ [], Holds D I V E H
xs_hd : VarName
xs_tl : List VarName
xs_ih :
  ∀ (ys : List VarName),
    xs_tl.length = ys.length →
      Holds D I V E (List.foldr and_ true_ (List.zipWith eq_ xs_tl ys)) → List.map V xs_tl = List.map V ys
ih_1 : (xs_hd :: xs_tl).length = [].length
a1 : Holds D I V E (List.foldr and_ true_ (List.zipWith eq_ (xs_hd :: xs_tl) []))
⊢ List.map V (xs_hd :: xs_tl) = List.map V []

case cons
Δ : List Formula
F : Formula
X : PredName
D : Type
I : Interpretation D
V : VarAssignment D
E : Env
a✝ : ∀ H ∈ [], Holds D I V E H
xs_hd : VarName
xs_tl : List VarName
xs_ih :
  ∀ (ys : List VarName),
    xs_tl.length = ys.length →
      Holds D I V E (List.foldr and_ true_ (List.zipWith eq_ xs_tl ys)) → List.map V xs_tl = List.map V ys
head✝ : VarName
tail✝ : List VarName
ih_1 : (xs_hd :: xs_tl).length = (head✝ :: tail✝).length
a1 : Holds D I V E (List.foldr and_ true_ (List.zipWith eq_ (xs_hd :: xs_tl) (head✝ :: tail✝)))
⊢ List.map V (xs_hd :: xs_tl) = List.map V (head✝ :: tail✝)