spdx-0.2.1.0: SPDX license expression language

Copyright(c) 2015 Oleg Grenrus
LicenseBSD3
MaintainerOleg Grenrus <oleg.grenrus@iki.fi>
Safe HaskellSafe
LanguageHaskell98

Data.SPDX.LatticeSyntax

Description

Inspired by Simple SMT Solver.

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

Synopsis

Documentation

equivalent :: Eq 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 :: Eq 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 :: Eq a => LatticeSyntax a -> Bool Source

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