funext v
D : Type
V : VarAssignment D
hd : String
tl : List String
ih : V ∘ Var.openList 0 (List.map free_ tl) = shiftList D V (List.map (V ∘ free_) tl)
⊢ V ∘ Var.openList 0 (List.map free_ (hd :: tl)) = shiftList D V (List.map (V ∘ free_) (hd :: tl))
case h
D : Type
V : VarAssignment D
hd : String
tl : List String
ih : V ∘ Var.openList 0 (List.map free_ tl) = shiftList D V (List.map (V ∘ free_) tl)
v : Var
⊢ (V ∘ Var.openList 0 (List.map free_ (hd :: tl))) v = shiftList D V (List.map (V ∘ free_) (hd :: tl)) v