Copyright | (c) Sirui Lu 2021-2023 |
---|---|
License | BSD-3-Clause (see the LICENSE file) |
Maintainer | siruilu@cs.washington.edu |
Stability | Experimental |
Portability | GHC only |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Grisette.IR.SymPrim.Data.Prim.InternedTerm.InternedCtors
Description
Documentation
constructUnary :: forall tag arg t. (SupportedPrim t, UnaryOp tag arg t, Typeable tag, Typeable t, Show tag) => tag -> Term arg -> Term t Source #
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 #
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 #
symTerm :: forall t. (SupportedPrim t, Typeable t) => TypedSymbol t -> Term t Source #
sinfosymTerm :: (SupportedPrim t, Typeable t, Typeable a, Ord a, Lift a, NFData a, Show a, Hashable a) => Text -> a -> Term t Source #
iinfosymTerm :: (SupportedPrim t, Typeable t, Typeable a, Ord a, Lift a, NFData a, Show a, Hashable a) => Text -> Int -> a -> Term t Source #
addNumTerm :: (SupportedPrim a, Num a) => Term a -> Term a -> Term a Source #
uminusNumTerm :: (SupportedPrim a, Num a) => Term a -> Term a Source #
timesNumTerm :: (SupportedPrim a, Num a) => Term a -> Term a -> Term a Source #
absNumTerm :: (SupportedPrim a, Num a) => Term a -> Term a Source #
signumNumTerm :: (SupportedPrim a, Num a) => Term a -> Term a Source #
andBitsTerm :: (SupportedPrim a, Bits a) => Term a -> Term a -> Term a Source #
orBitsTerm :: (SupportedPrim a, Bits a) => Term a -> Term a -> Term a Source #
xorBitsTerm :: (SupportedPrim a, Bits a) => Term a -> Term a -> Term a Source #
complementBitsTerm :: (SupportedPrim a, Bits a) => Term a -> Term a Source #
shiftLeftTerm :: (SupportedPrim a, Integral a, FiniteBits a, SymShift a) => Term a -> Term a -> Term a Source #
shiftRightTerm :: (SupportedPrim a, Integral a, FiniteBits a, SymShift a) => Term a -> Term a -> Term a Source #
rotateLeftTerm :: (SupportedPrim a, Integral a, FiniteBits a, SymRotate a) => Term a -> Term a -> Term a Source #
rotateRightTerm :: (SupportedPrim a, Integral a, FiniteBits a, SymRotate a) => Term a -> Term a -> Term a Source #
toSignedTerm :: (SupportedPrim u, SupportedPrim s, SignConversion u s) => Term u -> Term s Source #
toUnsignedTerm :: (SupportedPrim u, SupportedPrim s, SignConversion u s) => Term s -> Term u Source #
bvconcatTerm :: (forall n. (KnownNat n, 1 <= n) => SupportedPrim (bv n), Typeable bv, KnownNat a, KnownNat b, KnownNat (a + b), 1 <= a, 1 <= b, 1 <= (a + b), SizedBV bv) => Term (bv a) -> Term (bv b) -> Term (bv (a + b)) Source #
bvselectTerm :: forall bv n ix w p q. (forall n. (KnownNat n, 1 <= n) => SupportedPrim (bv n), Typeable bv, KnownNat n, KnownNat ix, KnownNat w, 1 <= n, 1 <= w, (ix + w) <= n, SizedBV bv) => p ix -> q w -> Term (bv n) -> Term (bv w) Source #
bvextendTerm :: forall bv l r proxy. (forall n. (KnownNat n, 1 <= n) => SupportedPrim (bv n), Typeable bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r, SizedBV bv) => Bool -> proxy r -> Term (bv l) -> Term (bv r) Source #
bvsignExtendTerm :: forall bv l r proxy. (forall n. (KnownNat n, 1 <= n) => SupportedPrim (bv n), Typeable bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r, SizedBV bv) => proxy r -> Term (bv l) -> Term (bv r) Source #
bvzeroExtendTerm :: forall bv l r proxy. (forall n. (KnownNat n, 1 <= n) => SupportedPrim (bv n), Typeable bv, KnownNat l, KnownNat r, 1 <= l, 1 <= r, l <= r, SizedBV bv) => proxy r -> Term (bv l) -> Term (bv r) Source #
tabularFunApplyTerm :: (SupportedPrim a, SupportedPrim b) => Term (a =-> b) -> Term a -> Term b Source #
generalFunApplyTerm :: (SupportedPrim a, SupportedPrim b) => Term (a --> b) -> Term a -> Term b Source #
divIntegralTerm :: (SupportedPrim a, Integral a) => Term a -> Term a -> Term a Source #
modIntegralTerm :: (SupportedPrim a, Integral a) => Term a -> Term a -> Term a Source #
quotIntegralTerm :: (SupportedPrim a, Integral a) => Term a -> Term a -> Term a Source #
remIntegralTerm :: (SupportedPrim a, Integral a) => Term a -> Term a -> Term a Source #
divBoundedIntegralTerm :: (SupportedPrim a, Bounded a, Integral a) => Term a -> Term a -> Term a Source #
modBoundedIntegralTerm :: (SupportedPrim a, Bounded a, Integral a) => Term a -> Term a -> Term a Source #
quotBoundedIntegralTerm :: (SupportedPrim a, Bounded a, Integral a) => Term a -> Term a -> Term a Source #
remBoundedIntegralTerm :: (SupportedPrim a, Bounded a, Integral a) => Term a -> Term a -> Term a Source #