{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilyDependencies #-}
{-# LANGUAGE TypeOperators #-}
module Grisette.Internal.Internal.Decl.Unified.UnifiedBool
( UnifiedBool (..),
)
where
import Grisette.Internal.Core.Data.Class.LogicalOp (LogicalOp)
import Grisette.Internal.SymPrim.SymBool (SymBool)
import Grisette.Internal.SymPrim.SymPrim (Prim)
import Grisette.Internal.Unified.BaseConstraint
( ConSymConversion,
)
import Grisette.Internal.Unified.Class.UnifiedRep
( UnifiedConRep (ConType),
UnifiedSymRep (SymType),
)
import Grisette.Internal.Unified.EvalModeTag (EvalModeTag)
class
( Prim (GetBool mode),
UnifiedConRep (GetBool mode),
UnifiedSymRep (GetBool mode),
ConType (GetBool mode) ~ Bool,
SymType (GetBool mode) ~ SymBool,
ConSymConversion Bool SymBool (GetBool mode),
LogicalOp (GetBool mode)
) =>
UnifiedBool (mode :: EvalModeTag)
where
type GetBool mode = bool | bool -> mode