jukebox-0.1.5: 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 (Seq (Form a)) 
Or (Seq (Form a)) 

nt :: Form a -> Form a Source

conj :: List f => f (Form a) -> Form a Source

disj :: List f => f (Form a) -> Form a Source

unique :: List f => f (Form a) -> Form a Source

runSat :: (Hashable b, Ord b) => Watch a -> [b] -> Sat a b c -> IO c Source

runSat1 :: (Ord a, Hashable a) => Watch a -> Sat1 a b -> IO b Source

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

solve :: (Ord a, Hashable a) => [Signed a] -> Sat1 a Bool Source

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

modelValue :: (Ord a, Hashable a) => a -> Sat1 a Bool Source

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

flatten :: (Ord a, Hashable a) => Form a -> Sat1 a (Seq (Seq Lit)) Source

lit :: (Ord a, Hashable a) => Signed a -> Sat1 a Lit Source

var :: (Ord a, Hashable a) => a -> Sat1 a Lit Source