Îõ³h&v4>      !"#$%&'()*+,-./0123456789:;<= Safe-Inferred )*89:Í×ÜëÖ' sat-simplePropositional formula. sat-simpleLiteral.To negate literate use . sat-simpleUnsatisfiable exception.5It may be thrown by various functions: in particular ! and   , but also , ".ˆThe reason to use an exception is because after unsatisfiable state is reached the underlying solver instance is unusable. You may use  to catch it. sat-simpleSatisfiability monad. sat-simpleRun  computation. sat-simpleRun  computation. Return > if  is thrown.  sat-simpleCreate fresh literal.  sat-simpleTrue .  sat-simpleFalse .  sat-simpleMake  from a literal.  sat-simple*Disjunction of propositional formulas, or. sat-simple+Conjunction of propositional formulas, and. sat-simple&Implication of propositional formulas. sat-simple&Equivalence of propositional formulas. sat-simple2Exclusive or, not equal of propositional formulas. sat-simple If-then-else. Semantics of  c t f are  (c  t)   ( c  f). sat-simpleAdd conjunction definition.addConjDefinition x ys asserts that x ”C ÀE yâ: sat-simpleAdd disjunction definition.addDisjDefinition x ys asserts that x ”C ÁE yâ: sat-simpleAssert that given  is true.This is equivalent to 8addProp p = do l <- addDefinition p addClause l :but avoid creating the definition, asserting less clauses. sat-simpleAdd definition of 6. The resulting literal is equivalent to the argument . sat-simple True literal. sat-simple False literal? sat-simpleAdd conjuctive definition. sat-simpleAdd a clause to the solver. sat-simpleAt least one -constraint. Alias to . sat-simpleAt most one -constraint.Uses atMostOnePairwise! for lists of length 2 to 5 and atMostOneSequential for longer lists.ÎThe cutoff is chosen by picking encoding with least clauses: For 5 literals, atMostOnePairwise needs 10 clauses and 2 needs 11 (and 4 new variables). For 6 literals, atMostOnePairwise needs 15 clauses and  needs 14. sat-simple0At most one -constraint using pairwise encoding.Ù \mathrm{AMO}(x_1, \ldots, x_n) = \bigwedge_{1 \le i < j \le n} \neg x_i \lor \neg x_j n(n-1)/2# clauses, zero auxiliary variables. sat-simple:At most one -constraint using sequential counter encoding.Ò \mathrm{AMO}(x_1, \ldots, x_n) = (\neg x_1 \lor s_1) \land (\neg x_n \lor \neg s_{n-1}) \land \bigwedge_{1 < i < n} (\neg x_i \lor a_i) \land (\neg a_{i-1} \lor a_i) \land (\neg x_i \lor \neg a_{i-1}) £Sinz, C.: Towards an optimal CNF encoding of Boolean cardinality constraints, Proceedings of Principles and Practice of Constraint Programming (CP), 827“@831 (2005)3n-4 clauses, n-1 auxiliary variables.ÂWe optimize the two literal case immediately ([resolution](https:/en.wikipedia.orgwiki/Resolution_(logic)) on s_1.Ý (\neg x_1 \lor s_1) \land (\neg x_2 \lor \neg s_1) \Longrightarrow \neg x_1 \lor \neg x_2  sat-simple#Assert that two literals are equal. sat-simple/Assert that all literals in the list are equal.  sat-simple!Search without returning a model.! sat-simpleSearch and return a model." sat-simple"Removes already satisfied clauses.# sat-simple The current number of variables.$ sat-simple'The current number of original clauses.% sat-simple%The current number of learnt clauses.& sat-simple The current number of conflicts.. sat-simpleNegate literal.1 sat-simple#Negation of propositional formulas.'  !"#$%&'  ! "#$%& 56À      !"#$%&'()*+,-./0123456789:;<=>?@ABÃ)sat-simple-0.1.0.0-JBhYZUcF1G7JlPP5LB3Zs3Control.Monad.SATPropNegnegLitUnsatExceptionSATrunSAT runSATMaybenewLittruefalselit\//\--><->xoriteaddConjDefinitionaddDisjDefinitionaddProp addDefinitiontrueLitfalseLit addClauseassertAtLeastOneassertAtMostOneassertAtMostOnePairwiseassertAtMostOneSequential assertEqualassertAllEqualsolve_solvesimplifynumberOfVariablesnumberOfClausesnumberOfLearntsnumberOfConflicts$fExceptionUnsatException$fExceptionSATPanic $fShowLit$fMonadUnliftIOSAT $fMonadIOSAT $fMonadSAT$fApplicativeSAT$fNegLit $fShowPropA $fShowProp1 $fNegProp $fShowProp$fEqProp $fOrdProp $fEqProp1 $fOrdProp1 $fEqPropA $fOrdPropA $fFunctorSAT$fEqLit$fOrdLit$fShowSATPanic$fShowUnsatExceptionbase GHC.MaybeNothingadd_definition