grisette-0.8.0.0: Symbolic evaluation as a library
Copyright(c) Sirui Lu 2021-2024
LicenseBSD-3-Clause (see the LICENSE file)
Maintainersiruilu@cs.washington.edu
StabilityExperimental
PortabilityGHC only
Safe HaskellSafe-Inferred
LanguageHaskell2010

Grisette.Internal.SymPrim.Prim.Internal.Term

Description

 
Synopsis

Supported primitive types

class SupportedPrimConstraint t Source #

Type class for resolving the constraint for a supported primitive type.

Associated Types

type PrimConstraint t :: Constraint Source #

type PrimConstraint _ = ()

Instances

Instances details
SupportedPrimConstraint AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type PrimConstraint AlgReal Source #

SupportedPrimConstraint FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type PrimConstraint FPRoundingMode Source #

SupportedPrimConstraint Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type PrimConstraint Integer Source #

SupportedPrimConstraint Bool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type PrimConstraint Bool Source #

(KnownNat w, 1 <= w) => SupportedPrimConstraint (IntN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type PrimConstraint (IntN w) Source #

(KnownNat w, 1 <= w) => SupportedPrimConstraint (WordN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type PrimConstraint (WordN w) Source #

ValidFP eb sb => SupportedPrimConstraint (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type PrimConstraint (FP eb sb) Source #

(SupportedNonFuncPrim a, SupportedPrim b) => SupportedPrimConstraint (a --> b) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Associated Types

type PrimConstraint (a --> b) Source #

(SupportedNonFuncPrim a, SupportedPrim b) => SupportedPrimConstraint (a =-> b) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Associated Types

type PrimConstraint (a =-> b) Source #

class (Lift t, Typeable t, Hashable t, Eq t, Show t, NFData t, SupportedPrimConstraint t, SBVRep t) => SupportedPrim t where Source #

Indicates that a type is supported, can be represented as a symbolic term, and can be lowered to an SBV term.

Methods

termCache :: Cache (Term t) Source #

pformatCon :: t -> String Source #

default pformatCon :: Show t => t -> String Source #

pformatSym :: TypedSymbol 'AnyKind t -> String Source #

defaultValue :: t Source #

defaultValueDynamic :: proxy t -> ModelValue Source #

pevalITETerm :: Term Bool -> Term t -> Term t -> Term t Source #

pevalEqTerm :: Term t -> Term t -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term t) -> Term Bool Source #

conSBVTerm :: t -> SBVType t Source #

symSBVName :: TypedSymbol 'AnyKind t -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType t) Source #

withPrim :: ((PrimConstraint t, SMTDefinable (SBVType t), Mergeable (SBVType t), Typeable (SBVType t)) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType t -> SBVType t -> SBVType t Source #

sbvEq :: SBVType t -> SBVType t -> SBV Bool Source #

default sbvEq :: EqSymbolic (SBVType t) => SBVType t -> SBVType t -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType t) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> t Source #

castTypedSymbol :: IsSymbolKind knd' => TypedSymbol knd t -> Maybe (TypedSymbol knd' t) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType t -> SBV Bool Source #

Instances

Instances details
SupportedPrim AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

SupportedPrim FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Methods

termCache :: Cache (Term FPRoundingMode) Source #

pformatCon :: FPRoundingMode -> String Source #

pformatSym :: TypedSymbol 'AnyKind FPRoundingMode -> String Source #

defaultValue :: FPRoundingMode Source #

defaultValueDynamic :: proxy FPRoundingMode -> ModelValue Source #

pevalITETerm :: Term Bool -> Term FPRoundingMode -> Term FPRoundingMode -> Term FPRoundingMode Source #

pevalEqTerm :: Term FPRoundingMode -> Term FPRoundingMode -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term FPRoundingMode) -> Term Bool Source #

conSBVTerm :: FPRoundingMode -> SBVType FPRoundingMode Source #

symSBVName :: TypedSymbol 'AnyKind FPRoundingMode -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType FPRoundingMode) Source #

withPrim :: ((PrimConstraint FPRoundingMode, SMTDefinable (SBVType FPRoundingMode), Mergeable (SBVType FPRoundingMode), Typeable (SBVType FPRoundingMode)) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType FPRoundingMode -> SBVType FPRoundingMode -> SBVType FPRoundingMode Source #

sbvEq :: SBVType FPRoundingMode -> SBVType FPRoundingMode -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType FPRoundingMode) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> FPRoundingMode Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd FPRoundingMode -> Maybe (TypedSymbol knd' FPRoundingMode) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType FPRoundingMode -> SBV Bool Source #

SupportedPrim Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

SupportedPrim Bool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

(KnownNat w, 1 <= w) => SupportedPrim (IntN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

(KnownNat w, 1 <= w) => SupportedPrim (WordN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

ValidFP eb sb => SupportedPrim (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Methods

termCache :: Cache (Term (FP eb sb)) Source #

pformatCon :: FP eb sb -> String Source #

pformatSym :: TypedSymbol 'AnyKind (FP eb sb) -> String Source #

defaultValue :: FP eb sb Source #

defaultValueDynamic :: proxy (FP eb sb) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (FP eb sb) -> Term (FP eb sb) -> Term (FP eb sb) Source #

pevalEqTerm :: Term (FP eb sb) -> Term (FP eb sb) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (FP eb sb)) -> Term Bool Source #

conSBVTerm :: FP eb sb -> SBVType (FP eb sb) Source #

symSBVName :: TypedSymbol 'AnyKind (FP eb sb) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (FP eb sb)) Source #

withPrim :: ((PrimConstraint (FP eb sb), SMTDefinable (SBVType (FP eb sb)), Mergeable (SBVType (FP eb sb)), Typeable (SBVType (FP eb sb))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (FP eb sb) -> SBVType (FP eb sb) -> SBVType (FP eb sb) Source #

sbvEq :: SBVType (FP eb sb) -> SBVType (FP eb sb) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (FP eb sb)) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> FP eb sb Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (FP eb sb) -> Maybe (TypedSymbol knd' (FP eb sb)) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (FP eb sb) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4, SupportedNonFuncPrim a5, SupportedNonFuncPrim a6, SupportedNonFuncPrim a7) => SupportedPrim (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

termCache :: Cache (Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))))) Source #

pformatCon :: (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> String Source #

defaultValue :: a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))) Source #

defaultValueDynamic :: proxy (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) Source #

pevalEqTerm :: Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))))) -> Term Bool Source #

conSBVTerm :: (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))))) Source #

withPrim :: ((PrimConstraint (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))), SMTDefinable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))))), Mergeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))))), Typeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) Source #

sbvEq :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> Maybe (TypedSymbol knd' (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7)))))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> (a6 --> a7))))))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4, SupportedNonFuncPrim a5, SupportedNonFuncPrim a6) => SupportedPrim (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

termCache :: Cache (Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))))) Source #

pformatCon :: (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> String Source #

defaultValue :: a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))) Source #

defaultValueDynamic :: proxy (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) Source #

pevalEqTerm :: Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))))) -> Term Bool Source #

conSBVTerm :: (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))))) Source #

withPrim :: ((PrimConstraint (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))), SMTDefinable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))))), Mergeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))))), Typeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) Source #

sbvEq :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> Maybe (TypedSymbol knd' (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6))))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> (a5 --> a6)))))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4, SupportedNonFuncPrim a5) => SupportedPrim (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

termCache :: Cache (Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))))) Source #

pformatCon :: (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> String Source #

defaultValue :: a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))) Source #

defaultValueDynamic :: proxy (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) Source #

pevalEqTerm :: Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))))) -> Term Bool Source #

conSBVTerm :: (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))))) Source #

withPrim :: ((PrimConstraint (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))), SMTDefinable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))))), Mergeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))))), Typeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) Source #

sbvEq :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> Maybe (TypedSymbol knd' (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5)))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> (a4 --> a5))))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4) => SupportedPrim (a0 --> (a1 --> (a2 --> (a3 --> a4)))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

termCache :: Cache (Term (a0 --> (a1 --> (a2 --> (a3 --> a4))))) Source #

pformatCon :: (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> String Source #

defaultValue :: a0 --> (a1 --> (a2 --> (a3 --> a4))) Source #

defaultValueDynamic :: proxy (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> a4)))) Source #

pevalEqTerm :: Term (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> Term (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 --> (a1 --> (a2 --> (a3 --> a4))))) -> Term Bool Source #

conSBVTerm :: (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4))))) Source #

withPrim :: ((PrimConstraint (a0 --> (a1 --> (a2 --> (a3 --> a4)))), SMTDefinable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4))))), Mergeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4))))), Typeable (SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))) Source #

sbvEq :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 --> (a1 --> (a2 --> (a3 --> a4))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> Maybe (TypedSymbol knd' (a0 --> (a1 --> (a2 --> (a3 --> a4))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 --> (a1 --> (a2 --> (a3 --> a4)))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3) => SupportedPrim (a0 --> (a1 --> (a2 --> a3))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

termCache :: Cache (Term (a0 --> (a1 --> (a2 --> a3)))) Source #

pformatCon :: (a0 --> (a1 --> (a2 --> a3))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> a3))) -> String Source #

defaultValue :: a0 --> (a1 --> (a2 --> a3)) Source #

defaultValueDynamic :: proxy (a0 --> (a1 --> (a2 --> a3))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 --> (a1 --> (a2 --> a3))) -> Term (a0 --> (a1 --> (a2 --> a3))) -> Term (a0 --> (a1 --> (a2 --> a3))) Source #

pevalEqTerm :: Term (a0 --> (a1 --> (a2 --> a3))) -> Term (a0 --> (a1 --> (a2 --> a3))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 --> (a1 --> (a2 --> a3)))) -> Term Bool Source #

conSBVTerm :: (a0 --> (a1 --> (a2 --> a3))) -> SBVType (a0 --> (a1 --> (a2 --> a3))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 --> (a1 --> (a2 --> a3))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 --> (a1 --> (a2 --> a3)))) Source #

withPrim :: ((PrimConstraint (a0 --> (a1 --> (a2 --> a3))), SMTDefinable (SBVType (a0 --> (a1 --> (a2 --> a3)))), Mergeable (SBVType (a0 --> (a1 --> (a2 --> a3)))), Typeable (SBVType (a0 --> (a1 --> (a2 --> a3))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 --> (a1 --> (a2 --> a3))) -> SBVType (a0 --> (a1 --> (a2 --> a3))) -> SBVType (a0 --> (a1 --> (a2 --> a3))) Source #

sbvEq :: SBVType (a0 --> (a1 --> (a2 --> a3))) -> SBVType (a0 --> (a1 --> (a2 --> a3))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 --> (a1 --> (a2 --> a3)))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 --> (a1 --> (a2 --> a3)) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 --> (a1 --> (a2 --> a3))) -> Maybe (TypedSymbol knd' (a0 --> (a1 --> (a2 --> a3)))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 --> (a1 --> (a2 --> a3))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2) => SupportedPrim (a0 --> (a1 --> a2)) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

termCache :: Cache (Term (a0 --> (a1 --> a2))) Source #

pformatCon :: (a0 --> (a1 --> a2)) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 --> (a1 --> a2)) -> String Source #

defaultValue :: a0 --> (a1 --> a2) Source #

defaultValueDynamic :: proxy (a0 --> (a1 --> a2)) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 --> (a1 --> a2)) -> Term (a0 --> (a1 --> a2)) -> Term (a0 --> (a1 --> a2)) Source #

pevalEqTerm :: Term (a0 --> (a1 --> a2)) -> Term (a0 --> (a1 --> a2)) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 --> (a1 --> a2))) -> Term Bool Source #

