| C.Meta _ | C.Rel _ | C.Const _ -> false
| C.Var _ -> true
| C.Appl l -> List.exists has_vars l
- | C.Prod (_, s, t) -> (has_vars s) || (has_vars t)
- | _ -> assert false
+ | C.Prod (_, s, t) | C.Lambda (_, s, t)
+ | C.LetIn (_, s, t) | C.Cast (s, t) ->
+ (has_vars s) || (has_vars t)
+ | _ -> false
in
let rec aux newmeta = function
| [] -> [], newmeta