{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE UndecidableInstances #-}
module T14833 where

data Dict c where
  Dict :: c => Dict c

class    (a => b) => Implies a b
instance (a => b) => Implies a b

-- Works ok
iota1 :: (() => a) => Dict a
iota1 = Dict

iota2 :: Implies () a => Dict a
iota2 = Dict

{-
[G] Implies () a
[G] (() => a)      -- By superclass

[W] a
-}
