ɴ`      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Safe-Inferred  . 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-portableSafe+5A 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-portableSafe +1246=HJKM 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)  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 Trustworthy+1246=HJKMAn 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 %  .!DIMACS file format pretty printer;This is used to generate the problem statement for a given ,  .%A (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 , ' value./Run a ,%-generating state computation in the > monad. Useful e.g. in ghci for disambiguating the type of a , ' value.0Run a ,9-generating state computation and return the respective * output. Useful for testing and debugging.4Run a %U-generating state computation. Useful e.g. in ghci for disambiguating the type of a , " value.5Run a %%-generating state computation in the > monad. Useful e.g. in ghci for disambiguating the type of a , " value.6Run a %9-generating state computation and return the respective * output. Useful for testing and debugging.8 Generate a  out of a  problem.9 Generate a  out of a  problem.: Generate a  out of a  problem.>Specified to be 1 "d n < 2^63 !"#$%&'()*+,-./0123456789:' !"#$%&'()*+,-./0123456789:',-'()*+./0123%&"#$4567 !89:# !"#$%&'()*+,-./0123456789:. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe+HIM;A ; s m7 is responsible for invoking a solver and returning a <! and a map of determined results.s is typically , or %m is typically  ;<=>?@ABCD ;<=>?@ABCD @ABCD<?>=;;<?>=@ABCD. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Safe-Inferred0Problem 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-portable Safe-Inferred13JKErInstances for this class for product-like types can be automatically derived for any type that is an instance of .EFGHIJKEFGHIJKEFJIGHKEFGHIJK. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafeL This is a ; for % problems that runs the depqbf solver using the current PATH&, it tries to run an executable named depqbf.M This is a ; for %0 problems that lets you specify the path to the depqbf executable.LMLMLMLM. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafeN; for ,# problems that tries to invoke the minisat executable from the PATHO; for ,# problems that tries to invoke the  cryptominisat executable from the PATHP; for ,4 problems that tries to invoke a program that takes minisat compatible arguments.The & refers to the path to the executable.NOPNOPNOPNOP. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe=HKMQNThis class describes data types that can be marshaled to or from a SAT solver.S>Return a value based on the solution if one can be determined.QRSTQRSTQRSTQRST . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNoneULMNOPUUU . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Trustworthy +1234=JKV 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 WLift a X X = W Y Y = W ZLogical 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. ` = ] . ^a2The negated logical disjunction of several values. a = ] . _bIThe logical conjunction of the mapping of a function over several values.cIThe logical disjunction of the mapping of a function over several values.d Exclusive-ore8Choose between two alternatives based on a selector bit.fA fr provides a reference to a possibly indeterminate boolean value that can be determined by an external SAT solver.mAssert claims that f must be X: in any satisfying interpretation of the current problem. Convert a f to a .+VWXYZ[\]^_`abcde False branch True branchPredicate/selector branchfghijklmVWXYZ[\]^_`abcdefghijklmflkjihgmVWXYZ[\]^_`abcdeVWXYZ[\]^_`abcdeflkjihgmZ[\ . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe 1234=JKpOInstances for this class for arbitrary types can be automatically derived from .q,Compare for equality within the SAT problem.r.Compare for inequality within the SAT problem.nopqr     nopqrpqrnonopqr     qr . Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe 1234=JKvOInstances for this class for arbitrary types can be automatically derived from .w-Compare for less-than within the SAT problem.x9Compare for less-than or equal-to within the SAT problem.y<Compare for greater-than or equal-to within the SAT problem.z0Compare for greater-than within the SAT problem.Lexicographic orderstuvwxyz !"#$%&'()*stuvwxyzvwxyzstustuvwxyz !"#$%&'()*wxyz C Edward Kmett 2010-2015, Eric Mertens 2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableSafe+0=K{{ provides the |S method for embedding fixed with numeric encoding types into the arbitrary width } type.A container of 8 fs that T s from and Ss to +A container of 7 fs that T s from and Ss to +A container of 6 fs that T s from and Ss to +A container of 5 fs that T s from and Ss to +A container of 4 fs that T s from and Ss to +A container of 3 fs that T s from and Ss to +A container of 2 fs that T s from and Ss to +A container of 1 f that T s from and Ss 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 Y values.-Add two }$ values given an incoming carry bit.Compute the sum of a source of } values.Optimization of " enabled when summing individual fs.Predicate for odd-valued }s.Predicate for even-valued }s.h{|}~./0123456789: (sum, carry) (sum, carry),;<-=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy{|}~}~{|]{|}~./0123456789:,;<-=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy Eric Mertens 2010-2014BSD3Edward Kmett <ekmett@gmail.com> experimental non-portable Safe-Inferred+=KEncoding of the full range of z values.List of / intended to be used as the representation for {.. Edward Kmett 2010-2014, Johan Kiviniemi 2013BSD3Edward Kmett <ekmett@gmail.com> experimental non-portableNone !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~| !"#$%&'()*+,-./01234566789:;<<=>?@ABCDEFGHIJKLMNNOPQRSTUVWXYZ[\]^_`a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9:; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~            ersatz-0.3Ersatz.Internal.LiteralErsatz.Internal.FormulaErsatz.ProblemErsatz.SolutionErsatz.VariableErsatz.Solver.DepQBFErsatz.Solver.Minisat Ersatz.Codec Ersatz.Solver Ersatz.BitErsatz.EquatableErsatz.Orderable Ersatz.BitsErsatz.BitCharErsatz.Internal.ParserErsatz.Internal.StableNameSolverErsatz.Solver.CommonErsatzLiteral literalId negateLiteral literalFalse literalTrueFormula formulaSetClause clauseSetclauseLiterals formulaEmptyformulaLiteral formulaNot formulaAnd formulaOr formulaXor formulaMuxWDIMACSwdimacsCommentswdimacsNumVariableswdimacsTopWeightwdimacsClausesQDIMACSqdimacsCommentsqdimacsNumVariablesqdimacsQuantifiedqdimacsClausesDIMACSdimacsCommentsdimacsNumVariables dimacsClausesHasQSATqsat universalsQSATHasSATsatlastAtomformula stableMapSATrunSATrunSAT' dimacsSAT literalExists assertFormulagenerateLiteralrunQSATrunQSAT' qdimacsQSAT literalForalldimacsqdimacswdimacsResult Satisfied UnsatisfiedUnsolvedSolutionsolutionLiteralsolutionStableName solutionFromVariable literally GVariable gliterallyexistsforallgenericLiterallydepqbf depqbfPathminisat cryptominisat minisatPathCodecDecodeddecodeencode solveWithBooleanbooltruefalse&&||==>notandornandnorallanyxorchooseBitVarNotMuxXorOrAndassert GEquatable===# Equatable===/== GOrderable=?>?HasBitsbitsBitsBit8Bit7Bit6Bit5Bit4Bit3Bit2Bit1 fullAdder halfAddersumBitssumBitisOddisEvenBitChar BitString$fVariableBitChar$fOrderableBitChar$fEquatableBitChar$fCodecBitCharParser runParsersepBysepBy1tokenstringintegernegationnaturaleofsatisfymakeStableName'baseSystem.Mem.StableName StableNameghc-prim GHC.TypesFalseTrue $fShowLiteralformulaFromList $fShowClause $fShowFormula$fMonoidFormula$fMonoidClauseQuant _universals_qsatSat _lastAtom_formula _stableMap mtl-2.1.3.1Control.Monad.State.Class MonadStatetransformers-0.3.0.0Data.Functor.IdentityIdentitybytestring-0.10.4.0 Data.ByteString.Builder.InternalBuilderForallExistsgetQuantbCommentbClausebWClausebLine0bLine satClauses $fQDIMACSQSAT $fDIMACSSAT $fDefaultQSAT $fHasQSATQSAT $fHasSATQSAT $fDefaultSAT $fShowSAT $fHasSATSATIO$fBoundedResult $fEnumResult withTempFilesresultOf GHC.GenericsGeneric$fVariable(,,,,,,)$fVariable(,,,,,)$fVariable(,,,,)$fVariable(,,,)$fVariable(,,) $fVariable(,)$fVariableLiteral $fGVariableM1 $fGVariableK1$fGVariable:*: $fGVariableU1 parseLiteralGHC.IOFilePathparseSolutionFile parseSolutionsolutionvaluesvalue $fCodecTree $fCodecSeq $fCodecMaybe $fCodecMap $fCodecIntMap$fCodecHashMap $fCodecEither $fCodecArray $fCodec[]$fCodec(,,,,,,,)$fCodec(,,,,,,)$fCodec(,,,,,) $fCodec(,,,,) $fCodec(,,,) $fCodec(,,) $fCodec(,) $fCodec()$fCodecLiteralBoolrunBitGBooleangbool&&#||#gnotgallganygxorgunzip $fBooleanBool $fGBooleanM1 $fGBooleanK1 $fGBoolean:*: $fGBooleanU1 $fGBooleanV1 $fCodecBit $fVariableBit $fBooleanBit$fGEquatableK1$fGEquatableM1$fGEquatable:+:$fGEquatable:*:$fGEquatableV1$fGEquatableU1$fEquatableEither $fEquatable[]$fEquatableMaybe$fEquatable(,,,,,,)$fEquatable(,,,,,)$fEquatable(,,,,)$fEquatable(,,,)$fEquatable(,,)$fEquatable(,)$fEquatableIntMap$fEquatableMap$fEquatableBit $fOrderable[]$fGOrderableK1$fGOrderableM1$fGOrderable:+:$fGOrderable:*:$fGOrderableV1$fGOrderableU1$fOrderableEither$fOrderableMaybe$fOrderable(,,,,,,)$fOrderable(,,,,,)$fOrderable(,,,,)$fOrderable(,,,)$fOrderable(,,)$fOrderable(,)$fOrderableBitGHC.WordWord8 zipWithBitsaddBits_getBits boolsToNum1 boolsToNum2 boolsToNum3 boolsToNum4 boolsToNum5 boolsToNum6 boolsToNum7 boolsToNum8bitsOf numToBool boolsToNum boolToNum orderHelperunbitssumBits'mulBits fullSubtractsubBits $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 $fBooleanBit1CharGHC.BaseString