module Indexation.Predicate
where

import Indexation.Prelude hiding (not)
import Indexation.Types
import Indexation.Instances ()
import qualified Indexation.Prelude as Prelude
import qualified Indexation.Functions as Functions


negated :: Predicate a -> Predicate a
negated (Predicate fn) = Predicate (Prelude.not . fn)

inIndexSet :: IndexSet a -> Predicate (Index a)
inIndexSet indexSet = Predicate (\ index -> Functions.lookupInIndexSet index indexSet)