!     General lattice tools(c) 2015 Oleg GrenrusBSD3"Oleg Grenrus <oleg.grenrus@iki.fi>None+-./BTest for equivalence.Fequivalent (LMeet (LVar 'a') (LVar 'b')) (LMeet (LVar 'b') (LVar 'a'))True3equivalent (LVar 'a') (LMeet (LVar 'a') (LVar 'a'))TrueFequivalent (LMeet (LVar 'a') (LVar 'b')) (LMeet (LVar 'b') (LVar 'b'))FalseTest for preorder.  a "d b ! a "( b "a b ! a "a a "' b/preorder (LVar 'a' `LMeet` LVar 'b') (LVar 'a')True/preorder (LVar 'a') (LVar 'a' `LMeet` LVar 'b')False Return 8 if for some variable assigment expression evaluates to .  !"#     !"# Safe-Inferred+0     Safe-Inferred$A list of SPDX licenses identifiers.See  http://spdx.org/licenses/. Safe-Inferred#Lookup newer licenses we know aboutlookupLicenseRange "MIT"["MIT"]lookupLicenseRange "GPL-2.0"["GPL-2.0","GPL-3.0"]lookupLicenseRange "LGPL-2.0""["LGPL-2.0","LGPL-2.1","LGPL-3.0"]$%&'()$%&'() Safe-InferredParse SPDX License Expression!parseExpression "LGPL-2.1 OR MIT"Q[EDisjunction (ELicense False "LGPL-2.1" Nothing) (ELicense False "MIT" Nothing)]*+,-./012345678*+,-./012345678%SPDX licenses and expression language(c) 2015 Oleg GrenrusBSD3"Oleg Grenrus <oleg.grenrus@iki.fi>None %' satisfies a b ' "a a "e b "a a "' b = bCunsafeParseExpr "GPL-3.0" `satisfies` unsafeParseExpr "ISC AND MIT"FalseIunsafeParseExpr "Zlib" `satisfies` unsafeParseExpr "ISC AND MIT AND Zlib"TrueNunsafeParseExpr "(MIT OR GPL-2.0)" `satisfies` unsafeParseExpr "(ISC AND MIT)"TrueSunsafeParseExpr "(MIT AND GPL-2.0)" `satisfies` unsafeParseExpr "(MIT AND GPL-2.0)"TrueSunsafeParseExpr "(MIT AND GPL-2.0)" `satisfies` unsafeParseExpr "(ISC AND GPL-2.0)"False9:;package licenselicense policy  9:;<      !"#$$%&'()*+,-./0123456789:;<=>?@@AB spdx-0.0.1.0Distribution.SPDX.LatticeSyntaxDistribution.SPDXDistribution.SPDX.TypesDistribution.SPDX.LicensesDistribution.SPDX.RangesDistribution.SPDX.Parser LatticeSyntaxLMeetLJoinLBoundLVarfreeVarsdual equivalentpreorder satisfiableLicenseExpression EDisjunction EConjunctionELicenseLicenseExceptionId LicenseId LicenseRef lrDocument lrLicenselicenseExceptionslicenseIdentifiers licenseRangeslookupLicenseRangeparseExpressionunsafeParseExpr satisfiesghc-prim GHC.TypesTrueEvalunEvalrunEval evalLatticeguess$fMonadLatticeSyntax$fApplicativeLatticeSyntaxranges'nullOrSingleton restIsNumberprefprefixeslongerThanSingletonlicenselicenseExceptionelicense elicenseWithelicenseAndNewerelicenseWithAndNewer elicenseRefelicenseDocRefidString skipSpaces1parensterminal conjunction disjunction expressionLic exprToLSLic