    ---------------------------------------------------------------------------------
    -- |
    -- Module      :  Data.SBV.Internals
    -- Copyright   :  (c) Levent Erkok
    -- License     :  BSD3
    -- Maintainer  :  erkokl@gmail.com
    -- Stability   :  experimental
    --
    -- Low level functions to access the SBV infrastructure, for developers who
    -- want to build further tools on top of SBV. End-users of the library
    -- should not need to use this module.
    ---------------------------------------------------------------------------------

    module Data.SBV.Internals (
      -- * Running symbolic programs /manually/
      Result(..), SBVRunMode(..)
      -- * Internal structures useful for low-level programming
      , module Data.SBV.BitVectors.Data
      -- * Operations useful for instantiating SBV type classes
      , genLiteral, genFromCW, genMkSymVar, checkAndConvert, genParse, showModel, SMTModel(..), liftQRem, liftDMod
      -- * Polynomial operations that operate on bit-vectors
      , ites, mdp, addPoly
      -- * Compilation to C
      , compileToC', compileToCLib'
      -- * Code generation primitives
      , module Data.SBV.Compilers.CodeGen
      -- * Various math utilities around floats
      , module Data.SBV.Utils.Numeric
      ) where

    import Data.SBV.BitVectors.Data
    import Data.SBV.BitVectors.Model      (genLiteral, genFromCW, genMkSymVar)
    import Data.SBV.BitVectors.Splittable (checkAndConvert)
    import Data.SBV.BitVectors.Model      (liftQRem, liftDMod)
    import Data.SBV.Compilers.C           (compileToC', compileToCLib')
    import Data.SBV.Compilers.CodeGen
    import Data.SBV.SMT.SMT               (genParse, showModel)
    import Data.SBV.Tools.Polynomial      (ites, mdp, addPoly)
    import Data.SBV.Utils.Numeric

    {-# ANN module ("HLint: ignore Use import/export shortcut" :: String) #-}