finishConvertHsSigTypeWithExcls
  :: LocalConvMonad r m => UnusedTyVarMode -> [Qualid] -> Term -> [Qualid] -> m Term
finishConvertHsSigTypeWithExcls utvm coq_itvs coq_ty excls =
  let coq_tyVars = case utvm of
        PreserveUnusedTyVars -> coq_itvs
        DeleteUnusedTyVars   -> let fvs = getFreeVars coq_ty
                                in filter (`elem` fvs) coq_itvs
      coq_binders = mkBinder Coq.Implicit . Ident <$> coq_tyVars \\ excls
  in pure $ maybeForall coq_binders coq_ty
finishConvertHsSigTypeWithExcls
  :: LocalConvMonad r m => UnusedTyVarMode -> [Qualid] -> Term -> [Qualid] -> m Term
finishConvertHsSigTypeWithExcls utvm coq_itvs coq_ty excls =
  let coq_tyVars = case utvm of
        PreserveUnusedTyVars -> coq_itvs
        DeleteUnusedTyVars   -> let fvs = getFreeVars coq_ty
                                in filter (`elem` fvs) coq_itvs
      coq_binders = mkBinder Coq.Implicit . Ident <$> coq_tyVars \\ excls
  in pure $ maybeForall coq_binders coq_ty
finishConvertHsSigTypeWithExcls utvm coq_itvs coq_ty excls =
  let coq_tyVars = case utvm of
        PreserveUnusedTyVars -> coq_itvs
        DeleteUnusedTyVars   -> let fvs = getFreeVars coq_ty
                                in filter (`elem` fvs) coq_itvs
      coq_binders = mkBinder Coq.Implicit . Ident <$> coq_tyVars \\ excls
  in pure $ maybeForall coq_binders coq_ty