úÎ9W4;8      !"#$%&'()*+,-./01234567Safe05)Opaque license exception identifier type.Opaque license identifier type.89 89 89 Safe :;<  :;<Safe$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/.=>=>SafeParse 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)]?@ABCDEFGHIJKLM?@ABCDEFGHIJKLM?4Safe#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"]NOPQRSNOPQRSGeneral lattice tools(c) 2015 Oleg GrenrusBSD3"Oleg Grenrus <oleg.grenrus@iki.fi>Safe0234 Test 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'))False!Test 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 T8 if for some variable assigment expression evaluates to T.ULike if$, but where the test can be monadic.V The lazy WC operator lifted to a monad. If the first argument evaluates to T. the second argument will not be evaluated. uJust True ||^ undefined == Just True Just False ||^ Just True == Just True Just False ||^ Just False == Just FalseX The lazy YC operator lifted to a monad. If the first argument evaluates to Z. the second argument will not be evaluated. vJust False &&^ undefined == Just False Just True &&^ Just True == Just True Just True &&^ Just False == Just False[\] !"^_`UVX#$%&'()  !"  !"[\] !"^_`UVX#$%&'()%SPDX licenses and expression language(c) 2015 Oleg GrenrusBSD3"Oleg Grenrus <oleg.grenrus@iki.fi>Safe2 %'æ 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)"False3Check wheather two  are equivalent.TunsafeParseExpr "(MIT AND GPL-2.0)" `equivalent` unsafeParseExpr "(GPL-2.0 AND MIT)"TrueHunsafeParseExpr "MIT" `equivalent` unsafeParseExpr "MIT OR BSD-3-Clause"Falseabc2package licenselicense policy3 23    23abc23d      !"#$%&'()*+,-./0123456789':;<=  >?@ABCDEFGHIJKL@MNOPQRSTUVWXYZ[W\]^W\_WX`aabcdeffgh#spdx-0.2.2.0-6sTWw4uv4IO3OJf6P0KC10 Data.SPDXData.SPDX.LatticeSyntaxData.SPDX.TypesData.SPDX.PrettyData.SPDX.LicensesData.SPDX.ParserData.SPDX.RangesLicenseExpressionELicense EConjunction EDisjunctionLicenseExceptionId LicenseId LicenseRef lrDocument lrLicense getLicenseIdgetLicenseExceptionIdprettyLicenseIdprettyLicenseExceptionIdprettyLicenseRefprettyLicenseExpressionlicenseExceptionslicenseIdentifiers mkLicenseId isOsiApprovedlicensesparseExpressionunsafeParseExpr licenseRangeslookupLicenseRange LatticeSyntaxLVarLBoundLJoinLMeetfreeVarsdual equivalentpreorder satisfiable$fMonadPlusEval $fMonadEval$fAlternativeEval$fApplicativeEval $fFunctorEval$fMonadLatticeSyntax$fApplicativeLatticeSyntax$fEqLatticeSyntax$fOrdLatticeSyntax$fReadLatticeSyntax$fShowLatticeSyntax$fFunctorLatticeSyntax$fFoldableLatticeSyntax$fTraversableLatticeSyntax$fDataLatticeSyntax satisfies$fEqLic$fOrdLic $fShowLic $fReadLic pprLicensepprExprparensfstOf3trdOf3ap'<<licenselicenseException licenseRef mkLicenseelicense elicenseRefidString skipSpaces1terminal conjunction disjunction expressionranges'nullOrSingleton restIsNumberprefprefixeslongerThanSingletonghc-prim GHC.TypesTrueifM||^ GHC.Classes||&&^&&FalseEvalunEvalrunEval evalLatticeguessLic exprToLSLic