packages feed

grisette-0.13.0.1: test/Grisette/SymPrim/SymPrimConstraintTests.hs

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}

module Grisette.SymPrim.SymPrimConstraintTests
  ( symBool,
    symInteger,
    symWordN8,
    symIntN8,
    symFP32,
    symAlgReal,
    someSymWordN,
    someSymIntN,
    bool,
    integer,
    wordN8,
    intN8,
    fp32,
    algReal,
    someWordN,
    someIntN,
  )
where

import Grisette
  ( AlgReal,
    BasicSymPrim,
    FP32,
    IntN8,
    Prim,
    SomeSymWordN,
    SymAlgReal,
    SymBool,
    SymFP32,
    SymIntN8,
    SymInteger,
    SymPrim,
    SymWordN8,
    WordN8,
  )
import Grisette.Internal.SymPrim.SomeBV (SomeIntN, SomeSymIntN, SomeWordN)

data BasicSymPrimType a where
  BasicSymPrimType :: (BasicSymPrim a) => BasicSymPrimType a

symBool :: BasicSymPrimType SymBool
symBool = BasicSymPrimType

symInteger :: BasicSymPrimType SymInteger
symInteger = BasicSymPrimType

symWordN8 :: BasicSymPrimType SymWordN8
symWordN8 = BasicSymPrimType

symIntN8 :: BasicSymPrimType SymIntN8
symIntN8 = BasicSymPrimType

symFP32 :: BasicSymPrimType SymFP32
symFP32 = BasicSymPrimType

symAlgReal :: BasicSymPrimType SymAlgReal
symAlgReal = BasicSymPrimType

data SymPrimType a where
  SymPrimType :: (SymPrim a) => SymPrimType a

someSymWordN :: SymPrimType SomeSymWordN
someSymWordN = SymPrimType

someSymIntN :: SymPrimType SomeSymIntN
someSymIntN = SymPrimType

data PrimType a where
  PrimType :: (Prim a) => PrimType a

bool :: PrimType Bool
bool = PrimType

integer :: PrimType Integer
integer = PrimType

wordN8 :: PrimType WordN8
wordN8 = PrimType

intN8 :: PrimType IntN8
intN8 = PrimType

fp32 :: PrimType FP32
fp32 = PrimType

algReal :: PrimType AlgReal
algReal = PrimType

someWordN :: PrimType SomeWordN
someWordN = PrimType

someIntN :: PrimType SomeIntN
someIntN = PrimType