spdx-1.0.0.3: SPDX license expression language, Extras
Safe HaskellSafe-Inferred
LanguageHaskell98

Distribution.SPDX.Extra.Internal

Description

Inspired by Simple SMT Solver.

In future this module will probably be moved into separate package.

Synopsis

Documentation

data LatticeSyntax a Source #

Instances

Instances details
Foldable LatticeSyntax Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Methods

fold :: Monoid m => LatticeSyntax m -> m

foldMap :: Monoid m => (a -> m) -> LatticeSyntax a -> m

foldMap' :: Monoid m => (a -> m) -> LatticeSyntax a -> m

foldr :: (a -> b -> b) -> b -> LatticeSyntax a -> b

foldr' :: (a -> b -> b) -> b -> LatticeSyntax a -> b

foldl :: (b -> a -> b) -> b -> LatticeSyntax a -> b

foldl' :: (b -> a -> b) -> b -> LatticeSyntax a -> b

foldr1 :: (a -> a -> a) -> LatticeSyntax a -> a

foldl1 :: (a -> a -> a) -> LatticeSyntax a -> a

toList :: LatticeSyntax a -> [a]

null :: LatticeSyntax a -> Bool

length :: LatticeSyntax a -> Int

elem :: Eq a => a -> LatticeSyntax a -> Bool

maximum :: Ord a => LatticeSyntax a -> a

minimum :: Ord a => LatticeSyntax a -> a

sum :: Num a => LatticeSyntax a -> a

product :: Num a => LatticeSyntax a -> a

Traversable LatticeSyntax Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Methods

traverse :: Applicative f => (a -> f b) -> LatticeSyntax a -> f (LatticeSyntax b)

sequenceA :: Applicative f => LatticeSyntax (f a) -> f (LatticeSyntax a)

mapM :: Monad m => (a -> m b) -> LatticeSyntax a -> m (LatticeSyntax b)

sequence :: Monad m => LatticeSyntax (m a) -> m (LatticeSyntax a)

Applicative LatticeSyntax Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Functor LatticeSyntax Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Methods

fmap :: (a -> b) -> LatticeSyntax a -> LatticeSyntax b

(<$) :: a -> LatticeSyntax b -> LatticeSyntax a

Monad LatticeSyntax Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Data a => Data (LatticeSyntax a) Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LatticeSyntax a -> c (LatticeSyntax a)

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (LatticeSyntax a)

toConstr :: LatticeSyntax a -> Constr

dataTypeOf :: LatticeSyntax a -> DataType

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (LatticeSyntax a))

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (LatticeSyntax a))

gmapT :: (forall b. Data b => b -> b) -> LatticeSyntax a -> LatticeSyntax a

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LatticeSyntax a -> r

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LatticeSyntax a -> r

gmapQ :: (forall d. Data d => d -> u) -> LatticeSyntax a -> [u]

gmapQi :: Int -> (forall d. Data d => d -> u) -> LatticeSyntax a -> u

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LatticeSyntax a -> m (LatticeSyntax a)

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LatticeSyntax a -> m (LatticeSyntax a)

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LatticeSyntax a -> m (LatticeSyntax a)

Read a => Read (LatticeSyntax a) Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Methods

readsPrec :: Int -> ReadS (LatticeSyntax a)

readList :: ReadS [LatticeSyntax a]

readPrec :: ReadPrec (LatticeSyntax a)

readListPrec :: ReadPrec [LatticeSyntax a]

Show a => Show (LatticeSyntax a) Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Methods

showsPrec :: Int -> LatticeSyntax a -> ShowS

show :: LatticeSyntax a -> String

showList :: [LatticeSyntax a] -> ShowS

Eq a => Eq (LatticeSyntax a) Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

Methods

(==) :: LatticeSyntax a -> LatticeSyntax a -> Bool

(/=) :: LatticeSyntax a -> LatticeSyntax a -> Bool

Ord a => Ord (LatticeSyntax a) Source # 
Instance details

Defined in Distribution.SPDX.Extra.Internal

equivalent :: Ord a => LatticeSyntax a -> LatticeSyntax a -> Bool Source #

Test for equivalence.

>>> equivalent (LMeet (LVar 'a') (LVar 'b')) (LMeet (LVar 'b') (LVar 'a'))
True
>>> equivalent (LVar 'a') (LMeet (LVar 'a') (LVar 'a'))
True
>>> equivalent (LMeet (LVar 'a') (LVar 'b')) (LMeet (LVar 'b') (LVar 'b'))
False

preorder :: Ord a => LatticeSyntax a -> LatticeSyntax a -> Bool Source #

Test for preorder.

 a ≤ b ⇔ a ∨ b ≡ b ⇔ a ≡ a ∧ b
>>> preorder (LVar 'a' `LMeet` LVar 'b') (LVar 'a')
True
>>> preorder (LVar 'a') (LVar 'a' `LMeet` LVar 'b')
False

satisfiable :: Ord a => LatticeSyntax a -> Bool Source #

Return True if for some variable assigment expression evaluates to True.