packages feed

toysolver-0.7.0: src/ToySolver/SAT/TheorySolver.hs

-----------------------------------------------------------------------------
-- |
-- Module      :  ToySolver.SAT.TheorySolver
-- Copyright   :  (c) Masahiro Sakai 2012
-- License     :  BSD-style
--
-- Maintainer  :  masahiro.sakai@gmail.com
-- Stability   :  provisional
-- Portability :  portable
--
-----------------------------------------------------------------------------
module ToySolver.SAT.TheorySolver
  ( TheorySolver (..)
  , emptyTheory
  ) where

import ToySolver.SAT.Types

data TheorySolver =
  TheorySolver
  { thAssertLit :: (Lit -> IO Bool) -> Lit -> IO Bool
  , thCheck     :: (Lit -> IO Bool) -> IO Bool
  , thExplain   :: Maybe Lit -> IO [Lit]
  , thPushBacktrackPoint :: IO ()
  , thPopBacktrackPoint  :: IO ()
  , thConstructModel :: IO ()
  }

emptyTheory :: TheorySolver
emptyTheory =
  TheorySolver
  { thAssertLit = \propagate lit -> return True
  , thCheck = \propagate -> return True
  , thExplain = \_ -> error "should not happen"
  , thPushBacktrackPoint = return ()
  , thPopBacktrackPoint  = return ()
  , thConstructModel = return ()
  }