úÎ3/7      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  .!Like if$, but where the test can be monadic." The lazy #C operator lifted to a monad. If the first argument evaluates to  . the second argument will not be evaluated. uJust True ||^ undefined == Just True Just False ||^ Just True == Just True Just False ||^ Just False == Just False$ The lazy %C operator lifted to a monad. If the first argument evaluates to &. the second argument will not be evaluated. vJust False &&^ undefined == Just False Just True &&^ Just True == Just True Just True &&^ Just False == Just False'() *+,!"$-.   '() *+,!"$-. Safe-Inferred+0)Opaque license exception identifier type.Opaque license identifier type. /0 /0  /0 Safe-Inferred$A list of SPDX licenses identifiers.See  http://spdx.org/licenses/.Lookup  by string representationWhether license is OSI approvedSee +http://opensource.org/licenses/alphabetical A list of 7, license name and whether the license is OSI approved.See  http://spdx.org/licenses/.1212 Safe-Inferred#Lookup newer licenses we know about1lookupLicenseRange $ fromJust $ mkLicenseId "MIT"[LicenseId "MIT"]5lookupLicenseRange $ fromJust $ mkLicenseId "GPL-2.0")[LicenseId "GPL-2.0",LicenseId "GPL-3.0"]6lookupLicenseRange $ fromJust $ mkLicenseId "LGPL-2.0"@[LicenseId "LGPL-2.0",LicenseId "LGPL-2.1",LicenseId "LGPL-3.0"]345678345678 Safe-InferredParse SPDX License Expression!parseExpression "LGPL-2.1 OR MIT"y[EDisjunction (ELicense False (Right (LicenseId "LGPL-2.1")) Nothing) (ELicense False (Right (LicenseId "MIT")) Nothing)]9:;<=>?@ABCDEFG9:;<=>?@ABCDEFG%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)"FalseHIJpackage licenselicense policy  HIJK      !"#$%&'()*&+,-&+.&'/00123456789:;<=>?@ABCDEFGHIJKLMNNOP spdx-0.1.2.0Data.SPDX.LatticeSyntax Data.SPDXData.SPDX.TypesData.SPDX.LicensesData.SPDX.RangesData.SPDX.Parser LatticeSyntaxLMeetLJoinLBoundLVarfreeVarsdual equivalentpreorder satisfiableLicenseExpression EDisjunction EConjunctionELicenseLicenseExceptionId LicenseId LicenseRef lrDocument lrLicense getLicenseIdgetLicenseExceptionIdlicenseExceptionslicenseIdentifiers mkLicenseId isOsiApprovedlicenses licenseRangeslookupLicenseRangeparseExpressionunsafeParseExpr satisfiesghc-prim GHC.TypesTrueifM||^ GHC.Classes||&&^&&FalseEvalunEvalrunEval evalLatticeguess$fMonadLatticeSyntax$fApplicativeLatticeSyntaxfstOf3trdOf3ranges'nullOrSingleton restIsNumberprefprefixeslongerThanSingletonlicenselicenseExceptionelicense elicenseWithelicenseAndNewerelicenseWithAndNewer elicenseRefelicenseDocRefidString skipSpaces1parensterminal conjunction disjunction expressionLic exprToLSLic