-- The wc_impl implications are already (recursively) filtered

{-
Note [Dropping derived constraints]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In general we discard derived constraints at the end of constraint solving;
see dropDerivedWC.  For example
 * If we have an unsolved (Ord a), we don't want to complain about
   an unsolved (Eq a) as well.

But we keep Derived *insoluble* constraints because they indicate a solid,
comprehensible error.  Particularly:

 * Insolubles Givens indicate unreachable code

 * Insoluble kind equalities (e.g. [D] * ~ (* -> *)) may arise from
   a type equality a ~ Int#, say

 * Insoluble derived wanted equalities (e.g. [D] Int ~ Bool) may
   arise from functional dependency interactions.  We are careful
   to keep a good CtOrigin on such constraints (FunDepOrigin1, FunDepOrigin2)
   so that we can produce a good error message (Trac #9612)

Since we leave these Derived constraints in the residual WantedConstraints,
we must filter them out when we re-process the WantedConstraint,
in TcSimplify.solve_wanteds.


************************************************************************
*                                                                      *
                    CtEvidence
         The "flavor" of a canonical constraint
*                                                                      *
************************************************************************
-}

isWantedCt :: Ct -> Bool
isWantedCt = isWanted . cc_ev
isWantedCt :: Ct -> Bool
isWantedCt = isWanted . cc_ev
isWantedCt = isWanted . cc_ev