hasmtlib-2.4.0: A monad for interfacing with external SMT solvers
Safe HaskellSafe-Inferred
LanguageGHC2021

Language.Hasmtlib.Type.SMTSort

Synopsis

Documentation

data SMTSort Source #

Sorts in SMTLib2 - used as promoted type (data-kind).

Constructors

BoolSort

Sort of Bool

IntSort

Sort of Int

RealSort

Sort of Real

BvSort Nat

Sort of BitVec with length n

ArraySort SMTSort SMTSort

Sort of Array with indices k and values v

StringSort

Sort of String

Instances

Instances details
GNFData Expr Source # 
Instance details

Defined in Language.Hasmtlib.Type.Expr

Methods

grnf :: forall (a :: k). Expr a -> () #

GCompare SSMTSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

gcompare :: forall (a :: k) (b :: k). SSMTSort a -> SSMTSort b -> GOrdering a b #

GEq Value Source # 
Instance details

Defined in Language.Hasmtlib.Type.Expr

Methods

geq :: forall (a :: k) (b :: k). Value a -> Value b -> Maybe (a :~: b) #

GEq SSMTSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

geq :: forall (a :: k) (b :: k). SSMTSort a -> SSMTSort b -> Maybe (a :~: b) #

Uniplate1 Expr '[KnownSMTSort] Source #

Caution for quantified expressions: uniplate1 will only be applied if quantification has taken place already.

Instance details

Defined in Language.Hasmtlib.Type.Expr

Methods

uniplate1 :: forall m (b :: k). (Applicative m, AllC '[KnownSMTSort] b) => (forall (a :: k). AllC '[KnownSMTSort] a => Expr a -> m (Expr a)) -> Expr b -> m (Expr b) Source #

type family HaskellType (t :: SMTSort) = (r :: Type) | r -> t where ... Source #

Injective type-family that computes the Haskell Type of an SMTSort.

data SSMTSort (t :: SMTSort) where Source #

Singleton for SMTSort.

Instances

Instances details
GCompare SSMTSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

gcompare :: forall (a :: k) (b :: k). SSMTSort a -> SSMTSort b -> GOrdering a b #

GEq SSMTSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

geq :: forall (a :: k) (b :: k). SSMTSort a -> SSMTSort b -> Maybe (a :~: b) #

Show (SSMTSort t) Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

showsPrec :: Int -> SSMTSort t -> ShowS #

show :: SSMTSort t -> String #

showList :: [SSMTSort t] -> ShowS #

Eq (SSMTSort t) Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

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

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

Ord (SSMTSort t) Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

compare :: SSMTSort t -> SSMTSort t -> Ordering #

(<) :: SSMTSort t -> SSMTSort t -> Bool #

(<=) :: SSMTSort t -> SSMTSort t -> Bool #

(>) :: SSMTSort t -> SSMTSort t -> Bool #

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

max :: SSMTSort t -> SSMTSort t -> SSMTSort t #

min :: SSMTSort t -> SSMTSort t -> SSMTSort t #

Render (SSMTSort t) Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

render :: SSMTSort t -> Builder Source #

class KnownSMTSort (t :: SMTSort) where Source #

Compute singleton SSMTSort from it's promoted type SMTSort.

Instances

Instances details
KnownSMTSort 'BoolSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

KnownSMTSort 'IntSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

KnownSMTSort 'RealSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

KnownSMTSort 'StringSort Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Uniplate1 Expr '[KnownSMTSort] Source #

Caution for quantified expressions: uniplate1 will only be applied if quantification has taken place already.

Instance details

Defined in Language.Hasmtlib.Type.Expr

Methods

uniplate1 :: forall m (b :: k). (Applicative m, AllC '[KnownSMTSort] b) => (forall (a :: k). AllC '[KnownSMTSort] a => Expr a -> m (Expr a)) -> Expr b -> m (Expr b) Source #

KnownNat n => KnownSMTSort ('BvSort n) Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

(KnownSMTSort k, KnownSMTSort v, Ord (HaskellType k), Eq (HaskellType v)) => KnownSMTSort ('ArraySort k v) Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

sortSing' :: forall prxy t. KnownSMTSort t => prxy t -> SSMTSort t Source #

Wrapper for sortSing which takes a Proxy

data SomeSMTSort cs f where Source #

An existential wrapper that hides some SMTSort and a list of Constraints holding for it.

Constructors

SomeSMTSort :: forall cs f (t :: SMTSort). AllC cs t => f t -> SomeSMTSort cs f 

Instances

Instances details
(forall (t :: SMTSort). Show (f t)) => Show (SomeSMTSort cs f) Source # 
Instance details

Defined in Language.Hasmtlib.Type.SMTSort

Methods

showsPrec :: Int -> SomeSMTSort cs f -> ShowS #

show :: SomeSMTSort cs f -> String #

showList :: [SomeSMTSort cs f] -> ShowS #