{؁      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p qrstuvwxyz{|}~ non-portable experimentalEdward Kmett <ekmett@gmail.com> Safe-Inferred   non-portable experimentalEdward Kmett <ekmett@gmail.com>None non-portable experimentalEdward Kmett <ekmett@gmail.com> Safe-Inferred5A 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.  non-portable experimentalEdward Kmett <ekmett@gmail.com>None A conjunction of clauses GA 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 clauses Assert 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:    O "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:   (O | F | T) & (O | F | P) & (O | T | P) & (O | F | P) & (O | T | P)  Output Input Output Inputs Output Inputs Output Input Input Output  False branch  True branch  Predicate/ selector        non-portable experimentalEdward Kmett <ekmett@gmail.com> Safe-InferredHThis is used to observe the directed graph with sharing of how multiple    values are related. $False branch, true branch, predicate/selector branch  non-portable experimentalEdward Kmett <ekmett@gmail.com>None"The id of the last atom allocated a set of clauses to assert a mapping used during Bit expansion 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 .  . '"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  5Run a 7-generating state computation. Useful e.g. in ghci for  disambiguating the type of a , 0 value. 6Run a %-generating state computation in the  monad. Useful / e.g. in ghci for disambiguating the type of a , 0 value. 7Run a 8-generating state computation and return the respective  '+ output. Useful for testing and debugging. ;Run a .7-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. =Run a .8-generating state computation and return the respective  "+ output. Useful for testing and debugging. ? Generate a  out of a ' problem. @ Generate a  out of a " problem. A Generate a  out of a  problem. > Specified to be 1 "d n < 2^63 !"#$%&'()*+,-./0123456789:;<=>?@A' !"#$%&'()*+,-./0123456789:;<=>?@A'0123456789:./+,-;<=>'()*"#$%& !?@A# !"#$%&'()*+,-./0123456789:;<=>?@A non-portable experimentalEdward Kmett <ekmett@gmail.com>None BCDEFGHIJK BCDEFGHIJK GHIJKCFEDBBCFEDGHIJK non-portable experimentalEdward Kmett <ekmett@gmail.com>None1Problem file extension including the dot, if any 2Solution file extension including the dot, if any  non-portable experimentalEdward Kmett <ekmett@gmail.com>NoneLMInstances for this class for product-like types can be automatically derived % for any type that is an instance of . LMNLMNLMN LMN non-portable experimentalEdward Kmett <ekmett@gmail.com>NoneOPOPOPOP non-portable experimentalEdward Kmett <ekmett@gmail.com>NoneQRSQRSQRSQRS  non-portable experimentalEdward Kmett <ekmett@gmail.com> Safe-InferredVA counterpart to  . Can encode e.g. a  as a   , a  as a , or a  [Word8] as a [Bit8]. TUVTUVTUVTUV  non-portable experimentalEdward Kmett <ekmett@gmail.com>NoneY?Return a value based on the solution if one can be determined. WXYWXYWXYWXY  non-portable experimentalEdward Kmett <ekmett@gmail.com>NoneZOPQRSZZZ  non-portable experimentalEdward Kmett <ekmett@gmail.com>None[ The normal / operators in Haskell are not overloaded. This ! provides a richer set that are. MInstances 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). aLogical implication. bLogical negation c+The logical conjunction of several values. d+The logical disjunction of several values. e3The negated logical conjunction of several values. e = b . cf3The negated logical disjunction of several values. f = b . dgJThe logical conjunction of the mapping of a function over several values. hJThe logical disjunction of the mapping of a function over several values. i Exclusive-or j9Choose between two alternatives based on a selector bit. kA k: provides a reference to a possibly indeterminate boolean 9 value that can be determined by an external SAT solver. mAssert claims that k must be ]" in any satisfying interpretation  of the current problem.  Convert a k to a . &[\]^_`abcdefghij False branch  True branch  Predicate/selector branch klm[\]^_`abcdefghijklmklm[\]^_`abcdefghij[\]^_`abcdefghijklm  non-portable experimentalEdward Kmett <ekmett@gmail.com>NonenOInstances for this class for arbitrary types can be automatically derived from . o-Compare for equality within the SAT problem. p/Compare for inequality within the SAT problem. nop     nopnopnop      non-portable experimentalEdward Kmett <ekmett@gmail.com>NoneqA container of 8 ks that V s from and Ys to  sA container of 7 ks that V s from and Ys to  uA container of 6 ks that V s from and Ys to  wA container of 5 ks that V s from and Ys to  yA container of 4 ks that V s from and Ys to  {A container of 3 ks that V s from and Ys to  }A container of 2 ks that V s from and Ys to  A container of 1 k that V s from and Ys to  Dqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFqrstuvwxyz{|}~}~{|yzwxuvstqr<qrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF non-portable experimentalEdward Kmett <ekmett@gmail.com>Nonef !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~G  !"#$%&'()*+,-./01123456789:;<=>?@ABCCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcde f g h i j  k l m n o p q r s t u v w x y z {   | } ~                                   ! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX ersatz-0.2Ersatz.Internal.LiteralErsatz.Internal.FormulaErsatz.Internal.CircuitErsatz.ProblemErsatz.SolutionErsatz.VariableErsatz.Solver.DepQBFErsatz.Solver.MinisatErsatz.EncodingErsatz.Decoding Ersatz.Solver Ersatz.BitErsatz.Equatable Ersatz.BitsErsatz.Internal.ParserErsatz.Internal.StableNameSolverBitErsatz.Solver.Commondecode Data.WordWord8Bit8ErsatzLiteral literalId negateLiteral literalFalse literalTrueFormula formulaSetClause clauseSetclauseLiterals formulaEmptyformulaLiteral formulaNot formulaAnd formulaOr formulaXor formulaMuxCircuitVarNotMuxXorOrAndSATWDIMACSwdimacsCommentswdimacsNumVariableswdimacsTopWeightwdimacsClausesQDIMACSqdimacsCommentsqdimacsNumVariablesqdimacsQuantifiedqdimacsClausesDIMACSdimacsCommentsdimacsNumVariables dimacsClausesHasQSATqsat universalsQSATHasSATsatformulalastAtom stableMaprunSATrunSAT' dimacsSAT literalExists assertFormulagenerateLiteralrunQSATrunQSAT' qdimacsQSAT literalForalldimacsqdimacswdimacsResult Satisfied UnsatisfiedUnsolvedSolutionsolutionLiteralsolutionStableName solutionFromVariableexistsforalldepqbf depqbfPathminisat cryptominisat minisatPathEncodingEncodedencodeDecodingDecoded solveWithBooleanbooltruefalse&&||==>notandornandnorallanyxorchooseassert Equatable===/==Bit7Bit6Bit5Bit4Bit3Bit2Bit1Parser runParsersepBysepBy1tokenstringintegernegationnaturaleofsatisfymakeStableName'baseSystem.Mem.StableName StableNameghc-prim GHC.TypesFalseTrue $fShowLiteralformulaFromList $fShowClause $fShowFormula$fTraversableCircuit$fFoldableCircuit$fFunctorCircuit _lastAtom_formula _stableMapQuant _universals_qsatSat mtl-2.1.2Control.Monad.State.Class MonadStatetransformers-0.3.0.0Data.Functor.IdentityIdentityblaze-builder-0.3.1.0'Blaze.ByteString.Builder.Internal.TypesBuilderForallExistsgetQuantbCommentbClausebWClausebLine0bLine satClauses $fQDIMACSQSAT $fDIMACSSAT $fDefaultQSAT $fHasQSATQSAT $fHasSATQSAT $fDefaultSAT $fShowSAT $fHasSATSAT$fBoundedResult $fEnumResult withTempFilesresultOf GHC.GenericsGeneric GVariablegexistsgforall$fVariable(,,,,,,)$fVariable(,,,,,)$fVariable(,,,,)$fVariable(,,,)$fVariable(,,) $fVariable(,)$fVariableLiteral $fGVariableM1 $fGVariableK1$fGVariable:*: $fGVariableU1parseSolutionFile parseSolutionsolutionvaluesvalueBool$fEncodingTree $fEncodingSeq$fEncodingMaybe $fEncodingMap$fEncodingIntMap$fEncodingHashMap$fEncodingEither$fEncodingArray $fEncoding[]$fEncoding(,,,,,,,)$fEncoding(,,,,,,)$fEncoding(,,,,,)$fEncoding(,,,,)$fEncoding(,,,)$fEncoding(,,) $fEncoding(,) $fEncoding()$fEncodingLiteral$fDecodingTree $fDecodingSeq$fDecodingMaybe $fDecodingMap$fDecodingIntMap$fDecodingHashMap$fDecodingEither$fDecodingArray $fDecoding[]$fDecoding(,,,,,,,)$fDecoding(,,,,,,)$fDecoding(,,,,,)$fDecoding(,,,,)$fDecoding(,,,)$fDecoding(,,) $fDecoding(,) $fDecoding()$fDecodingLiteralrunBitGBooleangbool&&#||#gnotgallganygxorgunzip $fBooleanBool $fGBooleanM1 $fGBooleanK1 $fGBoolean:*: $fGBooleanU1 $fEncodingBit $fDecodingBit $fVariableBit $fBooleanBit GEquatable===#$fGEquatableK1$fGEquatableM1$fGEquatable:+:$fGEquatable:*:$fGEquatableU1$fEquatableEither $fEquatable[]$fEquatableMaybe$fEquatable(,,,,,,)$fEquatable(,,,,,)$fEquatable(,,,,)$fEquatable(,,,)$fEquatable(,,)$fEquatable(,)$fEquatableBitGHC.Word boolsToNum1 boolsToNum2 boolsToNum3 boolsToNum4 boolsToNum5 boolsToNum6 boolsToNum7 boolsToNum8bitsOf numToBool boolsToNum boolToNum$fEncodingBit8$fEncodingBit7$fEncodingBit6$fEncodingBit5$fEncodingBit4$fEncodingBit3$fEncodingBit2$fEncodingBit1$fDecodingBit8$fDecodingBit7$fDecodingBit6$fDecodingBit5$fDecodingBit4$fDecodingBit3$fDecodingBit2$fDecodingBit1$fVariableBit8$fVariableBit7$fVariableBit6$fVariableBit5$fVariableBit4$fVariableBit3$fVariableBit2$fVariableBit1$fEquatableBit8$fEquatableBit7$fEquatableBit6$fEquatableBit5$fEquatableBit4$fEquatableBit3$fEquatableBit2$fEquatableBit1 $fBooleanBit8 $fBooleanBit7 $fBooleanBit6 $fBooleanBit5 $fBooleanBit4 $fBooleanBit3 $fBooleanBit2 $fBooleanBit1