conSBVTerm :: (a0 --> (a1 --> a2)) -> SBVType (a0 --> (a1 --> a2)) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 --> (a1 --> a2)) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 --> (a1 --> a2))) Source #

withPrim :: ((PrimConstraint (a0 --> (a1 --> a2)), SMTDefinable (SBVType (a0 --> (a1 --> a2))), Mergeable (SBVType (a0 --> (a1 --> a2))), Typeable (SBVType (a0 --> (a1 --> a2)))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 --> (a1 --> a2)) -> SBVType (a0 --> (a1 --> a2)) -> SBVType (a0 --> (a1 --> a2)) Source #

sbvEq :: SBVType (a0 --> (a1 --> a2)) -> SBVType (a0 --> (a1 --> a2)) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 --> (a1 --> a2))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 --> (a1 --> a2) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 --> (a1 --> a2)) -> Maybe (TypedSymbol knd' (a0 --> (a1 --> a2))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 --> (a1 --> a2)) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1) => SupportedPrim (a0 --> a1) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

termCache :: Cache (Term (a0 --> a1)) Source #

pformatCon :: (a0 --> a1) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 --> a1) -> String Source #

defaultValue :: a0 --> a1 Source #

defaultValueDynamic :: proxy (a0 --> a1) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 --> a1) -> Term (a0 --> a1) -> Term (a0 --> a1) Source #

pevalEqTerm :: Term (a0 --> a1) -> Term (a0 --> a1) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 --> a1)) -> Term Bool Source #

conSBVTerm :: (a0 --> a1) -> SBVType (a0 --> a1) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 --> a1) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 --> a1)) Source #

withPrim :: ((PrimConstraint (a0 --> a1), SMTDefinable (SBVType (a0 --> a1)), Mergeable (SBVType (a0 --> a1)), Typeable (SBVType (a0 --> a1))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 --> a1) -> SBVType (a0 --> a1) -> SBVType (a0 --> a1) Source #

sbvEq :: SBVType (a0 --> a1) -> SBVType (a0 --> a1) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 --> a1)) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 --> a1 Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 --> a1) -> Maybe (TypedSymbol knd' (a0 --> a1)) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 --> a1) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4, SupportedNonFuncPrim a5, SupportedNonFuncPrim a6, SupportedNonFuncPrim a7) => SupportedPrim (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

termCache :: Cache (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))))) Source #

pformatCon :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> String Source #

defaultValue :: a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))) Source #

defaultValueDynamic :: proxy (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) Source #

pevalEqTerm :: Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))))) -> Term Bool Source #

conSBVTerm :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))))) Source #

withPrim :: ((PrimConstraint (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))), SMTDefinable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))))), Mergeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))))), Typeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) Source #

sbvEq :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> Maybe (TypedSymbol knd' (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7)))))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> (a6 =-> a7))))))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4, SupportedNonFuncPrim a5, SupportedNonFuncPrim a6) => SupportedPrim (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

termCache :: Cache (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))))) Source #

pformatCon :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> String Source #

defaultValue :: a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))) Source #

defaultValueDynamic :: proxy (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) Source #

pevalEqTerm :: Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))))) -> Term Bool Source #

conSBVTerm :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))))) Source #

withPrim :: ((PrimConstraint (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))), SMTDefinable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))))), Mergeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))))), Typeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) Source #

sbvEq :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> Maybe (TypedSymbol knd' (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6))))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> (a5 =-> a6)))))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4, SupportedNonFuncPrim a5) => SupportedPrim (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

termCache :: Cache (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))))) Source #

pformatCon :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> String Source #

defaultValue :: a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))) Source #

defaultValueDynamic :: proxy (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) Source #

pevalEqTerm :: Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))))) -> Term Bool Source #

conSBVTerm :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))))) Source #

withPrim :: ((PrimConstraint (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))), SMTDefinable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))))), Mergeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))))), Typeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) Source #

sbvEq :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> Maybe (TypedSymbol knd' (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5)))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> (a4 =-> a5))))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3, SupportedNonFuncPrim a4) => SupportedPrim (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

termCache :: Cache (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))))) Source #

pformatCon :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> String Source #

defaultValue :: a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))) Source #

defaultValueDynamic :: proxy (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) Source #

pevalEqTerm :: Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))))) -> Term Bool Source #

conSBVTerm :: (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))))) Source #

withPrim :: ((PrimConstraint (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))), SMTDefinable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))))), Mergeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))))), Typeable (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) Source #

sbvEq :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> Maybe (TypedSymbol knd' (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4))))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 =-> (a1 =-> (a2 =-> (a3 =-> a4)))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2, SupportedNonFuncPrim a3) => SupportedPrim (a0 =-> (a1 =-> (a2 =-> a3))) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

termCache :: Cache (Term (a0 =-> (a1 =-> (a2 =-> a3)))) Source #

pformatCon :: (a0 =-> (a1 =-> (a2 =-> a3))) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> a3))) -> String Source #

defaultValue :: a0 =-> (a1 =-> (a2 =-> a3)) Source #

defaultValueDynamic :: proxy (a0 =-> (a1 =-> (a2 =-> a3))) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 =-> (a1 =-> (a2 =-> a3))) -> Term (a0 =-> (a1 =-> (a2 =-> a3))) -> Term (a0 =-> (a1 =-> (a2 =-> a3))) Source #

pevalEqTerm :: Term (a0 =-> (a1 =-> (a2 =-> a3))) -> Term (a0 =-> (a1 =-> (a2 =-> a3))) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 =-> (a1 =-> (a2 =-> a3)))) -> Term Bool Source #

conSBVTerm :: (a0 =-> (a1 =-> (a2 =-> a3))) -> SBVType (a0 =-> (a1 =-> (a2 =-> a3))) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> (a2 =-> a3))) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 =-> (a1 =-> (a2 =-> a3)))) Source #

withPrim :: ((PrimConstraint (a0 =-> (a1 =-> (a2 =-> a3))), SMTDefinable (SBVType (a0 =-> (a1 =-> (a2 =-> a3)))), Mergeable (SBVType (a0 =-> (a1 =-> (a2 =-> a3)))), Typeable (SBVType (a0 =-> (a1 =-> (a2 =-> a3))))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 =-> (a1 =-> (a2 =-> a3))) -> SBVType (a0 =-> (a1 =-> (a2 =-> a3))) -> SBVType (a0 =-> (a1 =-> (a2 =-> a3))) Source #

sbvEq :: SBVType (a0 =-> (a1 =-> (a2 =-> a3))) -> SBVType (a0 =-> (a1 =-> (a2 =-> a3))) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 =-> (a1 =-> (a2 =-> a3)))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 =-> (a1 =-> (a2 =-> a3)) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 =-> (a1 =-> (a2 =-> a3))) -> Maybe (TypedSymbol knd' (a0 =-> (a1 =-> (a2 =-> a3)))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 =-> (a1 =-> (a2 =-> a3))) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1, SupportedNonFuncPrim a2) => SupportedPrim (a0 =-> (a1 =-> a2)) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

termCache :: Cache (Term (a0 =-> (a1 =-> a2))) Source #

pformatCon :: (a0 =-> (a1 =-> a2)) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> a2)) -> String Source #

defaultValue :: a0 =-> (a1 =-> a2) Source #

defaultValueDynamic :: proxy (a0 =-> (a1 =-> a2)) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 =-> (a1 =-> a2)) -> Term (a0 =-> (a1 =-> a2)) -> Term (a0 =-> (a1 =-> a2)) Source #

pevalEqTerm :: Term (a0 =-> (a1 =-> a2)) -> Term (a0 =-> (a1 =-> a2)) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 =-> (a1 =-> a2))) -> Term Bool Source #

conSBVTerm :: (a0 =-> (a1 =-> a2)) -> SBVType (a0 =-> (a1 =-> a2)) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 =-> (a1 =-> a2)) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 =-> (a1 =-> a2))) Source #

