úÎØÀ¢ÿz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ Ž ‘ ’ “ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù úûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` a b c d e f g h i j k l m n o p q rstuvwxy.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe1O5A naked possibly-negated Atom, present in the target . The literals -1 and 1 are dedicated for the constant z and the constant { respectively.The z constant. The literal -1 is dedicated for it.The { constant. The literal 1 is dedicated for it..© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe17;=>?FQSTV? A conjunction of clauses cA disjunction of possibly negated atoms. Negated atoms are represented by negating the identifier.5Extract the (possibly negated) atoms referenced by a  .A formula with no clausesAssert a literal The boolean not operation)Derivation of the Tseitin transformation: /O "a ¬A (O !’ ¬A) & (¬O !’ A) (¬O | ¬A) & (O | A)  The boolean and operation)Derivation of the Tseitin transformation: ”O "a (A & B & C) (O !’ (A & B & C)) & (¬O !’ ¬(A & B & C)) (¬O | (A & B & C)) & (O | ¬(A & B & C)) (¬O | A) & (¬O | B) & (¬O | C) & (O | ¬A | ¬B | ¬C)  The boolean or operation)Derivation of the Tseitin transformation: ºO "a (A | B | C) (O !’ (A | B | C)) & (¬O !’ ¬(A | B | C)) (¬O | (A | B | C)) & (O | ¬(A | B | C)) (¬O | A | B | C) & (O | (¬A & ¬B & ¬C)) (¬O | A | B | C) & (O | ¬A) & (O | ¬B) & (O | ¬C)  The boolean xor operation)Derivation of the Tseitin transformation: `O "a A "• B O "a ((¬A & B) | (A & ¬B)) (O !’ ((¬A & B) | (A & ¬B))) & (¬O !’ ¬((¬A & B) | (A & ¬B))) Left hand side: ŸO !’ ((¬A & B) | (A & ¬B)) ¬O | ((¬A & B) | (A & ¬B)) ¬O | ((¬A | A) & (¬A | ¬B) & (A | B) & (¬B | B)) ¬O | ((¬A | ¬B) & (A | B)) (¬O | ¬A | ¬B) & (¬O | A | B) Right hand side: ‰¬O !’ ¬((¬A & B) | (A & ¬B)) O | ¬((¬A & B) | (A & ¬B)) O | (¬(¬A & B) & ¬(A & ¬B)) O | ((A | ¬B) & (¬A | B)) (O | ¬A | B) & (O | A | ¬B) Result: <(¬O | ¬A | ¬B) & (¬O | A | B) & (O | ¬A | B) & (O | A | ¬B) qwith redundant clauses, cf. discussion in Een and Sorensen, Translating Pseudo Boolean Constraints ..., p. 7 http://minisat.se/Papers.html The boolean  else-then-if or mux operation)Derivation of the Tseitin transformation: QO "a (F & ¬P) | (T & P) (O !’ ((F & ¬P) | (T & P))) & (¬O !’ ¬((F & ¬P) | (T & P))) Left hand side: ²O !’ ((F & ¬P) | (T & P)) ¬O | ((F & ¬P) | (T & P)) ¬O | ((F | T) & (F | P) & (T | ¬P) & (¬P | P)) ¬O | ((F | T) & (F | P) & (T | ¬P)) (¬O | F | T) & (¬O | F | P) & (¬O | T | ¬P) Right hand side: ˆ¬O !’ ¬((F & ¬P) | (T & P)) O | ¬((F & ¬P) | (T & P)) O | (¬(F & ¬P) & ¬(T & P)) O | ((¬F | P) & (¬T | ¬P)) (O | ¬F | P) & (O | ¬T | ¬P) Result: K(¬O | F | T) & (¬O | F | P) & (¬O | T | ¬P) & (O | ¬F | P) & (O | ¬T | ¬P) OutputInputOutputInputsOutputInputsOutputInputInputOutput False branch True branchPredicate/selector      .© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafeB! |}~€‚ƒ„….© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNoneD+†‡.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy17;=>?FQSTV_ÓˆAn explicit prenex quantifier%"WDIMACS file format pretty printer;This is used to generate the problem statement for a given MaxSAT  (TODO).*"QDIMACS file format pretty printer;This is used to generate the problem statement for a given 6 ./!DIMACS file format pretty printer;This is used to generate the problem statement for a given = .6A (quantified) boolean formula.‰:a set indicating which literals are universally quantifiedŠ The rest of the information, in =‹!The id of the last atom allocatedŒa set of clauses to asserta mapping used during Bit expansion?Run a =U-generating state computation. Useful e.g. in ghci for disambiguating the type of a Ž, 8 value.@Run a =%-generating state computation in the > monad. Useful e.g. in ghci for disambiguating the type of a Ž, 8 value.ARun a =9-generating state computation and return the respective /* output. Useful for testing and debugging.ERun a 6U-generating state computation. Useful e.g. in ghci for disambiguating the type of a Ž, 3 value.FRun a 6%-generating state computation in the > monad. Useful e.g. in ghci for disambiguating the type of a Ž, 3 value.GRun a 69-generating state computation and return the respective ** output. Useful for testing and debugging.I Generate a  out of a / problem.J Generate a  out of a * problem.K Generate a  out of a % problem.‘Àthe name is wrong (Does it return Clauses? No - it returns IntSets.) and it means extra work (traversing, and re-building, the full collection). Or is this fused away (because of Coercible)?(Specified to be 1 "d n < 2^63'%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK'=>89:;<?@ABCD67345EFGH/012*+,-.%&'()IJKˆ’“””%&'()*+,-./01234567‰Š89:;<=>‹Œ.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe1QRVeñUA U s m7 is responsible for invoking a solver and returning a V! and a map of determined results.s is typically = or 6m is typically • UVWXYZ[\]^ Z[\]^VWXYUVWXYZ[\].© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafeFQTVj¼fNThis class describes data types that can be marshaled to or from a SAT solver.h>Return a value based on the solution if one can be determined.fgihfghifghi.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafeno–0Problem file extension including the dot, if any1Solution file extension including the dot, if any–—.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafesÑ| This is a U for 6 problems that runs the depqbf solver using the current PATH&, it tries to run an executable named depqbf.} This is a U for 60 problems that lets you specify the path to the depqbf executable.|}|}.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafez‘~U for =# problems that tries to invoke the minisat executable from the PATHU for =# problems that tries to invoke the  cryptominisat executable from the PATH€U for =4 problems that tries to invoke a program that takes minisat compatible arguments.The ˜& refers to the path to the executable.~€~€.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone|’|}~€ .© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe7<ST€œ‚rInstances for this class for product-like types can be automatically derived for any type that is an instance of ™.‚ƒ„…†‡ˆ‚ƒƒ‡†„…ˆ‚ƒƒ„… .© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy017;<=FQSTV”2” The normal šO operators in Haskell are not overloaded. This provides a richer set that are.rInstances for this class for product-like types can be automatically derived for any type that is an instance of ™•Lift a š– – = • {— — = • z˜Logical conjunction.™#Logical disjunction (inclusive or).šLogical implication.›Logical negationœ*The logical conjunction of several values.*The logical disjunction of several values.ž2The negated logical conjunction of several values. ž = › . œŸ2The negated logical disjunction of several values. Ÿ = › .  IThe logical conjunction of the mapping of a function over several values.¡IThe logical disjunction of the mapping of a function over several values.¢ Exclusive-or£8Choose between two alternatives based on a selector bit.¤A ¤r provides a reference to a possibly indeterminate boolean value that can be determined by an external SAT solver.«Assert claims that ¤ must be –: in any satisfying interpretation of the current problem.› Convert a ¤ to a .£ False branch True branchPredicate/selector branch”›™˜œ¡ •¢£š–—žŸ¤¨¥¦§©ª«¤¥¦§¨©ª«”•–—˜™š›œžŸ ¡¢£•˜™› ¡¢”•–—˜™š›œžŸ ¡¢£•˜™› ¡¢œžŸ ¡¢£¤¥¦§¨©ª˜3™2š0ž3Ÿ2SafeFT–a ¶·¸¹º»¼½¾¿ÀÁ¶¤Safe;=>?–ó ÂÃÄÅÆÇÈÉÊ .© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe 7;<=FSTœÍOInstances for this class for arbitrary types can be automatically derived from ™.Î,Compare for equality within the SAT problem.Ï.Compare for inequality within the SAT problem.ËÌÍÎÏÍÎÎÏËÌËÌÍÎÎÏÎ4Ï4 .© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe 7;<=FST£ÍåOInstances for this class for arbitrary types can be automatically derived from ™.æ-Compare for less-than within the SAT problem.ç9Compare for less-than or equal-to within the SAT problem.è<Compare for greater-than or equal-to within the SAT problem.é0Compare for greater-than within the SAT problem.ðLexicographic orderâãäåçæèé åæçæèéâãäâãäåæçæèéæ4ç4è4é4C© Edward Kmett 2010-2015, © Eric Mertens 2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe16FTµ»úú provides the ûS method for embedding fixed with numeric encoding types into the arbitrary width ü type.þA container of 8 ¤s that i s from and hs to ¥A container of 7 ¤s that i s from and hs to ¥A container of 6 ¤s that i s from and hs to ¥A container of 5 ¤s that i s from and hs to ¥A container of 4 ¤s that i s from and hs to ¥A container of 3 ¤s that i s from and hs to ¥ A container of 2 ¤s that i s from and hs to ¥ A container of 1 ¤ that i s from and hs to ¥5Compute the sum and carry bit from adding three bits.3Compute the sum and carry bit from adding two bits.¦Zip the component bits of a ü& extending the shorter argument with — values.§Add two ü$ values given an incoming carry bit.Compute the sum of a source of ü values.Optimization of " enabled when summing individual ¤s.Predicate for odd-valued üs.Predicate for even-valued üs. (sum, carry) (sum, carry)úûüýþÿ          þÿüýúû úûüý¨þÿ     Safe·!]^_]^_Safe·q`abcdefghijklmnopq Safe·ò'¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊ`abcdefghijklmnopq'¶·¸¹º»¼À½¾¿ÁÂÅÃÄÆÇÈÉÊ`fgqhijnkoplmabcde© Eric Mertens 2010-2014BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe1FT¼~rEncoding of the full range of © values.tList of r/ intended to be used as the representation for ª.rsttrsxwvurs.© Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone¾˜%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKUVWXYZ[\]^fgih|}~€‚ƒ„…†‡ˆ”›™˜œ¡ •¢£š–—žŸ¤¨¥¦§©ª«ËÌÍÎÏâãäåçæèéúûüýþÿ     « !!"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLLMNOPQRRSTUVWXYZ[\]^_`abcdefghijklmmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“ ” • – — ˜ ™ š › œ ž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ ÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜ Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ                !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{{|}~€‚ƒ„‚ƒ…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥‚ƒ¦§¨©ª«¬‚ƒ­ ® ¯ ° ± ² ³ ´ µ ¶È·¸¹º»‚ƒ¼½¾¿#ersatz-0.4.2-6QBuVeLZpBT9LFsuj3pI12Ersatz.Internal.LiteralErsatz.Internal.FormulaErsatz.ProblemErsatz.Solution Ersatz.CodecErsatz.Solver.DepQBFErsatz.Solver.Minisat Ersatz.SolverErsatz.Variable Ersatz.BitErsatz.RelationErsatz.EquatableErsatz.Orderable Ersatz.BitsErsatz.CountingErsatz.BitCharSolverErsatz.Internal.ParserErsatz.Internal.StableNameErsatz.Solver.CommonErsatz.Relation.DataErsatz.Relation.OpErsatz.Relation.PropErsatzLiteral literalId negateLiteral literalFalse literalTrue $fShowLiteral $fEqLiteral $fOrdLiteralFormula formulaSetClause clauseSetclauseLiterals fromLiteral formulaEmptyformulaLiteral fromClause formulaNot formulaAnd formulaOr formulaXor formulaMux formulaFAS formulaFAC $fShowClause$fMonoidClause$fSemigroupClause $fShowFormula$fMonoidFormula$fSemigroupFormula $fEqClause $fOrdClause $fEqFormula $fOrdFormulaWDIMACSwdimacsCommentswdimacsNumVariableswdimacsTopWeightwdimacsClausesQDIMACSqdimacsCommentsqdimacsNumVariablesqdimacsQuantifiedqdimacsClausesDIMACSdimacsCommentsdimacsNumVariables dimacsClausesHasQSATqsat universalsQSATHasSATsatlastAtomformula stableMapSATrunSATrunSAT' dimacsSAT literalExists assertFormulagenerateLiteralrunQSATrunQSAT' qdimacsQSAT literalForalldimacsqdimacswdimacs $fDefaultSAT $fShowSAT $fHasSATSAT $fDefaultQSAT $fHasSATQSAT $fHasQSATQSAT $fDIMACSSAT $fQDIMACSQSAT $fShowQSATResultUnsolved Unsatisfied SatisfiedSolutionsolutionLiteralsolutionStableName solutionFrom$fBoundedResult $fEnumResult $fEqResult $fOrdResult $fIxResult $fShowResult $fReadResultCodecDecodeddecodeencode $fCodecTree $fCodecSeq $fCodecMaybe $fCodecMap $fCodecIntMap$fCodecHashMap $fCodecEither $fCodecArray $fCodec[]$fCodec(,,,,,,,)$fCodec(,,,,,,)$fCodec(,,,,,) $fCodec(,,,,) $fCodec(,,,) $fCodec(,,) $fCodec(,) $fCodec()$fCodecLiteraldepqbf depqbfPathminisat cryptominisat minisatPath solveWithVariable literally GVariable gliterallyexistsforallgenericLiterally $fGVariableM1$fGVariable:*: $fGVariableU1$fVariable(,,,,,,)$fVariable(,,,,,)$fVariable(,,,,)$fVariable(,,,)$fVariable(,,) $fVariable(,)$fVariableLiteral $fGVariableK1Booleanbooltruefalse&&||==>notandornandnorallanyxorchooseBitAndXorMuxNotVarRunassert $fVariableBit $fShowBit $fGBooleanM1 $fGBoolean:*: $fGBooleanU1 $fGBooleanV1 $fBooleanBool $fGBooleanK1 $fCodecBit $fBooleanBitRelationrelationsymmetric_relationbuild buildFromidentityboundsindicesassocselems!tablemirror complement differenceunionproductpower intersectionreflexive_closuresymmetric_closure GEquatable===# Equatable===/==$fGEquatableM1$fGEquatable:+:$fGEquatable:*:$fGEquatableV1$fGEquatableU1$fGEquatableK1$fEquatableEither $fEquatable[]$fEquatableMaybe$fEquatable(,,,,,,)$fEquatable(,,,,,)$fEquatable(,,,,)$fEquatable(,,,)$fEquatable(,,)$fEquatable(,)$fEquatableIntMap$fEquatableMap$fEquatableBit GOrderable=?>?$fGOrderableM1$fGOrderable:+:$fGOrderable:*:$fGOrderableV1$fGOrderableU1$fGOrderableK1 $fOrderable[]$fOrderableEither$fOrderableMaybe$fOrderable(,,,,,,)$fOrderable(,,,,,)$fOrderable(,,,,)$fOrderable(,,,)$fOrderable(,,)$fOrderable(,)$fOrderableBitHasBitsbitsBitsBit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1 fullAdder halfAddersumBitssumBitisOddisEven $fNumBit1 $fCodecBit1$fVariableBit1$fOrderableBit1$fEquatableBit1 $fBooleanBit1 $fNumBit2 $fCodecBit2$fVariableBit2$fOrderableBit2$fEquatableBit2 $fBooleanBit2 $fCodecBit3$fVariableBit3$fOrderableBit3$fEquatableBit3 $fBooleanBit3 $fCodecBit4$fVariableBit4$fOrderableBit4$fEquatableBit4 $fBooleanBit4 $fCodecBit5$fVariableBit5$fOrderableBit5$fEquatableBit5 $fBooleanBit5 $fCodecBit6$fVariableBit6$fOrderableBit6$fEquatableBit6 $fBooleanBit6 $fCodecBit7$fVariableBit7$fOrderableBit7$fEquatableBit7 $fBooleanBit7 $fCodecBit8$fVariableBit8$fOrderableBit8$fEquatableBit8 $fBooleanBit8 $fNumBits $fCodecBits$fOrderableBits$fEquatableBits $fShowBits $fHasBitsBits $fHasBitsBit8 $fHasBitsBit7 $fHasBitsBit6 $fHasBitsBit5 $fHasBitsBit4 $fHasBitsBit3 $fHasBitsBit2 $fHasBitsBit1 $fHasBitsBit $fShowBit1 $fGenericBit1 $fShowBit2 $fGenericBit2 $fShowBit3 $fGenericBit3 $fShowBit4 $fGenericBit4 $fShowBit5 $fGenericBit5 $fShowBit6 $fGenericBit6 $fShowBit7 $fGenericBit7 $fShowBit8 $fGenericBit8exactlyatmostatleastimpliesemptycompletetotaldisjointequals symmetricanti_symmetric irreflexive reflexiveregularregular_out_degreemax_out_degreemin_out_degreeregular_in_degree max_in_degree min_in_degree transitiveBitChar BitString$fVariableBitChar$fOrderableBitChar$fEquatableBitChar$fCodecBitChar $fShowBitCharghc-prim GHC.TypesFalseTrueParser runParsersepBysepBy1tokenstringintegernaturaleofsatisfybaseSystem.Mem.StableName StableNamemakeStableName'Quant _universals_qsatSat _lastAtom_formula _stableMap mtl-2.2.1-DscMMmDQUE6GBfOSl4qMUHControl.Monad.State.Class MonadStateData.Functor.IdentityIdentitybytestring-0.10.8.2 Data.ByteString.Builder.InternalBuilder satClausesExistsForallgetQuantIO withTempFilesresultOfGHC.IOFilePath GHC.GenericsGenericBoolrunBitGBooleangbool&&#||#gnotgallganygxorGHC.WordWord8 zipWithBitsaddBits_getBitsCharGHC.BaseString