jukebox-0.2.3: A first-order reasoning toolbox

Safe HaskellNone
LanguageHaskell98

Jukebox.HighSat

Documentation

newtype Sat1 a b Source

Constructors

Sat1 

Fields

runSat1_ :: ReaderT Solver (ReaderT (Watch a) (StateT (Map a Lit) IO)) b
 

newtype Sat a b c Source

Constructors

Sat 

Fields

runSat_ :: ReaderT (Watch a) (StateT (Map b (SatState a)) IO) c
 

Instances

data SatState a Source

Constructors

SatState Solver (Map a Lit) 

type Watch a = a -> Sat1 a () Source

data Form a Source

Constructors

Lit (Signed a) 
And [Form a] 
Or [Form a] 

nt :: Form a -> Form a Source

unique :: [Form a] -> Form a Source

runSat :: Ord b => Watch a -> [b] -> Sat a b c -> IO c Source

runSat1 :: Ord a => Watch a -> Sat1 a b -> IO b Source

atIndex :: (Ord a, Ord b) => b -> Sat1 a c -> Sat a b c Source

solve :: Ord a => [Signed a] -> Sat1 a Bool Source

model :: Ord a => Sat1 a (a -> Bool) Source

modelValue :: Ord a => a -> Sat1 a Bool Source

addForm :: Ord a => Form a -> Sat1 a () Source

flatten :: Ord a => Form a -> Sat1 a [[Lit]] Source

lit :: Ord a => Signed a -> Sat1 a Lit Source

var :: Ord a => a -> Sat1 a Lit Source