{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MonoLocalBinds #-}
module Grisette.Internal.Unified.UnifiedPrim
( UnifiedPrim,
UnifiedBasicPrim,
)
where
import Grisette.Internal.SymPrim.SymPrim (Prim)
import Grisette.Internal.Unified.BaseConstraint (ConSymConversion)
import Grisette.Internal.Unified.Class.UnifiedITEOp
( UnifiedITEOp,
)
import Grisette.Internal.Unified.Class.UnifiedRep
( UnifiedConRep (ConType),
UnifiedSymRep (SymType),
)
import Grisette.Internal.Unified.Class.UnifiedSimpleMergeable
( UnifiedSimpleMergeable,
)
import Grisette.Internal.Unified.Class.UnifiedSolvable (UnifiedSolvable)
import Grisette.Internal.Unified.Class.UnifiedSymEq (UnifiedSymEq)
import Grisette.Internal.Unified.Class.UnifiedSymOrd (UnifiedSymOrd)
type UnifiedPrim mode a =
( Prim a,
UnifiedITEOp mode a,
UnifiedSymEq mode a,
UnifiedSymOrd mode a
)
type UnifiedBasicPrim mode a =
( UnifiedPrim mode a,
UnifiedSimpleMergeable mode a,
UnifiedConRep a,
UnifiedSymRep a,
UnifiedSolvable mode a (ConType a),
ConSymConversion (ConType a) (SymType a) a
)