packages feed

grisette-0.1.0.0: src/Grisette/IR/SymPrim/Data/SymPrim.hs-boot

{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}

module Grisette.IR.SymPrim.Data.SymPrim (Sym (..), SymBool) where

import Control.DeepSeq
import Data.Hashable
import GHC.Generics
import {-# SOURCE #-} Grisette.Core.Data.Class.Bool
import Grisette.Core.Data.Class.Evaluate
import Grisette.Core.Data.Class.ExtractSymbolics
import Grisette.Core.Data.Class.Solvable
import Grisette.IR.SymPrim.Data.Prim.InternedTerm.Term
import Language.Haskell.TH.Syntax

newtype Sym a = Sym {underlyingTerm :: Term a}

type SymBool = Sym Bool

instance NFData (Sym a)

instance Lift (Sym a)

instance (SupportedPrim a) => Solvable a (Sym a)

instance (SupportedPrim a) => Eq (Sym a)

instance (SupportedPrim a) => Hashable (Sym a)

instance (SupportedPrim a) => Show (Sym a)

instance (SupportedPrim a) => EvaluateSym (Sym a)

instance (SupportedPrim a) => ExtractSymbolics (Sym a)