{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
module Grisette.Unified.Internal.EvalMode (EvalMode) where
import Data.Typeable (Typeable)
import Grisette.Internal.Core.Data.Class.TryMerge (TryMerge)
import Grisette.Unified.Internal.BVBVConversion (AllUnifiedBVBVConversion)
import Grisette.Unified.Internal.BVFPConversion (AllUnifiedBVFPConversion)
import Grisette.Unified.Internal.BaseMonad (BaseMonad)
import Grisette.Unified.Internal.Class.UnifiedSimpleMergeable (UnifiedBranching)
import Grisette.Unified.Internal.EvalModeTag (EvalModeTag (Con, Sym))
import Grisette.Unified.Internal.FPFPConversion (AllUnifiedFPFPConversion)
import Grisette.Unified.Internal.UnifiedAlgReal (UnifiedAlgReal)
import Grisette.Unified.Internal.UnifiedBV (AllUnifiedBV)
import Grisette.Unified.Internal.UnifiedBool (UnifiedBool (GetBool))
import Grisette.Unified.Internal.UnifiedConstraint (UnifiedPrimitive)
import Grisette.Unified.Internal.UnifiedData (AllUnifiedData)
import Grisette.Unified.Internal.UnifiedFP (AllUnifiedFP)
import Grisette.Unified.Internal.UnifiedInteger (UnifiedInteger)
class
( Typeable mode,
UnifiedBool mode,
UnifiedPrimitive mode (GetBool mode),
UnifiedInteger mode,
UnifiedAlgReal mode,
AllUnifiedBV mode,
AllUnifiedData mode,
AllUnifiedFP mode,
AllUnifiedBVFPConversion mode,
AllUnifiedBVBVConversion mode,
AllUnifiedFPFPConversion mode,
Monad (BaseMonad mode),
TryMerge (BaseMonad mode),
UnifiedBranching mode (BaseMonad mode)
) =>
EvalMode mode
instance EvalMode 'Con
instance EvalMode 'Sym