ɷr      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNonersrr. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe tuvwxyz{|}~ tuvwxyz|}~ tuvwxyz{|}~. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe05A naked possibly-negated Atom, present in the target  . The literals -1 and 1 are dedicated for the constant  and the constant  respectively.The  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-portableSafe069;<=DOQRT 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-portable Trustworthy069;<=DOQRTAn 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 4  .-!DIMACS file format pretty printer;This is used to generate the problem statement for a given ;  .4A (quantified) boolean formula.:a set indicating which literals are universally quantified The rest of the information, in ;!The id of the last atom allocateda 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 , 6 value.>Run a ;%-generating state computation in the > monad. Useful e.g. in ghci for disambiguating the type of a , 6 value.?Run a ;9-generating state computation and return the respective -* output. Useful for testing and debugging.CRun a 4U-generating state computation. Useful e.g. in ghci for disambiguating the type of a , 1 value.DRun a 4%-generating state computation in the > monad. Useful e.g. in ghci for disambiguating the type of a , 1 value.ERun a 49-generating state computation and return the respective (* output. Useful for testing and debugging.G Generate a  out of a - problem.H Generate a  out of a ( problem.I 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)?>#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ'#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI';<6789:=>?@AB45123CDEF-./0()*+,#$%&'GHI##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone0OPTSA S s m7 is responsible for invoking a solver and returning a T! and a map of determined results.s is typically ; or 4m is typically  STUVWXYZ[\]^ STUVWXYZ[\ XYZ[\TUVWSSTUVWXYZ[\]^. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone0Problem 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-portableNoned This is a S for 4 problems that runs the depqbf solver using the current PATH&, it tries to run an executable named depqbf.e This is a S for 40 problems that lets you specify the path to the depqbf executable.dededede. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNonefS for ;# problems that tries to invoke the minisat executable from the PATHgS for ;# problems that tries to invoke the  cryptominisat executable from the PATHhS for ;4 problems that tries to invoke a program that takes minisat compatible arguments.The & refers to the path to the executable.fghfghfghfgh. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe6:QRirInstances for this class for product-like types can be automatically derived for any type that is an instance of .ijklmnopqrstuvwxyzijklmnoijjnmkloijjklmnopqrstuvwxyz. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNoneDORT{NThis class describes data types that can be marshaled to or from a SAT solver.}>Return a value based on the solution if one can be determined.{|}~{|~}{|}~{|}~ . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNonedefgh . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy/069:;DOQRT 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   =    =  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-or8Choose 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 .-32032 . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe 69:;DQROInstances 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.44 . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe 69:;DQROInstances 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 4444 C Edward Kmett 2010-2015, Eric Mertens 2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone05DR provides the S method for embedding fixed with numeric encoding types into the arbitrary width  type.A container of 8 s that ~ s from and }s to A container of 7 s that ~ s from and }s to A container of 6 s that ~ s from and }s to A container of 5 s that ~ s from and }s to A container of 4 s that ~ s from and }s to A container of 3 s that ~ s from and }s to A container of 2 s that ~ s from and }s to A container of 1  that ~ s from and }s 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.h (sum, carry) (sum, carry)      !"#$%&'()*+,-./012345]      !"#$%&'()*+,-./012345 Eric Mertens 2010-2014BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone0DRFEncoding of the full range of  values.HList of F/ intended to be used as the representation for .FGHIJKLFGHHFGLKJIFGHIJKLNoneNOPNOPNOPNOPNoneDR QRSTUVWXYZ[ QRSTUVWXYZ[ QRSTUVWXYZ[None9;<=\]^_`a\]^_`a\]^_`aNonebcdefghijklmnopqbcdefghijklmnopqbcdefghijklmnopqNone!QRSTUVWXYZ[\]^_`abcdefghijklmnopq!QRSUTVZWXY[\^]_`abgqhijnkoplmcdef. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHISTUVWXYZ[\defghijklmno{|~} !!"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKLMNOPPQRSTUVWXYZ[\]^_`abcdefghijkklmnopqrstuvwxyz{|}~                                                                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M NOOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~{{{           {                     {Y!ersatz-0.4-Hu5mtRBRcCW5X7BwyzXE2QErsatz.Internal.LiteralErsatz.Internal.FormulaErsatz.ProblemErsatz.SolutionErsatz.Solver.DepQBFErsatz.Solver.MinisatErsatz.Variable Ersatz.Codec Ersatz.Solver Ersatz.BitErsatz.EquatableErsatz.Orderable Ersatz.BitsErsatz.BitCharErsatz.CountingErsatz.RelationErsatz.Internal.StableNameErsatz.Internal.ParserSolverErsatz.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 $fShowFormula$fMonoidFormula$fMonoidClause $fEqClause $fOrdClause $fEqFormula $fOrdFormulaWDIMACSwdimacsCommentswdimacsNumVariableswdimacsTopWeightwdimacsClausesQDIMACSqdimacsCommentsqdimacsNumVariablesqdimacsQuantifiedqdimacsClausesDIMACSdimacsCommentsdimacsNumVariables dimacsClausesHasQSATqsat universalsQSATHasSATsatlastAtomformula stableMapSATrunSATrunSAT' dimacsSAT literalExists assertFormulagenerateLiteralrunQSATrunQSAT' qdimacsQSAT literalForalldimacsqdimacswdimacs $fQDIMACSQSAT $fDIMACSSAT $fDefaultQSAT $fHasQSATQSAT $fHasSATQSAT $fDefaultSAT $fShowSAT $fHasSATSAT $fShowQSATResultUnsolved Unsatisfied SatisfiedSolutionsolutionLiteralsolutionStableName solutionFrom$fBoundedResult $fEnumResult $fEqResult $fOrdResult $fIxResult $fShowResult $fReadResultdepqbf depqbfPathminisat cryptominisat minisatPathVariable literally GVariable gliterallyexistsforallgenericLiterally$fVariable(,,,,,,)$fVariable(,,,,,)$fVariable(,,,,)$fVariable(,,,)$fVariable(,,) $fVariable(,)$fVariableLiteral $fGVariableM1 $fGVariableK1$fGVariable:*: $fGVariableU1CodecDecodeddecodeencode $fCodecTree $fCodecSeq $fCodecMaybe $fCodecMap $fCodecIntMap$fCodecHashMap $fCodecEither $fCodecArray $fCodec[]$fCodec(,,,,,,,)$fCodec(,,,,,,)$fCodec(,,,,,) $fCodec(,,,,) $fCodec(,,,) $fCodec(,,) $fCodec(,) $fCodec()$fCodecLiteral solveWithBooleanbooltruefalse&&||==>notandornandnorallanyxorchooseBitAndXorMuxNotVarRunassert $fBooleanBool $fGBooleanM1 $fGBooleanK1 $fGBoolean:*: $fGBooleanU1 $fGBooleanV1 $fCodecBit $fVariableBit $fBooleanBit $fShowBit GEquatable===# Equatable===/==$fGEquatableK1$fGEquatableM1$fGEquatable:+:$fGEquatable:*:$fGEquatableV1$fGEquatableU1$fEquatableEither $fEquatable[]$fEquatableMaybe$fEquatable(,,,,,,)$fEquatable(,,,,,)$fEquatable(,,,,)$fEquatable(,,,)$fEquatable(,,)$fEquatable(,)$fEquatableIntMap$fEquatableMap$fEquatableBit GOrderable=?>?$fGOrderableK1$fGOrderableM1$fGOrderable:+:$fGOrderable:*:$fGOrderableV1$fGOrderableU1 $fOrderable[]$fOrderableEither$fOrderableMaybe$fOrderable(,,,,,,)$fOrderable(,,,,,)$fOrderable(,,,,)$fOrderable(,,,)$fOrderable(,,)$fOrderable(,)$fOrderableBitHasBitsbitsBitsBit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1 fullAdder halfAddersumBitssumBitisOddisEven $fNumBits $fHasBitsBits $fHasBitsBit8 $fHasBitsBit7 $fHasBitsBit6 $fHasBitsBit5 $fHasBitsBit4 $fHasBitsBit3 $fHasBitsBit2 $fHasBitsBit1 $fHasBitsBit $fCodecBits$fOrderableBits$fEquatableBits $fShowBits $fNumBit2 $fNumBit1 $fCodecBit8 $fCodecBit7 $fCodecBit6 $fCodecBit5 $fCodecBit4 $fCodecBit3 $fCodecBit2 $fCodecBit1$fVariableBit8$fVariableBit7$fVariableBit6$fVariableBit5$fVariableBit4$fVariableBit3$fVariableBit2$fVariableBit1$fOrderableBit8$fOrderableBit7$fOrderableBit6$fOrderableBit5$fOrderableBit4$fOrderableBit3$fOrderableBit2$fOrderableBit1$fEquatableBit8$fEquatableBit7$fEquatableBit6$fEquatableBit5$fEquatableBit4$fEquatableBit3$fEquatableBit2$fEquatableBit1 $fBooleanBit8 $fBooleanBit7 $fBooleanBit6 $fBooleanBit5 $fBooleanBit4 $fBooleanBit3 $fBooleanBit2 $fBooleanBit1 $fShowBit1 $fGenericBit1 $fShowBit2 $fGenericBit2 $fShowBit3 $fGenericBit3 $fShowBit4 $fGenericBit4 $fShowBit5 $fGenericBit5 $fShowBit6 $fGenericBit6 $fShowBit7 $fGenericBit7 $fShowBit8 $fGenericBit8BitChar BitString$fVariableBitChar$fOrderableBitChar$fEquatableBitChar$fCodecBitChar $fShowBitCharexactlyatmostatleastRelationrelationsymmetric_relationidentitybuildboundsindicesassocselems!tablemirror complementunionproductpower intersectionimpliesemptycompletedisjointequals symmetric irreflexive reflexiveregularregular_out_degreemax_out_degreemin_out_degreeregular_in_degree max_in_degree min_in_degree transitivemakeStableName'baseSystem.Mem.StableName StableNameParser runParsersepBysepBy1tokenstringintegernegationnaturaleofsatisfyghc-prim GHC.TypesFalseTrueformulaFromListQuant _universals_qsatSat _lastAtom_formula _stableMap mtl-2.2.1-6qsR1PHUy5lL47Hpoa4jCMControl.Monad.State.Class MonadStateData.Functor.IdentityIdentitybytestring-0.10.8.1 Data.ByteString.Builder.InternalBuilder satClausesExistsForallgetQuantbCommentbClausebWClausebLine0bLineIO withTempFilesresultOf parseLiteralGHC.IOFilePathparseSolutionFile parseSolution GHC.GenericsGenericBoolrunBitGBooleangbool&&#||#gnotgallganygxorand2gunzipGHC.WordWord8 zipWithBitsaddBits_getBits boolsToNum1 boolsToNum2 boolsToNum3 boolsToNum4 boolsToNum5 boolsToNum6 boolsToNum7 boolsToNum8bitsOf numToBool boolsToNum boolToNum orderHelperunbitssumBits'mulBits fullSubtractsubBitsCharGHC.BaseString$fCodecRelationout_degree_helper