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

Language.Hasmtlib.Type.SMTSort

Description

This module provides the data-type SMTSort and some singleton-operations for it.

The type SMTSort is only used as promoted type (data-kind) in dependent-like contexts such as GADTs.

Synopsis

Type

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 BvEnc Nat

Sort of BitVec with type of encoding enc and 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 Expr Source # 
Instance details

Defined in Language.Hasmtlib.Type.Expr

Methods

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

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 #

GCompare Value Source # 
Instance details

Defined in Language.Hasmtlib.Type.Value

Methods

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

GEq Expr Source # 
Instance details

Defined in Language.Hasmtlib.Type.Expr

Methods

geq :: forall (a :: k) (b :: k). Expr a -> Expr 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) #

GEq Value Source # 
Instance details

Defined in Language.Hasmtlib.Type.Value

Methods

geq :: forall (a :: k) (b :: k). Value a -> Value 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.

Singleton

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.Internal.Render

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 #

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

Defined in Language.Hasmtlib.Type.SMTSort

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

Defined in Language.Hasmtlib.Type.SMTSort

Methods

sortSing :: SSMTSort ('BvSort enc n) Source #

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

Wrapper for sortSing which takes a Proxy.

Existential

type SomeKnownSMTSort f = Some1 ((~) f) KnownSMTSort Source #

An existential wrapper that hides some known SMTSort.