withPrim :: ((PrimConstraint (a0 =-> (a1 =-> a2)), SMTDefinable (SBVType (a0 =-> (a1 =-> a2))), Mergeable (SBVType (a0 =-> (a1 =-> a2))), Typeable (SBVType (a0 =-> (a1 =-> a2)))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 =-> (a1 =-> a2)) -> SBVType (a0 =-> (a1 =-> a2)) -> SBVType (a0 =-> (a1 =-> a2)) Source #

sbvEq :: SBVType (a0 =-> (a1 =-> a2)) -> SBVType (a0 =-> (a1 =-> a2)) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 =-> (a1 =-> a2))) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 =-> (a1 =-> a2) Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 =-> (a1 =-> a2)) -> Maybe (TypedSymbol knd' (a0 =-> (a1 =-> a2))) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 =-> (a1 =-> a2)) -> SBV Bool Source #

(SupportedNonFuncPrim a0, SupportedNonFuncPrim a1) => SupportedPrim (a0 =-> a1) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

termCache :: Cache (Term (a0 =-> a1)) Source #

pformatCon :: (a0 =-> a1) -> String Source #

pformatSym :: TypedSymbol 'AnyKind (a0 =-> a1) -> String Source #

defaultValue :: a0 =-> a1 Source #

defaultValueDynamic :: proxy (a0 =-> a1) -> ModelValue Source #

pevalITETerm :: Term Bool -> Term (a0 =-> a1) -> Term (a0 =-> a1) -> Term (a0 =-> a1) Source #

pevalEqTerm :: Term (a0 =-> a1) -> Term (a0 =-> a1) -> Term Bool Source #

pevalDistinctTerm :: NonEmpty (Term (a0 =-> a1)) -> Term Bool Source #

conSBVTerm :: (a0 =-> a1) -> SBVType (a0 =-> a1) Source #

symSBVName :: TypedSymbol 'AnyKind (a0 =-> a1) -> Int -> String Source #

symSBVTerm :: SBVFreshMonad m => String -> m (SBVType (a0 =-> a1)) Source #

withPrim :: ((PrimConstraint (a0 =-> a1), SMTDefinable (SBVType (a0 =-> a1)), Mergeable (SBVType (a0 =-> a1)), Typeable (SBVType (a0 =-> a1))) => a) -> a Source #

sbvIte :: SBV Bool -> SBVType (a0 =-> a1) -> SBVType (a0 =-> a1) -> SBVType (a0 =-> a1) Source #

sbvEq :: SBVType (a0 =-> a1) -> SBVType (a0 =-> a1) -> SBV Bool Source #

sbvDistinct :: NonEmpty (SBVType (a0 =-> a1)) -> SBV Bool Source #

parseSMTModelResult :: Int -> ([([CV], CV)], CV) -> a0 =-> a1 Source #

castTypedSymbol :: forall (knd' :: SymbolKind) (knd :: SymbolKind). IsSymbolKind knd' => TypedSymbol knd (a0 =-> a1) -> Maybe (TypedSymbol knd' (a0 =-> a1)) Source #

isFuncType :: Bool Source #

funcDummyConstraint :: SBVType (a0 =-> a1) -> SBV Bool Source #

class SupportedPrim con => SymRep con Source #

Type family to resolve the symbolic type associated with a concrete type.

Associated Types

type SymType con Source #

Instances

Instances details
SymRep AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymAlgReal

Associated Types

type SymType AlgReal Source #

SymRep FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymFP

Associated Types

type SymType FPRoundingMode Source #

SymRep Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymInteger

Associated Types

type SymType Integer Source #

SymRep Bool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBool

Associated Types

type SymType Bool Source #

(KnownNat n, 1 <= n) => SymRep (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBV

Associated Types

type SymType (IntN n) Source #

(KnownNat n, 1 <= n) => SymRep (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBV

Associated Types

type SymType (WordN n) Source #

ValidFP eb sb => SymRep (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymFP

Associated Types

type SymType (FP eb sb) Source #

(SymRep ca, SymRep cb, SupportedPrim (ca --> cb)) => SymRep (ca --> cb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymGeneralFun

Associated Types

type SymType (ca --> cb) Source #

(SymRep a, SymRep b, SupportedPrim (a =-> b)) => SymRep (a =-> b) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymTabularFun

Associated Types

type SymType (a =-> b) Source #

class ConRep sym Source #

Type family to resolve the concrete type associated with a symbolic type.

Associated Types

type ConType sym Source #

Instances

Instances details
ConRep SymAlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymAlgReal

Associated Types

type ConType SymAlgReal Source #

ConRep SymBool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBool

Associated Types

type ConType SymBool Source #

ConRep SymFPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymFP

Associated Types

type ConType SymFPRoundingMode Source #

ConRep SymInteger Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymInteger

Associated Types

type ConType SymInteger Source #

(KnownNat n, 1 <= n) => ConRep (SymIntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBV

Associated Types

type ConType (SymIntN n) Source #

(KnownNat n, 1 <= n) => ConRep (SymWordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBV

Associated Types

type ConType (SymWordN n) Source #

ConRep (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymFP

Associated Types

type ConType (SymFP eb sb) Source #

(ConRep a, ConRep b) => ConRep (a -~> b) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymGeneralFun

Associated Types

type ConType (a -~> b) Source #

(ConRep a, ConRep b) => ConRep (a =~> b) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymTabularFun

Associated Types

type ConType (a =~> b) Source #

class (ConRep sym, SymRep con, sym ~ SymType con, con ~ ConType sym) => LinkedRep con sym | con -> sym, sym -> con where Source #

One-to-one mapping between symbolic types and concrete types.

Methods

underlyingTerm :: sym -> Term con Source #

wrapTerm :: Term con -> sym Source #

Instances

Instances details
LinkedRep AlgReal SymAlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymAlgReal

LinkedRep FPRoundingMode SymFPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymFP

LinkedRep Integer SymInteger Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymInteger

LinkedRep Bool SymBool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBool

(KnownNat n, 1 <= n) => LinkedRep (IntN n) (SymIntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBV

(KnownNat n, 1 <= n) => LinkedRep (WordN n) (SymWordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymBV

ValidFP eb sb => LinkedRep (FP eb sb) (SymFP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymFP

Methods

underlyingTerm :: SymFP eb sb -> Term (FP eb sb) Source #

wrapTerm :: Term (FP eb sb) -> SymFP eb sb Source #

(LinkedRep ca sa, LinkedRep cb sb, SupportedPrim ca, SupportedPrim cb, SupportedPrim (ca --> cb)) => LinkedRep (ca --> cb) (sa -~> sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymGeneralFun

Methods

underlyingTerm :: (sa -~> sb) -> Term (ca --> cb) Source #

wrapTerm :: Term (ca --> cb) -> sa -~> sb Source #

(LinkedRep ca sa, LinkedRep cb sb, SupportedPrim (ca =-> cb)) => LinkedRep (ca =-> cb) (sa =~> sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.SymTabularFun

Methods

underlyingTerm :: (sa =~> sb) -> Term (ca =-> cb) Source #

wrapTerm :: Term (ca =-> cb) -> sa =~> sb Source #

Partial evaluation for the terms

class (SupportedPrim arg, SupportedPrim t, Lift tag, NFData tag, Show tag, Typeable tag, Eq tag, Hashable tag) => UnaryOp tag arg t | tag arg -> t where Source #

Custom unary operator. Not used by Grisette at this time and do not use it.

Methods

pevalUnary :: (Typeable tag, Typeable t) => tag -> Term arg -> Term t Source #

pformatUnary :: tag -> Term arg -> String Source #

class (SupportedPrim arg1, SupportedPrim arg2, SupportedPrim t, Lift tag, NFData tag, Show tag, Typeable tag, Eq tag, Hashable tag) => BinaryOp tag arg1 arg2 t | tag arg1 arg2 -> t where Source #

Custom binary operator. Not used by Grisette at this time and do not use it.

Methods

pevalBinary :: (Typeable tag, Typeable t) => tag -> Term arg1 -> Term arg2 -> Term t Source #

pformatBinary :: tag -> Term arg1 -> Term arg2 -> String Source #

class (SupportedPrim arg1, SupportedPrim arg2, SupportedPrim arg3, SupportedPrim t, Lift tag, NFData tag, Show tag, Typeable tag, Eq tag, Hashable tag) => TernaryOp tag arg1 arg2 arg3 t | tag arg1 arg2 arg3 -> t where Source #

Custom ternary operator. Not used by Grisette at this time and do not use it.

Methods

pevalTernary :: (Typeable tag, Typeable t) => tag -> Term arg1 -> Term arg2 -> Term arg3 -> Term t Source #

pformatTernary :: tag -> Term arg1 -> Term arg2 -> Term arg3 -> String Source #

class (SupportedPrim f, SupportedPrim a, SupportedPrim b) => PEvalApplyTerm f a b | f -> a b where Source #

Partial evaluation and lowering for function application terms.

Instances

Instances details
(SupportedPrim (a --> b), SupportedNonFuncPrim a, SupportedPrim b) => PEvalApplyTerm (a --> b) a b Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Methods

pevalApplyTerm :: Term (a --> b) -> Term a -> Term b Source #

sbvApplyTerm :: SBVType (a --> b) -> SBVType a -> SBVType b Source #

(SupportedPrim a, SupportedPrim b, SupportedPrim (a =-> b)) => PEvalApplyTerm (a =-> b) a b Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Methods

pevalApplyTerm :: Term (a =-> b) -> Term a -> Term b Source #

sbvApplyTerm :: SBVType (a =-> b) -> SBVType a -> SBVType b Source #

class (SupportedNonFuncPrim t, Bits t) => PEvalBitwiseTerm t where Source #

Partial evaluation and lowering for bitwise operation terms.

Instances

Instances details
(KnownNat n, 1 <= n) => PEvalBitwiseTerm (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitwiseTerm

(KnownNat n, 1 <= n) => PEvalBitwiseTerm (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitwiseTerm

class (SupportedNonFuncPrim t, SymShift t) => PEvalShiftTerm t where Source #

Partial evaluation and lowering for symbolic shifting terms.

class (SupportedNonFuncPrim t, SymRotate t) => PEvalRotateTerm t where Source #

Partial evaluation and lowering for symbolic rotate terms.

class (SupportedNonFuncPrim t, Num t) => PEvalNumTerm t where Source #

Partial evaluation and lowering for number terms.

Instances

Instances details
PEvalNumTerm AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalNumTerm

PEvalNumTerm Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalNumTerm

(KnownNat n, 1 <= n) => PEvalNumTerm (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalNumTerm

(KnownNat n, 1 <= n) => PEvalNumTerm (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalNumTerm

ValidFP eb sb => PEvalNumTerm (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalNumTerm

Methods

pevalAddNumTerm :: Term (FP eb sb) -> Term (FP eb sb) -> Term (FP eb sb) Source #

pevalNegNumTerm :: Term (FP eb sb) -> Term (FP eb sb) Source #

pevalMulNumTerm :: Term (FP eb sb) -> Term (FP eb sb) -> Term (FP eb sb) Source #

pevalAbsNumTerm :: Term (FP eb sb) -> Term (FP eb sb) Source #

pevalSignumNumTerm :: Term (FP eb sb) -> Term (FP eb sb) Source #

withSbvNumTermConstraint :: (Num (SBVType (FP eb sb)) => r) -> r Source #

sbvAddNumTerm :: SBVType (FP eb sb) -> SBVType (FP eb sb) -> SBVType (FP eb sb) Source #

sbvNegNumTerm :: SBVType (FP eb sb) -> SBVType (FP eb sb) Source #

sbvMulNumTerm :: SBVType (FP eb sb) -> SBVType (FP eb sb) -> SBVType (FP eb sb) Source #

sbvAbsNumTerm :: SBVType (FP eb sb) -> SBVType (FP eb sb) Source #

sbvSignumNumTerm :: SBVType (FP eb sb) -> SBVType (FP eb sb) Source #

pevalSubNumTerm :: PEvalNumTerm a => Term a -> Term a -> Term a Source #

Partial evaluation for subtraction terms.

class (SupportedNonFuncPrim t, Ord t) => PEvalOrdTerm t where Source #

Partial evaluation and lowering for comparison terms.

Instances

Instances details
PEvalOrdTerm AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalOrdTerm

PEvalOrdTerm FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalOrdTerm

PEvalOrdTerm Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalOrdTerm

(KnownNat n, 1 <= n) => PEvalOrdTerm (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalOrdTerm

(KnownNat n, 1 <= n) => PEvalOrdTerm (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalOrdTerm

ValidFP eb sb => PEvalOrdTerm (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalOrdTerm

Methods

pevalLtOrdTerm :: Term (FP eb sb) -> Term (FP eb sb) -> Term Bool Source #

pevalLeOrdTerm :: Term (FP eb sb) -> Term (FP eb sb) -> Term Bool Source #

withSbvOrdTermConstraint :: (OrdSymbolic (SBVType (FP eb sb)) => r) -> r Source #

sbvLtOrdTerm :: SBVType (FP eb sb) -> SBVType (FP eb sb) -> SBV Bool Source #

sbvLeOrdTerm :: SBVType (FP eb sb) -> SBVType (FP eb sb) -> SBV Bool Source #

pevalGtOrdTerm :: PEvalOrdTerm a => Term a -> Term a -> Term Bool Source #

Partial evaluation for greater than terms.

pevalGeOrdTerm :: PEvalOrdTerm a => Term a -> Term a -> Term Bool Source #

Partial evaluation for greater than or equal to terms.

pevalNEqTerm :: SupportedPrim a => Term a -> Term a -> Term Bool Source #

Partial evaluation for inequality terms.

class (SupportedNonFuncPrim t, Integral t) => PEvalDivModIntegralTerm t where Source #

Partial evaluation and lowering for integer division and modulo terms.

Instances

Instances details
PEvalDivModIntegralTerm Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalDivModIntegralTerm

(KnownNat n, 1 <= n) => PEvalDivModIntegralTerm (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalDivModIntegralTerm

(KnownNat n, 1 <= n) => PEvalDivModIntegralTerm (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalDivModIntegralTerm

class (SupportedNonFuncPrim a, SupportedNonFuncPrim b, BitCast a b) => PEvalBitCastTerm a b where Source #

Partial evaluation and lowering for bitcast terms.

Instances

Instances details
PEvalBitCastTerm Bool (IntN 1) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

PEvalBitCastTerm Bool (WordN 1) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

PEvalBitCastTerm (IntN 1) Bool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

PEvalBitCastTerm (WordN 1) Bool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

(KnownNat n, 1 <= n) => PEvalBitCastTerm (IntN n) (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.BVPEval

(KnownNat n, 1 <= n) => PEvalBitCastTerm (WordN n) (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.BVPEval

(n ~ (eb + sb), ValidFP eb sb, KnownNat n, 1 <= n) => PEvalBitCastTerm (IntN n) (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

Methods

pevalBitCastTerm :: Term (IntN n) -> Term (FP eb sb) Source #

sbvBitCast :: SBVType (IntN n) -> SBVType (FP eb sb) Source #

(n ~ (eb + sb), ValidFP eb sb, KnownNat n, 1 <= n) => PEvalBitCastTerm (WordN n) (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

Methods

pevalBitCastTerm :: Term (WordN n) -> Term (FP eb sb) Source #

sbvBitCast :: SBVType (WordN n) -> SBVType (FP eb sb) Source #

class (SupportedNonFuncPrim a, SupportedNonFuncPrim b, BitCastOr a b) => PEvalBitCastOrTerm a b where Source #

Partial evaluation and lowering for bitcast or default value terms.

Instances

Instances details
(n ~ (eb + sb), ValidFP eb sb, KnownNat n, 1 <= n) => PEvalBitCastOrTerm (FP eb sb) (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

Methods

pevalBitCastOrTerm :: Term (IntN n) -> Term (FP eb sb) -> Term (IntN n) Source #

sbvBitCastOr :: SBVType (IntN n) -> SBVType (FP eb sb) -> SBVType (IntN n) Source #

(n ~ (eb + sb), ValidFP eb sb, KnownNat n, 1 <= n) => PEvalBitCastOrTerm (FP eb sb) (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalBitCastTerm

Methods

pevalBitCastOrTerm :: Term (WordN n) -> Term (FP eb sb) -> Term (WordN n) Source #

sbvBitCastOr :: SBVType (WordN n) -> SBVType (FP eb sb) -> SBVType (WordN n) Source #

class (forall n. (KnownNat n, 1 <= n) => SupportedNonFuncPrim (bv n), SizedBV bv, Typeable bv) => PEvalBVTerm bv where Source #

Partial evaluation and lowering for bit-vector terms.

Methods

pevalBVConcatTerm :: (KnownNat l, KnownNat r, 1 <= l, 1 <= r) => Term (bv l) -> Term (bv r) -> Term (bv (l + r)) Source #

pevalBVExtendTerm :: (KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => Bool -> proxy r -> Term (bv l) -> Term (bv r) Source #

pevalBVSelectTerm :: (KnownNat n, KnownNat ix, KnownNat w, 1 <= n, 1 <= w, (ix + w) <= n) => p ix -> q w -> Term (bv n) -> Term (bv w) Source #

sbvBVConcatTerm :: (KnownNat l, KnownNat r, 1 <= l, 1 <= r) => p1 l -> p2 r -> SBVType (bv l) -> SBVType (bv r) -> SBVType (bv (l + r)) Source #

sbvBVExtendTerm :: (KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => p1 l -> p2 r -> Bool -> SBVType (bv l) -> SBVType (bv r) Source #

sbvBVSelectTerm :: (KnownNat ix, KnownNat w, KnownNat n, 1 <= n, 1 <= w, (ix + w) <= n) => p1 ix -> p2 w -> p3 n -> SBVType (bv n) -> SBVType (bv w) Source #

Instances

Instances details
PEvalBVTerm IntN Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.BVPEval

Methods

pevalBVConcatTerm :: forall (l :: Nat) (r :: Nat). (KnownNat l, KnownNat r, 1 <= l, 1 <= r) => Term (IntN l) -> Term (IntN r) -> Term (IntN (l + r)) Source #

pevalBVExtendTerm :: forall (l :: Nat) (r :: Nat) proxy. (KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => Bool -> proxy r -> Term (IntN l) -> Term (IntN r) Source #

pevalBVSelectTerm :: forall (n :: Nat) (ix :: Nat) (w :: Nat) p q. (KnownNat n, KnownNat ix, KnownNat w, 1 <= n, 1 <= w, (ix + w) <= n) => p ix -> q w -> Term (IntN n) -> Term (IntN w) Source #

sbvBVConcatTerm :: forall (l :: Nat) (r :: Nat) p1 p2. (KnownNat l, KnownNat r, 1 <= l, 1 <= r) => p1 l -> p2 r -> SBVType (IntN l) -> SBVType (IntN r) -> SBVType (IntN (l + r)) Source #

sbvBVExtendTerm :: forall (l :: Nat) (r :: Nat) p1 p2. (KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => p1 l -> p2 r -> Bool -> SBVType (IntN l) -> SBVType (IntN r) Source #

sbvBVSelectTerm :: forall (ix :: Nat) (w :: Nat) (n :: Nat) p1 p2 p3. (KnownNat ix, KnownNat w, KnownNat n, 1 <= n, 1 <= w, (ix + w) <= n) => p1 ix -> p2 w -> p3 n -> SBVType (IntN n) -> SBVType (IntN w) Source #

PEvalBVTerm WordN Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.BVPEval

Methods

pevalBVConcatTerm :: forall (l :: Nat) (r :: Nat). (KnownNat l, KnownNat r, 1 <= l, 1 <= r) => Term (WordN l) -> Term (WordN r) -> Term (WordN (l + r)) Source #

pevalBVExtendTerm :: forall (l :: Nat) (r :: Nat) proxy. (KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => Bool -> proxy r -> Term (WordN l) -> Term (WordN r) Source #

pevalBVSelectTerm :: forall (n :: Nat) (ix :: Nat) (w :: Nat) p q. (KnownNat n, KnownNat ix, KnownNat w, 1 <= n, 1 <= w, (ix + w) <= n) => p ix -> q w -> Term (WordN n) -> Term (WordN w) Source #

sbvBVConcatTerm :: forall (l :: Nat) (r :: Nat) p1 p2. (KnownNat l, KnownNat r, 1 <= l, 1 <= r) => p1 l -> p2 r -> SBVType (WordN l) -> SBVType (WordN r) -> SBVType (WordN (l + r)) Source #

sbvBVExtendTerm :: forall (l :: Nat) (r :: Nat) p1 p2. (KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => p1 l -> p2 r -> Bool -> SBVType (WordN l) -> SBVType (WordN r) Source #

sbvBVSelectTerm :: forall (ix :: Nat) (w :: Nat) (n :: Nat) p1 p2 p3. (KnownNat ix, KnownNat w, KnownNat n, 1 <= n, 1 <= w, (ix + w) <= n) => p1 ix -> p2 w -> p3 n -> SBVType (WordN n) -> SBVType (WordN w) Source #

class (SupportedNonFuncPrim t, Fractional t) => PEvalFractionalTerm t where Source #

Partial evaluation and lowering for fractional terms.

class SupportedNonFuncPrim t => PEvalFloatingTerm t where Source #

Partial evaluation and lowering for floating point terms.

class (SupportedNonFuncPrim a, SupportedNonFuncPrim b, Integral a, Num b) => PEvalFromIntegralTerm a b where Source #

Partial evaluation and lowering for integral terms.

Instances

Instances details
PEvalFromIntegralTerm Integer AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n) => PEvalFromIntegralTerm Integer (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n) => PEvalFromIntegralTerm Integer (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

ValidFP eb sb => PEvalFromIntegralTerm Integer (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n) => PEvalFromIntegralTerm (IntN n) AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n) => PEvalFromIntegralTerm (IntN n) Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n) => PEvalFromIntegralTerm (WordN n) AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n) => PEvalFromIntegralTerm (WordN n) Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n, KnownNat m, 1 <= m) => PEvalFromIntegralTerm (IntN n) (IntN m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n, KnownNat m, 1 <= m) => PEvalFromIntegralTerm (IntN n) (WordN m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n, KnownNat m, 1 <= m) => PEvalFromIntegralTerm (WordN n) (IntN m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n, KnownNat m, 1 <= m) => PEvalFromIntegralTerm (WordN n) (WordN m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n, ValidFP eb sb) => PEvalFromIntegralTerm (IntN n) (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

(KnownNat n, 1 <= n, ValidFP eb sb) => PEvalFromIntegralTerm (WordN n) (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalFromIntegralTerm

class SupportedNonFuncPrim a => PEvalIEEEFPConvertibleTerm a where Source #

Partial evaluation and lowering for converting from and to IEEE floating point terms.

Instances

Instances details
PEvalIEEEFPConvertibleTerm AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalIEEEFPConvertibleTerm

Methods

pevalFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term AlgReal -> Term FPRoundingMode -> Term (FP eb sb) -> Term AlgReal Source #

pevalToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term FPRoundingMode -> Term AlgReal -> Term (FP eb sb) Source #

sbvFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType AlgReal -> SBVType FPRoundingMode -> SBVType (FP eb sb) -> SBVType AlgReal Source #

sbvToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType FPRoundingMode -> SBVType AlgReal -> SBVType (FP eb sb) Source #

PEvalIEEEFPConvertibleTerm Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalIEEEFPConvertibleTerm

Methods

pevalFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term Integer -> Term FPRoundingMode -> Term (FP eb sb) -> Term Integer Source #

pevalToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term FPRoundingMode -> Term Integer -> Term (FP eb sb) Source #

sbvFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType Integer -> SBVType FPRoundingMode -> SBVType (FP eb sb) -> SBVType Integer Source #

sbvToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType FPRoundingMode -> SBVType Integer -> SBVType (FP eb sb) Source #

(KnownNat n, 1 <= n) => PEvalIEEEFPConvertibleTerm (IntN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalIEEEFPConvertibleTerm

Methods

pevalFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term (IntN n) -> Term FPRoundingMode -> Term (FP eb sb) -> Term (IntN n) Source #

pevalToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term FPRoundingMode -> Term (IntN n) -> Term (FP eb sb) Source #

sbvFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType (IntN n) -> SBVType FPRoundingMode -> SBVType (FP eb sb) -> SBVType (IntN n) Source #

sbvToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType FPRoundingMode -> SBVType (IntN n) -> SBVType (FP eb sb) Source #

(KnownNat n, 1 <= n) => PEvalIEEEFPConvertibleTerm (WordN n) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalIEEEFPConvertibleTerm

Methods

pevalFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term (WordN n) -> Term FPRoundingMode -> Term (FP eb sb) -> Term (WordN n) Source #

pevalToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => Term FPRoundingMode -> Term (WordN n) -> Term (FP eb sb) Source #

sbvFromFPOrTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType (WordN n) -> SBVType FPRoundingMode -> SBVType (FP eb sb) -> SBVType (WordN n) Source #

sbvToFPTerm :: forall (eb :: Nat) (sb :: Nat). ValidFP eb sb => SBVType FPRoundingMode -> SBVType (WordN n) -> SBVType (FP eb sb) Source #

ValidFP eb sb => PEvalIEEEFPConvertibleTerm (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.PEvalIEEEFPConvertibleTerm

Methods

pevalFromFPOrTerm :: forall (eb0 :: Nat) (sb0 :: Nat). ValidFP eb0 sb0 => Term (FP eb sb) -> Term FPRoundingMode -> Term (FP eb0 sb0) -> Term (FP eb sb) Source #

pevalToFPTerm :: forall (eb0 :: Nat) (sb0 :: Nat). ValidFP eb0 sb0 => Term FPRoundingMode -> Term (FP eb sb) -> Term (FP eb0 sb0) Source #

sbvFromFPOrTerm :: forall (eb0 :: Nat) (sb0 :: Nat). ValidFP eb0 sb0 => SBVType (FP eb sb) -> SBVType FPRoundingMode -> SBVType (FP eb0 sb0) -> SBVType (FP eb sb) Source #

sbvToFPTerm :: forall (eb0 :: Nat) (sb0 :: Nat). ValidFP eb0 sb0 => SBVType FPRoundingMode -> SBVType (FP eb sb) -> SBVType (FP eb0 sb0) Source #

Typed symbols

data SymbolKind Source #

The kind of a symbol.

All symbols are AnyKind, and all symbols other than general/tabular functions are ConstantKind.

Constructors

ConstantKind 
AnyKind 

data TypedSymbol (knd :: SymbolKind) t where Source #

A typed symbol is a symbol that is associated with a type. Note that the same symbol bodies with different types are considered different symbols and can coexist in a term.

Simple symbols can be created with the OverloadedStrings extension:

>>> "a" :: TypedSymbol 'AnyKind Bool
a :: Bool

Constructors

TypedSymbol 

Fields

Instances

Instances details
ModelOps Model AnySymbolSet TypedAnySymbol Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Lift (TypedSymbol knd t :: Type) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

lift :: Quote m => TypedSymbol knd t -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => TypedSymbol knd t -> Code m (TypedSymbol knd t) #

SymbolSetOps (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

SymbolSetRep (SomeTypedSymbol knd) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

SymbolSetRep [SomeTypedSymbol knd] (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

SymbolSetRep [TypedSymbol knd t] (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: [TypedSymbol knd t] -> SymbolSet knd Source #

(SupportedPrim t, SymbolKindConstraint knd t, IsSymbolKind knd) => IsString (TypedSymbol knd t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

fromString :: String -> TypedSymbol knd t #

Show (TypedSymbol knd t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

showsPrec :: Int -> TypedSymbol knd t -> ShowS #

show :: TypedSymbol knd t -> String #

showList :: [TypedSymbol knd t] -> ShowS #

NFData (TypedSymbol knd t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: TypedSymbol knd t -> () #

Eq (TypedSymbol knd t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

(==) :: TypedSymbol knd t -> TypedSymbol knd t -> Bool #

(/=) :: TypedSymbol knd t -> TypedSymbol knd t -> Bool #

Ord (TypedSymbol knd t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

compare :: TypedSymbol knd t -> TypedSymbol knd t -> Ordering #

(<) :: TypedSymbol knd t -> TypedSymbol knd t -> Bool #

(<=) :: TypedSymbol knd t -> TypedSymbol knd t -> Bool #

(>) :: TypedSymbol knd t -> TypedSymbol knd t -> Bool #

(>=) :: TypedSymbol knd t -> TypedSymbol knd t -> Bool #

max :: TypedSymbol knd t -> TypedSymbol knd t -> TypedSymbol knd t #

min :: TypedSymbol knd t -> TypedSymbol knd t -> TypedSymbol knd t #

PPrint (TypedSymbol knd t) Source # 
Instance details

Defined in Grisette.Internal.Core.Data.Class.PPrint

Methods

pformat :: TypedSymbol knd t -> Doc ann Source #

pformatPrec :: Int -> TypedSymbol knd t -> Doc ann Source #

pformatList :: [TypedSymbol knd t] -> Doc ann Source #

Hashable (TypedSymbol knd t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

hashWithSalt :: Int -> TypedSymbol knd t -> Int #

hash :: TypedSymbol knd t -> Int #

SymbolSetRep (TypedSymbol knd t) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

SymbolSetRep (TypedSymbol knd a, TypedSymbol knd b) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: (TypedSymbol knd a, TypedSymbol knd b) -> SymbolSet knd Source #

SymbolSetRep (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c) -> SymbolSet knd Source #

SymbolSetRep (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d) -> SymbolSet knd Source #

SymbolSetRep (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e) -> SymbolSet knd Source #

SymbolSetRep (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e, TypedSymbol knd f) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e, TypedSymbol knd f) -> SymbolSet knd Source #

SymbolSetRep (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e, TypedSymbol knd f, TypedSymbol knd g) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e, TypedSymbol knd f, TypedSymbol knd g) -> SymbolSet knd Source #

SymbolSetRep (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e, TypedSymbol knd f, TypedSymbol knd g, TypedSymbol knd h) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

Methods

buildSymbolSet :: (TypedSymbol knd a, TypedSymbol knd b, TypedSymbol knd c, TypedSymbol knd d, TypedSymbol knd e, TypedSymbol knd f, TypedSymbol knd g, TypedSymbol knd h) -> SymbolSet knd Source #

data SomeTypedSymbol knd where Source #

A non-indexed symbol. Type information are checked at runtime.

Constructors

SomeTypedSymbol :: forall knd t. TypeRep t -> TypedSymbol knd t -> SomeTypedSymbol knd 

Instances

Instances details
Show (SomeTypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

NFData (SomeTypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: SomeTypedSymbol knd -> () #

Eq (SomeTypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Ord (SomeTypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

PPrint (SomeTypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.Core.Data.Class.PPrint

Hashable (SomeTypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

SymbolSetRep (SomeTypedSymbol knd) (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

SymbolSetRep [SomeTypedSymbol knd] (SymbolSet knd) (TypedSymbol knd) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Model

type SomeTypedConstantSymbol = SomeTypedSymbol 'ConstantKind Source #

Non-indexed constant symbol

type SomeTypedAnySymbol = SomeTypedSymbol 'AnyKind Source #

Non-indexed any symbol

showUntyped :: TypedSymbol knd t -> String Source #

Show a typed symbol without the type information.

withSymbolSupported :: TypedSymbol knd t -> (SupportedPrim t => a) -> a Source #

Introduce the SupportedPrim constraint from the TypedSymbol.

someTypedSymbol :: forall knd t. TypedSymbol knd t -> SomeTypedSymbol knd Source #

Construct a SomeTypedSymbol from a TypedSymbol.

eqHeteroSymbol :: forall ta a tb b. TypedSymbol ta a -> TypedSymbol tb b -> Bool Source #

Compare two TypedSymbols for equality.

castSomeTypedSymbol :: IsSymbolKind knd' => SomeTypedSymbol knd -> Maybe (SomeTypedSymbol knd') Source #

Cast a typed symbol to a different kind. Check if the kind is compatible.

withSymbolKind :: TypedSymbol knd t -> (IsSymbolKind knd => a) -> a Source #

Introduce the IsSymbolKind constraint from the TypedSymbol.

Terms

data FPTrait Source #

Traits for IEEE floating point numbers.

Instances

Instances details
Generic FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type Rep FPTrait :: Type -> Type #

Methods

from :: FPTrait -> Rep FPTrait x #

to :: Rep FPTrait x -> FPTrait #

Show FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

NFData FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: FPTrait -> () #

Eq FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

(==) :: FPTrait -> FPTrait -> Bool #

(/=) :: FPTrait -> FPTrait -> Bool #

Ord FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Hashable FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

hashWithSalt :: Int -> FPTrait -> Int #

hash :: FPTrait -> Int #

Lift FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

lift :: Quote m => FPTrait -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => FPTrait -> Code m FPTrait #

type Rep FPTrait Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Rep FPTrait = D1 ('MetaData "FPTrait" "Grisette.Internal.SymPrim.Prim.Internal.Term" "grisette-0.8.0.0-9ziui23pS5H4p62qxsVv1c" 'False) (((C1 ('MetaCons "FPIsNaN" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FPIsPositive" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPIsNegative" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "FPIsPositiveInfinite" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FPIsNegativeInfinite" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPIsInfinite" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "FPIsPositiveZero" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FPIsNegativeZero" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPIsZero" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "FPIsNormal" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FPIsSubnormal" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPIsPoint" 'PrefixI 'False) (U1 :: Type -> Type)))))

data FPUnaryOp Source #

Unary floating point operations.

Constructors

FPAbs 
FPNeg 

Instances

Instances details
Generic FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type Rep FPUnaryOp :: Type -> Type #

Show FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

NFData FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: FPUnaryOp -> () #

Eq FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Ord FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Hashable FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Lift FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

lift :: Quote m => FPUnaryOp -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => FPUnaryOp -> Code m FPUnaryOp #

type Rep FPUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Rep FPUnaryOp = D1 ('MetaData "FPUnaryOp" "Grisette.Internal.SymPrim.Prim.Internal.Term" "grisette-0.8.0.0-9ziui23pS5H4p62qxsVv1c" 'False) (C1 ('MetaCons "FPAbs" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPNeg" 'PrefixI 'False) (U1 :: Type -> Type))

data FPBinaryOp Source #

Binary floating point operations.

Instances

Instances details
Generic FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type Rep FPBinaryOp :: Type -> Type #

Show FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

NFData FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: FPBinaryOp -> () #

Eq FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Ord FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Hashable FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Lift FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

lift :: Quote m => FPBinaryOp -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => FPBinaryOp -> Code m FPBinaryOp #

type Rep FPBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Rep FPBinaryOp = D1 ('MetaData "FPBinaryOp" "Grisette.Internal.SymPrim.Prim.Internal.Term" "grisette-0.8.0.0-9ziui23pS5H4p62qxsVv1c" 'False) ((C1 ('MetaCons "FPRem" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPMinimum" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FPMinimumNumber" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FPMaximum" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPMaximumNumber" 'PrefixI 'False) (U1 :: Type -> Type))))

data FPRoundingUnaryOp Source #

Unary floating point operations with rounding modes.

Constructors

FPSqrt 
FPRoundToIntegral 

Instances

Instances details
Generic FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type Rep FPRoundingUnaryOp :: Type -> Type #

Show FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

NFData FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: FPRoundingUnaryOp -> () #

Eq FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Ord FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Hashable FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Lift FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

lift :: Quote m => FPRoundingUnaryOp -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => FPRoundingUnaryOp -> Code m FPRoundingUnaryOp #

type Rep FPRoundingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Rep FPRoundingUnaryOp = D1 ('MetaData "FPRoundingUnaryOp" "Grisette.Internal.SymPrim.Prim.Internal.Term" "grisette-0.8.0.0-9ziui23pS5H4p62qxsVv1c" 'False) (C1 ('MetaCons "FPSqrt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPRoundToIntegral" 'PrefixI 'False) (U1 :: Type -> Type))

data FPRoundingBinaryOp Source #

Binary floating point operations with rounding modes.

Constructors

FPAdd 
FPSub 
FPMul 
FPDiv 

Instances

Instances details
Generic FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type Rep FPRoundingBinaryOp :: Type -> Type #

Show FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

NFData FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: FPRoundingBinaryOp -> () #

Eq FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Ord FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Hashable FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Lift FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Rep FPRoundingBinaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Rep FPRoundingBinaryOp = D1 ('MetaData "FPRoundingBinaryOp" "Grisette.Internal.SymPrim.Prim.Internal.Term" "grisette-0.8.0.0-9ziui23pS5H4p62qxsVv1c" 'False) ((C1 ('MetaCons "FPAdd" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPSub" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FPMul" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FPDiv" 'PrefixI 'False) (U1 :: Type -> Type)))

data FloatingUnaryOp Source #

Unary floating point operations.

Instances

Instances details
Generic FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type Rep FloatingUnaryOp :: Type -> Type #

Show FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

NFData FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: FloatingUnaryOp -> () #

Eq FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Ord FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Hashable FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Lift FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

lift :: Quote m => FloatingUnaryOp -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => FloatingUnaryOp -> Code m FloatingUnaryOp #

type Rep FloatingUnaryOp Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Rep FloatingUnaryOp = D1 ('MetaData "FloatingUnaryOp" "Grisette.Internal.SymPrim.Prim.Internal.Term" "grisette-0.8.0.0-9ziui23pS5H4p62qxsVv1c" 'False) (((C1 ('MetaCons "FloatingExp" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FloatingLog" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FloatingSqrt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "FloatingSin" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FloatingCos" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FloatingTan" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FloatingAsin" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FloatingAcos" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FloatingAtan" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FloatingSinh" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FloatingCosh" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "FloatingTanh" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FloatingAsinh" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "FloatingAcosh" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FloatingAtanh" 'PrefixI 'False) (U1 :: Type -> Type)))))

data Term t where Source #

Internal representation for Grisette symbolic terms.

Constructors

ConTerm :: SupportedPrim t => !Id -> !t -> Term t 
SymTerm :: SupportedPrim t => !Id -> !(TypedSymbol 'AnyKind t) -> Term t 
ForallTerm :: SupportedNonFuncPrim t => !Id -> !(TypedSymbol 'ConstantKind t) -> !(Term Bool) -> Term Bool 
ExistsTerm :: SupportedNonFuncPrim t => !Id -> !(TypedSymbol 'ConstantKind t) -> !(Term Bool) -> Term Bool 
UnaryTerm :: UnaryOp tag arg t => !Id -> !tag -> !(Term arg) -> Term t 
BinaryTerm :: BinaryOp tag arg1 arg2 t => !Id -> !tag -> !(Term arg1) -> !(Term arg2) -> Term t 
TernaryTerm :: TernaryOp tag arg1 arg2 arg3 t => !Id -> !tag -> !(Term arg1) -> !(Term arg2) -> !(Term arg3) -> Term t 
NotTerm :: !Id -> !(Term Bool) -> Term Bool 
OrTerm :: !Id -> !(Term Bool) -> !(Term Bool) -> Term Bool 
AndTerm :: !Id -> !(Term Bool) -> !(Term Bool) -> Term Bool 
EqTerm :: SupportedNonFuncPrim t => !Id -> !(Term t) -> !(Term t) -> Term Bool 
DistinctTerm :: SupportedNonFuncPrim t => !Id -> !(NonEmpty (Term t)) -> Term Bool 
ITETerm :: SupportedPrim t => !Id -> !(Term Bool) -> !(Term t) -> !(Term t) -> Term t 
AddNumTerm :: PEvalNumTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
NegNumTerm :: PEvalNumTerm t => !Id -> !(Term t) -> Term t 
MulNumTerm :: PEvalNumTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
AbsNumTerm :: PEvalNumTerm t => !Id -> !(Term t) -> Term t 
SignumNumTerm :: PEvalNumTerm t => !Id -> !(Term t) -> Term t 
LtOrdTerm :: PEvalOrdTerm t => !Id -> !(Term t) -> !(Term t) -> Term Bool 
LeOrdTerm :: PEvalOrdTerm t => !Id -> !(Term t) -> !(Term t) -> Term Bool 
AndBitsTerm :: PEvalBitwiseTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
OrBitsTerm :: PEvalBitwiseTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
XorBitsTerm :: PEvalBitwiseTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
ComplementBitsTerm :: PEvalBitwiseTerm t => !Id -> !(Term t) -> Term t 
ShiftLeftTerm :: PEvalShiftTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
ShiftRightTerm :: PEvalShiftTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
RotateLeftTerm :: PEvalRotateTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
RotateRightTerm :: PEvalRotateTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
BitCastTerm :: PEvalBitCastTerm a b => !Id -> !(Term a) -> Term b 
BitCastOrTerm :: PEvalBitCastOrTerm a b => !Id -> !(Term b) -> !(Term a) -> Term b 
BVConcatTerm :: (PEvalBVTerm bv, KnownNat l, KnownNat r, KnownNat (l + r), 1 <= l, 1 <= r, 1 <= (l + r)) => !Id -> !(Term (bv l)) -> !(Term (bv r)) -> Term (bv (l + r)) 
BVSelectTerm :: (PEvalBVTerm bv, KnownNat n, KnownNat ix, KnownNat w, 1 <= n, 1 <= w, (ix + w) <= n) => !Id -> !(TypeRep ix) -> !(TypeRep w) -> !(Term (bv n)) -> Term (bv w) 
BVExtendTerm :: (PEvalBVTerm bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => !Id -> !Bool -> !(TypeRep r) -> !(Term (bv l)) -> Term (bv r) 
ApplyTerm :: (SupportedPrim a, SupportedPrim b, SupportedPrim f, PEvalApplyTerm f a b) => !Id -> !(Term f) -> !(Term a) -> Term b 
DivIntegralTerm :: PEvalDivModIntegralTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
ModIntegralTerm :: PEvalDivModIntegralTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
QuotIntegralTerm :: PEvalDivModIntegralTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
RemIntegralTerm :: PEvalDivModIntegralTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
FPTraitTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => !Id -> !FPTrait -> !(Term (FP eb sb)) -> Term Bool 
FdivTerm :: PEvalFractionalTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
RecipTerm :: PEvalFractionalTerm t => !Id -> !(Term t) -> Term t 
FloatingUnaryTerm :: PEvalFloatingTerm t => !Id -> !FloatingUnaryOp -> !(Term t) -> Term t 
PowerTerm :: PEvalFloatingTerm t => !Id -> !(Term t) -> !(Term t) -> Term t 
FPUnaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => !Id -> !FPUnaryOp -> !(Term (FP eb sb)) -> Term (FP eb sb) 
FPBinaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => !Id -> !FPBinaryOp -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> Term (FP eb sb) 
FPRoundingUnaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !Id -> !FPRoundingUnaryOp -> !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> Term (FP eb sb) 
FPRoundingBinaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !Id -> !FPRoundingBinaryOp -> !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> Term (FP eb sb) 
FPFMATerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !Id -> !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> Term (FP eb sb) 
FromIntegralTerm :: PEvalFromIntegralTerm a b => !Id -> !(Term a) -> Term b 
FromFPOrTerm :: (PEvalIEEEFPConvertibleTerm a, ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !Id -> !(Term a) -> !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> Term a 
ToFPTerm :: (PEvalIEEEFPConvertibleTerm a, ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !Id -> !(Term FPRoundingMode) -> !(Term a) -> Proxy eb -> Proxy sb -> Term (FP eb sb) 

Instances

Instances details
Lift (Term t :: Type) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

lift :: Quote m => Term t -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => Term t -> Code m (Term t) #

Show (Term ty) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

showsPrec :: Int -> Term ty -> ShowS #

show :: Term ty -> String #

showList :: [Term ty] -> ShowS #

NFData (Term a) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

rnf :: Term a -> () #

SupportedPrim t => Eq (Term t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

(==) :: Term t -> Term t -> Bool #

(/=) :: Term t -> Term t -> Bool #

SupportedPrim t => Eq (Description (Term t)) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

(==) :: Description (Term t) -> Description (Term t) -> Bool #

(/=) :: Description (Term t) -> Description (Term t) -> Bool #

SupportedPrim t => Hashable (Term t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

hashWithSalt :: Int -> Term t -> Int #

hash :: Term t -> Int #

SupportedPrim t => Hashable (Description (Term t)) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

hashWithSalt :: Int -> Description (Term t) -> Int #

hash :: Description (Term t) -> Int #

SupportedPrim t => Interned (Term t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

data Description (Term t) #

type Uninterned (Term t) #

Methods

describe :: Uninterned (Term t) -> Description (Term t) #

identify :: Id -> Uninterned (Term t) -> Term t #

seedIdentity :: p (Term t) -> Id #

cacheWidth :: p (Term t) -> Int #

modifyAdvice :: IO (Term t) -> IO (Term t) #

cache :: Cache (Term t) #

data Description (Term t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

data Description (Term t) where
type Uninterned (Term t) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

type Uninterned (Term t) = UTerm t

identity :: Term t -> Id Source #

Return the ID of a term.

identityWithTypeRep :: forall t. Term t -> (SomeTypeRep, Id) Source #

Return the ID and the type representation of a term.

introSupportedPrimConstraint :: forall t a. Term t -> (SupportedPrim t => a) -> a Source #

Introduce the SupportedPrim constraint from a term.

pformatTerm :: forall t. SupportedPrim t => Term t -> String Source #

Pretty-print a term.

Interning

data UTerm t where Source #

Term without identity (before internalizing).

Constructors

UConTerm :: SupportedPrim t => !t -> UTerm t 
USymTerm :: SupportedPrim t => !(TypedSymbol 'AnyKind t) -> UTerm t 
UForallTerm :: SupportedNonFuncPrim t => !(TypedSymbol 'ConstantKind t) -> !(Term Bool) -> UTerm Bool 
UExistsTerm :: SupportedNonFuncPrim t => !(TypedSymbol 'ConstantKind t) -> !(Term Bool) -> UTerm Bool 
UUnaryTerm :: UnaryOp tag arg t => !tag -> !(Term arg) -> UTerm t 
UBinaryTerm :: BinaryOp tag arg1 arg2 t => !tag -> !(Term arg1) -> !(Term arg2) -> UTerm t 
UTernaryTerm :: TernaryOp tag arg1 arg2 arg3 t => !tag -> !(Term arg1) -> !(Term arg2) -> !(Term arg3) -> UTerm t 
UNotTerm :: !(Term Bool) -> UTerm Bool 
UOrTerm :: !(Term Bool) -> !(Term Bool) -> UTerm Bool 
UAndTerm :: !(Term Bool) -> !(Term Bool) -> UTerm Bool 
UEqTerm :: SupportedNonFuncPrim t => !(Term t) -> !(Term t) -> UTerm Bool 
UDistinctTerm :: SupportedNonFuncPrim t => !(NonEmpty (Term t)) -> UTerm Bool 
UITETerm :: SupportedPrim t => !(Term Bool) -> !(Term t) -> !(Term t) -> UTerm t 
UAddNumTerm :: PEvalNumTerm t => !(Term t) -> !(Term t) -> UTerm t 
UNegNumTerm :: PEvalNumTerm t => !(Term t) -> UTerm t 
UMulNumTerm :: PEvalNumTerm t => !(Term t) -> !(Term t) -> UTerm t 
UAbsNumTerm :: PEvalNumTerm t => !(Term t) -> UTerm t 
USignumNumTerm :: PEvalNumTerm t => !(Term t) -> UTerm t 
ULtOrdTerm :: PEvalOrdTerm t => !(Term t) -> !(Term t) -> UTerm Bool 
ULeOrdTerm :: PEvalOrdTerm t => !(Term t) -> !(Term t) -> UTerm Bool 
UAndBitsTerm :: PEvalBitwiseTerm t => !(Term t) -> !(Term t) -> UTerm t 
UOrBitsTerm :: PEvalBitwiseTerm t => !(Term t) -> !(Term t) -> UTerm t 
UXorBitsTerm :: PEvalBitwiseTerm t => !(Term t) -> !(Term t) -> UTerm t 
UComplementBitsTerm :: PEvalBitwiseTerm t => !(Term t) -> UTerm t 
UShiftLeftTerm :: PEvalShiftTerm t => !(Term t) -> !(Term t) -> UTerm t 
UShiftRightTerm :: PEvalShiftTerm t => !(Term t) -> !(Term t) -> UTerm t 
URotateLeftTerm :: PEvalRotateTerm t => !(Term t) -> !(Term t) -> UTerm t 
URotateRightTerm :: PEvalRotateTerm t => !(Term t) -> !(Term t) -> UTerm t 
UBitCastTerm :: PEvalBitCastTerm a b => !(Term a) -> UTerm b 
UBitCastOrTerm :: PEvalBitCastOrTerm a b => !(Term b) -> !(Term a) -> UTerm b 
UBVConcatTerm :: (PEvalBVTerm bv, KnownNat l, KnownNat r, KnownNat (l + r), 1 <= l, 1 <= r, 1 <= (l + r)) => !(Term (bv l)) -> !(Term (bv r)) -> UTerm (bv (l + r)) 
UBVSelectTerm :: (PEvalBVTerm bv, KnownNat n, KnownNat ix, KnownNat w, 1 <= n, 1 <= w, (ix + w) <= n) => !(TypeRep ix) -> !(TypeRep w) -> !(Term (bv n)) -> UTerm (bv w) 
UBVExtendTerm :: (PEvalBVTerm bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => !Bool -> !(TypeRep r) -> !(Term (bv l)) -> UTerm (bv r) 
UApplyTerm :: (SupportedPrim a, SupportedPrim b, SupportedPrim f, PEvalApplyTerm f a b) => Term f -> Term a -> UTerm b 
UDivIntegralTerm :: PEvalDivModIntegralTerm t => !(Term t) -> !(Term t) -> UTerm t 
UModIntegralTerm :: PEvalDivModIntegralTerm t => !(Term t) -> !(Term t) -> UTerm t 
UQuotIntegralTerm :: PEvalDivModIntegralTerm t => !(Term t) -> !(Term t) -> UTerm t 
URemIntegralTerm :: PEvalDivModIntegralTerm t => !(Term t) -> !(Term t) -> UTerm t 
UFPTraitTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => !FPTrait -> !(Term (FP eb sb)) -> UTerm Bool 
UFdivTerm :: PEvalFractionalTerm t => !(Term t) -> !(Term t) -> UTerm t 
URecipTerm :: PEvalFractionalTerm t => !(Term t) -> UTerm t 
UFloatingUnaryTerm :: PEvalFloatingTerm t => !FloatingUnaryOp -> !(Term t) -> UTerm t 
UPowerTerm :: PEvalFloatingTerm t => !(Term t) -> !(Term t) -> UTerm t 
UFPUnaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => !FPUnaryOp -> !(Term (FP eb sb)) -> UTerm (FP eb sb) 
UFPBinaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => !FPBinaryOp -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> UTerm (FP eb sb) 
UFPRoundingUnaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !FPRoundingUnaryOp -> !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> UTerm (FP eb sb) 
UFPRoundingBinaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !FPRoundingBinaryOp -> !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> UTerm (FP eb sb) 
UFPFMATerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> !(Term (FP eb sb)) -> UTerm (FP eb sb) 
UFromIntegralTerm :: PEvalFromIntegralTerm a b => !(Term a) -> UTerm b 
UFromFPOrTerm :: (PEvalIEEEFPConvertibleTerm a, ValidFP eb sb, SupportedPrim FPRoundingMode, SupportedPrim (FP eb sb)) => Term a -> !(Term FPRoundingMode) -> !(Term (FP eb sb)) -> UTerm a 
UToFPTerm :: (PEvalIEEEFPConvertibleTerm a, ValidFP eb sb, SupportedPrim FPRoundingMode, SupportedPrim (FP eb sb)) => !(Term FPRoundingMode) -> !(Term a) -> Proxy eb -> Proxy sb -> UTerm (FP eb sb) 

prettyPrintTerm :: Term t -> Doc ann Source #

Pretty-print a term, possibly eliding parts of it.

forallTerm :: (SupportedNonFuncPrim t, Typeable t) => TypedSymbol 'ConstantKind t -> Term Bool -> Term Bool Source #

Construct and internalizing a ForallTerm.

existsTerm :: (SupportedNonFuncPrim t, Typeable t) => TypedSymbol 'ConstantKind t -> Term Bool -> Term Bool Source #

Construct and internalizing a ExistsTerm.

constructUnary :: forall tag arg t. (SupportedPrim t, UnaryOp tag arg t, Typeable tag, Typeable t, Show tag) => tag -> Term arg -> Term t Source #

Construct and internalizing a UnaryTerm.

constructBinary :: forall tag arg1 arg2 t. (SupportedPrim t, BinaryOp tag arg1 arg2 t, Typeable tag, Typeable t, Show tag) => tag -> Term arg1 -> Term arg2 -> Term t Source #

Construct and internalizing a BinaryTerm.

constructTernary :: forall tag arg1 arg2 arg3 t. (SupportedPrim t, TernaryOp tag arg1 arg2 arg3 t, Typeable tag, Typeable t, Show tag) => tag -> Term arg1 -> Term arg2 -> Term arg3 -> Term t Source #

Construct and internalizing a TernaryTerm.

conTerm :: (SupportedPrim t, Typeable t, Hashable t, Eq t, Show t) => t -> Term t Source #

Construct and internalizing a ConTerm.

symTerm :: forall t. (SupportedPrim t, Typeable t) => Symbol -> Term t Source #

Construct and internalizing a SymTerm.

ssymTerm :: (SupportedPrim t, Typeable t) => Identifier -> Term t Source #

Construct and internalizing a SymTerm with an identifier, using simple symbols.

isymTerm :: (SupportedPrim t, Typeable t) => Identifier -> Int -> Term t Source #

Construct and internalizing a SymTerm with an identifier and an index, using indexed symbols.

notTerm :: Term Bool -> Term Bool Source #

Construct and internalizing a NotTerm.

orTerm :: Term Bool -> Term Bool -> Term Bool Source #

Construct and internalizing a OrTerm.

andTerm :: Term Bool -> Term Bool -> Term Bool Source #

Construct and internalizing a AndTerm.

eqTerm :: SupportedNonFuncPrim a => Term a -> Term a -> Term Bool Source #

Construct and internalizing a EqTerm.

distinctTerm :: SupportedNonFuncPrim a => NonEmpty (Term a) -> Term Bool Source #

Construct and internalizing a DistinctTerm.

iteTerm :: SupportedPrim a => Term Bool -> Term a -> Term a -> Term a Source #

Construct and internalizing a ITETerm.

addNumTerm :: PEvalNumTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a AddNumTerm.

negNumTerm :: PEvalNumTerm a => Term a -> Term a Source #

Construct and internalizing a NegNumTerm.

mulNumTerm :: PEvalNumTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a MulNumTerm.

absNumTerm :: PEvalNumTerm a => Term a -> Term a Source #

Construct and internalizing a AbsNumTerm.

signumNumTerm :: PEvalNumTerm a => Term a -> Term a Source #

Construct and internalizing a SignumNumTerm.

ltOrdTerm :: PEvalOrdTerm a => Term a -> Term a -> Term Bool Source #

Construct and internalizing a LtOrdTerm.

leOrdTerm :: PEvalOrdTerm a => Term a -> Term a -> Term Bool Source #

Construct and internalizing a LeOrdTerm.

andBitsTerm :: PEvalBitwiseTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a AndBitsTerm.

orBitsTerm :: PEvalBitwiseTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a OrBitsTerm.

xorBitsTerm :: PEvalBitwiseTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a XorBitsTerm.

complementBitsTerm :: PEvalBitwiseTerm a => Term a -> Term a Source #

Construct and internalizing a ComplementBitsTerm.

shiftLeftTerm :: PEvalShiftTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a ShiftLeftTerm.

shiftRightTerm :: PEvalShiftTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a ShiftRightTerm.

rotateLeftTerm :: PEvalRotateTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a RotateLeftTerm.

rotateRightTerm :: PEvalRotateTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a RotateRightTerm.

bitCastTerm :: PEvalBitCastTerm a b => Term a -> Term b Source #

Construct and internalizing a BitCastTerm.

bitCastOrTerm :: PEvalBitCastOrTerm a b => Term b -> Term a -> Term b Source #

Construct and internalizing a BitCastOrTerm.

bvconcatTerm :: (PEvalBVTerm bv, KnownNat l, KnownNat r, KnownNat (l + r), 1 <= l, 1 <= r, 1 <= (l + r)) => Term (bv l) -> Term (bv r) -> Term (bv (l + r)) Source #

Construct and internalizing a BVConcatTerm.

bvselectTerm :: forall bv n ix w p q. (PEvalBVTerm bv, KnownNat n, KnownNat ix, KnownNat w, 1 <= n, 1 <= w, (ix + w) <= n) => p ix -> q w -> Term (bv n) -> Term (bv w) Source #

Construct and internalizing a BVSelectTerm.

bvextendTerm :: forall bv l r proxy. (PEvalBVTerm bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => Bool -> proxy r -> Term (bv l) -> Term (bv r) Source #

Construct and internalizing a BVExtendTerm.

bvsignExtendTerm :: forall bv l r proxy. (PEvalBVTerm bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => proxy r -> Term (bv l) -> Term (bv r) Source #

Construct and internalizing a BVExtendTerm with sign extension.

bvzeroExtendTerm :: forall bv l r proxy. (PEvalBVTerm bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r) => proxy r -> Term (bv l) -> Term (bv r) Source #

Construct and internalizing a BVExtendTerm with zero extension.

applyTerm :: (SupportedPrim a, SupportedPrim b, SupportedPrim f, PEvalApplyTerm f a b) => Term f -> Term a -> Term b Source #

Construct and internalizing a ApplyTerm.

divIntegralTerm :: PEvalDivModIntegralTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a DivIntegralTerm.

modIntegralTerm :: PEvalDivModIntegralTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a ModIntegralTerm.

quotIntegralTerm :: PEvalDivModIntegralTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a QuotIntegralTerm.

remIntegralTerm :: PEvalDivModIntegralTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a RemIntegralTerm.

fpTraitTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => FPTrait -> Term (FP eb sb) -> Term Bool Source #

Construct and internalizing a FPTraitTerm.

fdivTerm :: PEvalFractionalTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a FdivTerm.

recipTerm :: PEvalFractionalTerm a => Term a -> Term a Source #

Construct and internalizing a RecipTerm.

floatingUnaryTerm :: PEvalFloatingTerm a => FloatingUnaryOp -> Term a -> Term a Source #

Construct and internalizing a FloatingUnaryTerm.

powerTerm :: PEvalFloatingTerm a => Term a -> Term a -> Term a Source #

Construct and internalizing a PowerTerm.

fpUnaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => FPUnaryOp -> Term (FP eb sb) -> Term (FP eb sb) Source #

Construct and internalizing a FPUnaryTerm.

fpBinaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb)) => FPBinaryOp -> Term (FP eb sb) -> Term (FP eb sb) -> Term (FP eb sb) Source #

Construct and internalizing a FPBinaryTerm.

fpRoundingUnaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => FPRoundingUnaryOp -> Term FPRoundingMode -> Term (FP eb sb) -> Term (FP eb sb) Source #

Construct and internalizing a FPRoundingUnaryTerm.

fpRoundingBinaryTerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => FPRoundingBinaryOp -> Term FPRoundingMode -> Term (FP eb sb) -> Term (FP eb sb) -> Term (FP eb sb) Source #

Construct and internalizing a FPRoundingBinaryTerm.

fpFMATerm :: (ValidFP eb sb, SupportedPrim (FP eb sb), SupportedPrim FPRoundingMode) => Term FPRoundingMode -> Term (FP eb sb) -> Term (FP eb sb) -> Term (FP eb sb) -> Term (FP eb sb) Source #

Construct and internalizing a FPFMATerm.

fromIntegralTerm :: PEvalFromIntegralTerm a b => Term a -> Term b Source #

Construct and internalizing a FromIntegralTerm.

fromFPOrTerm :: (PEvalIEEEFPConvertibleTerm a, ValidFP eb sb, SupportedPrim FPRoundingMode, SupportedPrim (FP eb sb)) => Term a -> Term FPRoundingMode -> Term (FP eb sb) -> Term a Source #

Construct and internalizing a FromFPOrTerm.

toFPTerm :: forall a eb sb. (PEvalIEEEFPConvertibleTerm a, ValidFP eb sb, SupportedPrim FPRoundingMode, SupportedPrim (FP eb sb)) => Term FPRoundingMode -> Term a -> Term (FP eb sb) Source #

Construct and internalizing a ToFPTerm.

Support for boolean type

trueTerm :: Term Bool Source #

Construct and internalizing True term.

falseTerm :: Term Bool Source #

Construct and internalizing False term.

pattern BoolConTerm :: Bool -> Term a Source #

Pattern matcher for concrete Bool terms.

pattern TrueTerm :: Term a Source #

Pattern matcher for True term.

pattern FalseTerm :: Term a Source #

Pattern matcher for False term.

pattern BoolTerm :: Term Bool -> Term a Source #

Pattern matcher for Bool terms.

pevalNotTerm :: Term Bool -> Term Bool Source #

Partial evaluation for not terms.

pevalOrTerm :: Term Bool -> Term Bool -> Term Bool Source #

Partial evaluation for or terms.

pevalAndTerm :: Term Bool -> Term Bool -> Term Bool Source #

Partial evaluation for and terms.

pevalImplyTerm :: Term Bool -> Term Bool -> Term Bool Source #

Partial evaluation for imply terms.

pevalXorTerm :: Term Bool -> Term Bool -> Term Bool Source #

Partial evaluation for xor terms.

pevalITEBasic :: SupportedPrim a => Term Bool -> Term a -> Term a -> Maybe (Term a) Source #

Basic partial evaluation for ITE terms.

pevalITEBasicTerm :: SupportedPrim a => Term Bool -> Term a -> Term a -> Term a Source #

Basic partial evaluation for ITE terms.

pevalDefaultEqTerm :: SupportedNonFuncPrim a => Term a -> Term a -> Term Bool Source #

Default partial evaluation for equality terms.

type NonFuncPrimConstraint a = (SymVal (NonFuncSBVBaseType a), EqSymbolic (SBVType a), Mergeable (SBVType a), SMTDefinable (SBVType a), Mergeable (SBVType a), SBVType a ~ SBV (NonFuncSBVBaseType a), PrimConstraint a) Source #

Type class for resolving the constraint for a supported non-function primitive type.

class (SupportedPrim a, Ord a) => NonFuncSBVRep a Source #

Type class for resolving the base type for the SBV type for the primitive type.

Associated Types

type NonFuncSBVBaseType a Source #

class NonFuncSBVRep a => SupportedNonFuncPrim a where Source #

Indicates that a type is supported, can be represented as a symbolic term, is not a function type, and can be lowered to an SBV term.

Instances

Instances details
SupportedNonFuncPrim AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

SupportedNonFuncPrim FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

SupportedNonFuncPrim Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

SupportedNonFuncPrim Bool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

(KnownNat w, 1 <= w) => SupportedNonFuncPrim (IntN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

(KnownNat w, 1 <= w) => SupportedNonFuncPrim (WordN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

ValidFP eb sb => SupportedNonFuncPrim (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

class SBVRep t Source #

Type class for resolving the SBV type for the primitive type.

Associated Types

type SBVType t Source #

Instances

Instances details
SBVRep AlgReal Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type SBVType AlgReal Source #

SBVRep FPRoundingMode Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type SBVType FPRoundingMode Source #

SBVRep Integer Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type SBVType Integer Source #

SBVRep Bool Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Associated Types

type SBVType Bool Source #

(KnownNat w, 1 <= w) => SBVRep (IntN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type SBVType (IntN w) Source #

(KnownNat w, 1 <= w) => SBVRep (WordN w) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type SBVType (WordN w) Source #

ValidFP eb sb => SBVRep (FP eb sb) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Instances.SupportedPrim

Associated Types

type SBVType (FP eb sb) Source #

(SupportedNonFuncPrim a, SupportedPrim b) => SBVRep (a --> b) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.GeneralFun

Associated Types

type SBVType (a --> b) Source #

(SupportedNonFuncPrim a, SupportedPrim b) => SBVRep (a =-> b) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.TabularFun

Associated Types

type SBVType (a =-> b) Source #

class Monad m => SBVFreshMonad m where Source #

Monads that supports generating sbv fresh variables.

Methods

sbvFresh :: SymVal a => String -> m (SBV a) Source #

Instances

Instances details
MonadIO m => SBVFreshMonad (QueryT m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

sbvFresh :: SymVal a => String -> QueryT m (SBV a) Source #

MonadIO m => SBVFreshMonad (SymbolicT m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

sbvFresh :: SymVal a => String -> SymbolicT m (SBV a) Source #

SBVFreshMonad m => SBVFreshMonad (ReaderT r m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

sbvFresh :: SymVal a => String -> ReaderT r m (SBV a) Source #

SBVFreshMonad m => SBVFreshMonad (StateT s m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

sbvFresh :: SymVal a => String -> StateT s m (SBV a) Source #

(SBVFreshMonad m, Monoid w) => SBVFreshMonad (WriterT w m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

sbvFresh :: SymVal a => String -> WriterT w m (SBV a) Source #

(SBVFreshMonad m, Monoid w) => SBVFreshMonad (RWST r w s m) Source # 
Instance details

Defined in Grisette.Internal.SymPrim.Prim.Internal.Term

Methods

sbvFresh :: SymVal a => String -> RWST r w s m (SBV a) Source #

translateTypeError :: HasCallStack => Maybe String -> TypeRep a -> b Source #

Error message for unsupported types.

parseSMTModelResultError :: HasCallStack => TypeRep a -> ([([CV], CV)], CV) -> a Source #

Error message for failure to parse the SBV model result.

partitionCVArg :: forall a. SupportedNonFuncPrim a => [([CV], CV)] -> [(a, [([CV], CV)])] Source #

Partition the list of CVs for models for functions.

parseScalarSMTModelResult :: forall v r. (SatModel r, Typeable v) => (r -> v) -> ([([CV], CV)], CV) -> v Source #

Parse the scalar model result.