packages feed

grisette-0.3.1.1: src/Grisette/IR/SymPrim/Data/Prim/InternedTerm/TermUtils.hs-boot

{-# LANGUAGE RankNTypes #-}

module Grisette.IR.SymPrim.Data.Prim.InternedTerm.TermUtils
  ( identity,
    identityWithTypeRep,
    introSupportedPrimConstraint,
    extractSymbolicsTerm,
    castTerm,
    pformat,
    termSize,
    termsSize,
  )
where

import qualified Data.HashSet as S
import Data.Interned (Id)
import Data.Typeable (TypeRep, Typeable)
import {-# SOURCE #-} Grisette.IR.SymPrim.Data.Prim.InternedTerm.Term
  ( SomeTypedSymbol,
    SupportedPrim,
    Term,
  )

identity :: Term t -> Id
identityWithTypeRep :: forall t. Term t -> (TypeRep, Id)
introSupportedPrimConstraint :: forall t a. Term t -> ((SupportedPrim t) => a) -> a
extractSymbolicsTerm :: (SupportedPrim a) => Term a -> S.HashSet SomeTypedSymbol
castTerm :: forall a b. (Typeable b) => Term a -> Maybe (Term b)
pformat :: forall t. (SupportedPrim t) => Term t -> String
termsSize :: [Term a] -> Int
termSize :: Term a -> Int