#̈́3      !"#$%&'()*+,-./012345678 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 [ \ ] ^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~            !!!!!!!!!!!""""#$%%%&&&&&&&&&&&''''''''((((((((()))))))))))**+,--./ 0 0 0 0 0000000001111112222 2!2"2#2$2%2&2'3(3)3*3+3,3-3.3/303132333435363738393:3;3<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W5X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g7h7i8j8k9l9m9n9o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~999::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<=======>>>??????????????@@AAAAAAAAAAAAAAABBBBBBBBBBBBCCCCCCCCCCCCCC D D D D EEEFFFFFFFFFFFFFFFF F!F"F#F$F%G&G'H(H)H*H+H,H-H.H/I0I1I2OJ Safe-Inferred 3456789:;<89:;< 3456789:;<portable provisionalmasahiro.sakai@gmail.com Safe-Inferred )the block strcuture vector (bLOCKsTRUCT) Constant Vector Constraint Matrices &the number of primal variables (mDim) the number of blocks (nBLOCK) #Parse a SDPA format (.dat) string. !Parse a SDPA format file (.dat). ,Parse a SDPA sparse format (.dat-s) string. *Parse a SDPA sparse format file (.dat-s). & =>?@ABCDEFGHIJKLM   " =>?@ABCDEFGHIJKLM Safe-InferredKnon-portable (BangPatterns) provisionalmasahiro.sakai@gmail.com Safe-InferredNO allocate too many intermediate P. 9 Therefore we use this optimized implementation instead. C Many intermediate values in this implementation will be optimized 5 away by worker-wrapper transformation and unboxing. QRNQNQRNL7non-portable (FlexibleInstances, MultiParamTypeClasses) provisionalmasahiro.sakai@gmail.com Safe-InferredSTUVWXY Z[\]^_`abcSUSTUVWXYM[non-portable (MultiParamTypeClasses, FlexibleInstances, BangPatterns, TypeSynonymInstances) provisionalmasahiro.sakai@gmail.comNoned7Priority queue implemented as array-based binary heap. e.Build a priority queue with default ordering ('(<)' of f class) g$Build a priority queue with a given  less than operator. hDReturn a list of all the elements of a priority queue. (not sorted) i+Remove all elements from a priority queue. j#Create a copy of a priority queue. k;Get the internal representation of a given priority queue. dlmnopqeghijrstukvwxyz{|}Z[\]^_`abcdpqeghijrskdlmnopqeghijrstukvwxyz{|}portable provisionalmasahiro.sakai@gmail.com Safe-Inferred&Lifted Bool type. It has three values , , . lifted true value lifted false value undefined truth value    lnot lTrue == lFalse  lnot lFalse == lTrue  lnot lUndef == lUndef    liftBool True == lTrue  liftBool False == lFalse !  ! unliftBool lTrue == Just True # unliftBool lFalse == Just False  unliftBool lUndef == Nothing  ~ ! ! !~ !non-portable (BangPatterns)masahiro.sakai@gmail.com Safe-Inferred"+Variable are repserented positive integer. #YPositive (resp. negative) literal is represented as a positive (resp. negative) integer. $*List of variables interpreted as products %Coefficient and $ &Sum of % '!A pair of weight and constraint. ( A pair of top cost! and a list of soft constraints. )Relational operators *equal +greater than or equal ,"Lhs, relational operator and rhs. -Pair of objective function and a list of constraints. .5Parse a .opb file containing pseudo boolean problem. />Parse a .opb format string containing pseudo boolean problem. 0DParse a .wbo file containing weighted boolean optimization problem. 1MParse a .wbo format string containing weighted boolean optimization problem. 2"#$%&'()*+,-./012345"#$%&'()*+,-./012345-,)+*('&%$#"./0123450"#$%&'()+*,-./012345portable experimentalmasahiro.sakai@gmail.com Safe-Inferred6666portable experimentalmasahiro.sakai@gmail.com Safe-Inferred7777 portable experimentalmasahiro.sakai@gmail.com Safe-Inferred8888 portable experimentalmasahiro.sakai@gmail.com Safe-Inferred9999  Safe-Inferred :Disjunction of =. =FPositive (resp. negative) literals are represented as positive (resp. & negative) integers. (DIMACS format). >BA model is represented as a mapping from variables to its values. A>Variable is represented as positive integers (DIMACS format). E6Construct a literal from a variable and its polarity.   (resp +) means positive (resp. negative) literal. FNegation of the =. GUnderlying variable of the = HPolarity of the =.   means positive literal and  means negative literal. JNormalizing clause " if the clause is trivially true. L normalizing PB term of the form c1 x1 + c2 x2 ... cn xn + c into  d1 x1 + d2 x2 ... dm xm + d where d1,...,dm "e 1. M&normalizing PB constraint of the form c1 x1 + c2 cn ... cn xn >= b. N&normalizing PB constraint of the form c1 x1 + c2 cn ... cn xn = b. :;<=>?@ABCDE variable  polarity FGHIJKLMNOPQRST:;<=>?@ABCDEFGHIJKLMNOPQRSTA@?B>=<;CDEFGHI:JKLMNOPQRST:;<=>?@ABCDEFGHIJKLMNOPQRST portable experimentalmasahiro.sakai@gmail.com Safe-InferredUUUU  Safe-InferredVWXYZ[\]VWXYZ[\]VWXYZ[\]VWXYZ[\]portable provisionalmasahiro.sakai@gmail.com Safe-Inferred^Print a >) in a way specified for SAT Competition.  See  ,http://www.satcompetition.org/2011/rules.pdf for details. _Print a >, in a way specified for Max-SAT Evaluation.  See  &http://maxsat.ia.udl.cat/requirements/ for details. `Print a >4 in a way specified for Pseudo-Boolean Competition.  See  .http://www.cril.univ-artois.fr/PB12/format.pdf for details. ^_`a^_`a^_`a^_`aportable provisionalmasahiro.sakai@gmail.com Safe-Inferredbcdefghijk bcdefghijk defghicbjk bcdefghijkportable provisionalmasahiro.sakai@gmail.com Safe-Inferredl!should be able to represent 2^63 lmnopqrstu lmnopqrstu nopqrsmltu lmnopqrstuportable experimentalmasahiro.sakai@gmail.com Safe-Inferredvvvvportable experimentalmasahiro.sakai@gmail.com Safe-Inferredwwwwportable experimentalmasahiro.sakai@gmail.com Safe-Inferredxyz{xyz{x{zyx{zyportable experimentalmasahiro.sakai@gmail.com Safe-Inferred|xyz{|x{zy||Pnon-portable (BangPatterns, DoRec, ScopedTypeVariables, CPP, DeriveDataTypeable) provisionalmasahiro.sakai@gmail.comNone8@invoked with the watched literal when the literal is falsified.   0g  0T|0sQ0W0f heap allocation 0Lvzu0Y00n0  0Q00_00k0QC0n  0n!0W0f0J0O0 6deduce a clause C"(l from the constraint and return C. A C and l should be false and true respectively under the current  assignment. Solver instance :Inverse of the variable activity decay factor. (default 1 / 0.95) #Amount to bump next variable with. 0Inverse of the clause activity decay factor. (1 / 0.999) !Amount to bump next clause with. )The initial restart limit. (default 100) UThe factor with which the restart limit is multiplied in each restart. (default 1.5) &The initial limit for learnt clauses. XThe limit for learnt clauses is multiplied with this factor periodically. (default 1.1) EControls conflict clause minimization (0=none, 1=local, 2=recursive) /will be invoked when this literal is falsified GRegister the constraint to be notified when the literal becames false. ;Returns list of constraints that are watching the literal. $number of variables of the problem. number of assigned variables. number of clauses. number of learnt constrints. Create a new Solver instance. Add a new variable Add variables. /newVars solver n = replicateM n (newVar solver) Add variables. 2newVars_ solver n >> return () = newVars_ solver n Add a clause to the solver. Add a cardinality constraints atleast({l1,l2,..},n). Add a cardinality constraints atmost({l1,l2,..},n). Add a cardinality constraints exactly({l1,l2,..},n). !Add a pseudo boolean constraints c1*l1 + c2*l2 + & "e n. !Add a pseudo boolean constraints c1*l1 + c2*l2 + & "d n. !Add a pseudo boolean constraints c1*l1 + c2*l2 + & = n. &Add a soft pseudo boolean constraints lit ! c1*l1 + c2*l2 + & "e n. &Add a soft pseudo boolean constraints lit ! c1*l1 + c2*l2 + & "d n. &Add a soft pseudo boolean constraints lit ! c1*l1 + c2*l2 + & = n. Solve constraints.  Returns  if the problem is SATISFIABLE.  Returns " if the problem is UNSATISFIABLE. $Solve constraints under assuptions.  Returns  if the problem is SATISFIABLE.  Returns " if the problem is UNSATISFIABLE. After % returns True, it returns the model. After 0 returns False, it returns a set of assumptions D that leads to contradiction. In particular, if it returns an empty ; set, the problem is unsatisiable without any assumptions. KSimplify the clause database according to the current top-level assigment. default value for RestartStrategy. )The initial restart limit. (default 100) , Negative value is used to disable restart. default value for  RestartFirst. UThe factor with which the restart limit is multiplied in each restart. (default 1.5) default value for  RestartInc. &The initial limit for learnt clauses. default value for LearntSizeFirst. XThe limit for learnt clauses is multiplied with this factor each restart. (default 1.1) default value for  LearntSizeInc. XThe limit for learnt clauses is multiplied with this factor each restart. (default 1.1) default value for CCMin. $The default polarity of a variable. RThe frequency with which the decision heuristic tries to choose a random variable &Used by the random variable selection #Revert to the state at given level  (keeping all assignment at level but not beyond). @invoked with the watched literal when the literal is falsified. 6deduce a clause C"(l from the constraint and return C. A C and l should be false and true respectively under the current  assignment. .set callback function for receiving messages. }~      !"#$%&'()*+The  argument. set of literals  {l1,l2,..}# (duplicated elements are ignored) n. The  argument set of literals  {l1,l2,..}# (duplicated elements are ignored) n The  argument set of literals  {l1,l2,..}# (duplicated elements are ignored) n The  argument.  set of terms [(c1,l1),(c2,l2), &] n The  argument. list of [(c1,l1),(c2,l2), &] n The  argument. list of terms [(c1,l1),(c2,l2), &] n The  argument.  indicator lit  set of terms [(c1,l1),(c2,l2), &] n The  argument.  indicator lit  set of terms [(c1,l1),(c2,l2), &] n The  argument.  indicator lit  set of terms [(c1,l1),(c2,l2), &] n  Assumptions ,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^?:=>AEFGH}~?A=EFGH:>}~}~ *      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^portable provisionalmasahiro.sakai@gmail.comNoneEncoder instance (Arbitrary formula not restricted to CNF  Create a Encoder instance. Use pseudo boolean constraints or use only clauses. 9Assert a given formula to underlying SAT solver by using  Tseitin encoding. >Return an literal which is equivalent to a given conjunction. >Return an literal which is equivalent to a given disjunction. _`abcde _`abcde non-portable provisionalmasahiro.sakai@gmail.comNone Options for  function default  value :Find a minimal set of assumptions that causes a conflict. * Initial set of assumptions is taken from . portable provisionalmasahiro.sakai@gmail.comNone Options for , ,  default  value fgh fghnon-portable (BangPatterns) provisionalmasahiro.sakai@gmail.comNoneportable provisionalmasahiro.sakai@gmail.comNoneportable provisionalmasahiro.sakai@gmail.comNoneKnon-portable (TypeSynonymInstances, FlexibleInstances, ScopedTypeVariables) provisionalmasahiro.sakai@gmail.comNone Element of model. i Shallow atom j Shallow term  Term 4Generalized literal type parameterized by atom type Predicate Symbol Function Symbol  Variable /normalize a formula into a skolem normal form. TODO:  Tseitin encoding  print entity Hklmnopqrstiuvjwx     yz{|}~#     #     0klmnopqrstivujxw      yz{|}~portable provisionalmasahiro.sakai@gmail.com Safe-Inferred     Rnon-portable (ScopedTypeVariables, TypeFamilies, BangPatterns, DeriveDataTypeable) provisionalmasahiro.sakai@gmail.comNone "Monic monomials '/Univariate polynomials over commutative ring r 4Content of a polynomial 5Primitive part of a polynomial 6#Polynomial over commutative ring r 8#total degree of a given polynomial ='construct a polynomial from a constant >0construct a polynomial from a list of monomials @'construct a polynomial from a monomial Alist of monomials B4leading term with respect to a given monomial order F!Formal derivative of polynomials GFormal integral of polynomials H Evaluation I Evaluation J Evaluation KSubstitution or bind LSubstitution or bind MSubstitution or bind S Multivariate division algorithm T Multivariate division algorithm W#division of univariate polynomials X#division of univariate polynomials Y#division of univariate polynomials ZGCD of univariate polynomials [LCM of univariate polynomials \pseudo reminder ]GCD of univariate polynomials rLexicographic order sReverse lexicographic order + Note that revlex is NOT a monomial order. tgraded lexicographic order u#graded reverse lexicographic order }!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuU!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuW67'%&:;<=A>7?@89BCDE345FGHIJKLMNOPQRWXYZ[\]ST$^_`abc"#defgh#ijklmnopq!rstu-./012UV*+,()k!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu"non-portable (ScopedTypeVariables) provisionalmasahiro.sakai@gmail.comNonew%sugar strategy (not implemented yet) vwxyz{|}~ vwxyz{|}~ yz{vxw|~} vxwyz{|}~ portable provisionalmasahiro.sakai@gmail.comNoneSturm's chain (Sturm' s sequence) Sturm's sequence of a polynomial %The number of distinct real roots of p in a given interval %The number of distinct real roots of p in a given interval.  This function takes p's sturm chain instead of p itself. DClosed interval that contains all real roots of a given polynomial.  h90nPuL   =http://aozoragakuen.sakura.ne.jp/taiwa/taiwaNch02/node26.html YDisjoint intervals each of which contains exactly one real roots of the given polynoimal p. * The intervals can be further narrowed by  or . YDisjoint intervals each of which contains exactly one real roots of the given polynoimal p. * The intervals can be further narrowed by  or .  This function takes p's sturm chain instead of p itself.   !non-portable (Rank2Types) provisionalmasahiro.sakai@gmail.comNone    "0non-portable (ScopedTypeVariables, BangPatterns) provisionalmasahiro.sakai@gmail.comNoneISquare-free decomposition of univariate polynomials over a finite field. 2Berlekamp algorithm for polynomial factorization. 9Input polynomial is assumed to be monic and square-free. #None$non-portable (BangPatterns) provisionalmasahiro.sakai@gmail.comNoneVSquare-free decomposition of univariate polynomials over a field of characteristic 0. %portable provisionalmasahiro.sakai@gmail.comNone&!non-portable (DeriveDataTypeable) provisionalmasahiro.sakai@gmail.comNone  'portable provisionalmasahiro.sakai@gmail.com Safe-InferredCombining two Maybe values using given function. is the number integral?  - isInteger x = fromInteger (round x) == x fractional part  * fracPart x = x - fromInteger (floor x) (non-portable (TypeFamilies) provisionalmasahiro.sakai@gmail.comNone Delta r k; represents r + k for symbolic infinitesimal parameter . $symbolic infinitesimal parameter . Conversion from a base r value to Delta r. Extracts the real part.. Extracts the  part..  version of .   x/ returns the greatest integer not greater than x  version of .   x) returns the least integer not less than x Is this a integer?    portable provisionalmasahiro.sakai@gmail.comNone'SOS (special ordered sets) constraints 0types of SOS (special ordered sets) constraints Type 2 SOS constraint Type 1 SOS constraint relational operators type for representing lower/upper bound of variables  variable label type for representing lower/upper bound of variables  constraint objective function terms  expressions Problem default bounds default lower bound (0) default upper bound (+") %looking up attributes for a variable !looking up bounds for a variable !looking up bounds for a variable (Parse a string containing LP file data. O The source name is only | used in error messages and may be the empty string. &Parse a file containing LP file data.  Render a problem into a string. o     <<O     )portable experimentalmasahiro.sakai@gmail.comNone  !"#$%&'()*+,-./   !"#$%&'()*+,-./*portable experimentalmasahiro.sakai@gmail.comNone 0123456 0123456+portable experimentalmasahiro.sakai@gmail.comNone,portable experimentalmasahiro.sakai@gmail.comNone-portable provisionalmasahiro.sakai@gmail.comNone(Parse a string containing LP file data. O The source name is only | used in error messages and may be the empty string. &Parse a file containing LP file data. ,789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"7 A@?>=<;:98BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`.non-portable (BangPatterns) provisionalmasahiro.sakai@gmail.comNone abcdefghi abcdefghi/None0non-portable (Rank2Types) provisionalmasahiro.sakai@gmail.comNone Algebraic real numbers.  1Real roots of the polynomial in ascending order.  1Real roots of the polynomial in ascending order.  -Returns approximate rational value such that abs (a - approx a epsilon) < = epsilon.  'Returns approximate interval such that !width (approxInterval a epsilon) < = epsilon. jSame as k. lSame as m. nSame as o. pSame as . qSame as . The n th root of a 6The polynomial of which the algebraic number is root. ,Whether the algebraic number is a rational. DWhether the algebraic number is a root of a polynomial with integer ' coefficients with leading coefficient 1 (a monic polynomial).  Height of the algebraic number. root index, satisfying     ( a) !! rootIndex a == a Golden ratio r Degree of the algebraic number. If the algebraic number's  has degree n, 0 then the algebraic number is said to be degree n. % s  tuvwxy a epsilon  a epsilon jlnpqz{|}~r9        9  $ s  tuvwxy  jlnpqz{|}~r1portable provisionalmasahiro.sakai@gmail.com Safe-InferredA Model$ is a map from variables to values. collecting free variables Map from variables Set of variables 3Variables are represented as non-negative integers 2portable provisionalmasahiro.sakai@gmail.com Safe-Inferred4types that can be combined with boolean operations. types that can be negated. ! alias of  " alias of  # alias of  $ alias of  % alias of  & alias of   !"#$%&  !"#$%&  !"#$%& !"#$%&3Onon-portable (FlexibleInstances, MultiParamTypeClasses, FunctionalDependencies) provisionalmasahiro.sakai@gmail.com Safe-Inferred 'Atomic formula )/type class for constructing relational formula +relational operators 2flipping relational operator rel (flipOp op) a b is equivalent to  rel op b a 3negating relational operator rel (negOp op) a b is equivalent to notB (rel op a b) 4operator symbol 51evaluate an operator into a comparision function 6 constructing relational formula 7 constructing relational formula 8 constructing relational formula 9 constructing relational formula : constructing relational formula ; constructing relational formula '()*+,-./0123456789:;'()*+,-./0123456789:;+10/.-,2345'()*6798:;'()*+10/.-,23456789:;4non-portable (TypeFamilies) provisionalmasahiro.sakai@gmail.comNone=%Atomic Formula of Linear Arithmetics >/Linear combination of variables and constants. ) Non-negative keys are used for variables's coefficients.  key C is used for constants. ?)a mapping from variables to coefficients @ Create a Expr0 from a mapping from variables to coefficients. A#terms contained in the expression. B Create a Expr from a list of terms. C7Special variable that should always be evaluated to 1. E variable F constant Gmap coefficients. Hmap coefficients. I)evaluate the expression under the model. J)evaluate the expression under the model. MapplySubst1 x e e1 == e1[e/x] N&lookup a coefficient of the variable.   " coeff v e == fst (extract v e)   O&lookup a coefficient of the variable.  It returns Nothing$ if the expression does not contain v.   2 lookupCoeff v e == fmap fst (extractMaybe v e)   P extract v e returns (c, e') such that e == c *^ v ^+^ e' QextractMaybe v e returns  Just (c, e') such that e == c *^ v ^+^ e'  if e contains v, and returns Nothing otherwise. T&evaluate the formula under the model. U2Solve linear (in)equation for the given variable.  solveFor a v returns  Just (op, e) such that  Atom v op e  is equivalent to a. Vcompute bounds for a Expr with respect to  BoundsEnv. %<=>?@ABCDEFGHIJKLMNOPQRSTUV<=>?@ABCDEFGHIJKLMNOPQRSTUV>?EFAB?@CDNOPQGHIJKLMR=STU<V#<=>?@ABCDEFGHIJKLMNOPQRSTUV50non-portable (ScopedTypeVariables, BangPatterns) provisionalmasahiro.sakai@gmail.comNoneW6tightening variable bounds by constraint propagation. Htightening intervals by ceiling lower bounds and flooring upper bounds. Winitial bounds  constraints integral variables limit of iterations <VW<WVW6"non-portable (ScopedTypeVariables) provisionalmasahiro.sakai@gmail.comNoneXYZ[\]^_`abcdefXYZ[\]^_`abcdef\[ZYX]^_`abcdefXYZ[\]^_`abcdef7Noneghghghgh8portable provisionalmasahiro.sakai@gmail.comNoneijijijij9"non-portable (ScopedTypeVariables) provisionalmasahiro.sakai@gmail.comNoneklmnopqrstuvwxyz{|}~klmnopqrstuvwxyz{|}~lkmnopqrstuvwxyz{|}~klmnopqrstuvwxyz{|}~:"non-portable (ScopedTypeVariables) provisionalmasahiro.sakai@gmail.comNoneresults of optimization ;Inon-portable (TypeSynonymInstances, FlexibleInstances, TypeFamilies, CPP) provisionalmasahiro.sakai@gmail.comNoneresults of optimization +feasibility 0O0a0d0d non-basic variable xj 0nP$0Y'0M0O0Y0 1feasibility 0O0a0d0d non-basic variable xj 0nP$0\0U0O0Y0 .set callback function for receiving messages. dE+,-./016789:=E+10/.-,79:68=M <.non-portable (ScopedTypeVariables, Rank2Types) provisionalmasahiro.sakai@gmail.comNone.set callback function for receiving messages. =None      >portable provisionalmasahiro.sakai@gmail.com Safe-InferredDisjunctive normal form  list of conjunction of literals        ?0non-portable (ScopedTypeVariables, BangPatterns) provisionalmasahiro.sakai@gmail.comNone5 !"#$%&'()*+,-./01234567890 !"#$%&'()*+,-./0123456789@NoneAportable provisionalmasahiro.sakai@gmail.comNoneLiteral (t,c) represents t/c, and c must be >0. :;<=>?@ABCDEFGHI:;<=>?@ABCDEFGHIBportable provisionalmasahiro.sakai@gmail.com Safe-Inferredformulas of first order logic ,convert a formula into negation normal form JKLMNOPQR !"#$%&   JKLMNOPQRC7non-portable (FlexibleInstances, MultiParamTypeClasses) provisionalmasahiro.sakai@gmail.com Safe-Inferred#results of satisfiability checking Atomic formula Arithmetic expressions single variable expression  evaluate an  with respect to a  STUVW: !"#$%&'()*+,-./0123456789:; STUVWDNone                ENone    Nportable provisionalmasahiro.sakai@gmail.comNone  F non-portable (FlexibleInstances) provisionalmasahiro.sakai@gmail.comNone%quantifier-free negation normal form Literal  Pos e means e > 0  Divisible True d e means e can be divided by d (i.e. d|e)  Divisible False d e means e can not be divided by d (i.e. (d|e)) ,Linear arithmetic expression over integers. #'solve a (open) quantifier-free formula $'solve a (open) quantifier-free formula 1XYZ[\]^_`abcd e!"#$fghijklmnopqrs !"#$ !#"$(XZY[\]^_`abcd e!"#$fghijklmnopqrsGportable provisionalmasahiro.sakai@gmail.comNone%Feliminate quantifiers and returns equivalent quantifier-free formula. %&%&%&%&O non-portable (FlexibleInstances) provisionalmasahiro.sakai@gmail.comNone !"#$%& !%#"&$Hportable provisionalmasahiro.sakai@gmail.comNonetuv'()*+,wxyz{|}~-. '()*+,-. -.'()*+,tuv'()*+,wxyz{|}~-.I"non-portable (ScopedTypeVariables) provisionalmasahiro.sakai@gmail.comNone/01 /010/1/01 Safe-Inferred2222PQRPQSPQTJUVWXYZZ[\]^_`abcdefghijhklmnopqrstuvwxyz{|}~    s j   r   }r       jj !"#}s!$t%&'()*+r,-./012r34567899:;<=>?@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~            !r!!!!!!!!!!""""#$%%%&&)&&(&&&&&&&''''''''((((((((({r||ttNh)))))))))))**+,--./00000000000001j1L1111r22 2 2 2 2 22222333333333{3333333333 3!3"4#4!44I4Q4S4P4$4%4M4O4b4&4'4(4)4*4+4U4V4,4-4.4/404142536465666768696:6;6<6=6>6?6@6A6B7C7D88E999F9G9H9I9J9K9L9M9N9O9P9Q9R9S9T9A9?9@9U9V:W:X:Y:Z:[:::\;j;];;;^;W;_;Y;`;X;a;b;c;d;e;f;;;g;r;;h;i;;j;k;l;m;;n;o;p;;q;r;s;t;u;;\;@;v;w;x;y;H;z;{;|;};;~;<<<\<<w<<<=====O==Z>>>?j?????????????E@@AsA)AAAAAAAAAAAAAEB}BB BBBBBB!B"B#BCCC`CC!CCCCCrCCMC'C0DDDDEEEFFsFFFFFsFF)FFFFFFFFFFFFGGHHHHHHHHI[II\JJJJJJJJJJKKKLLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMk      !"#$%&'(')*+,-./0-1/023456789:;<=>?@ABCDEFGGHIJKLMMNOPQQRSTUV|%WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~N*g     E6H !"#$%&'()*+,-./01234567899:;<=>?@A B C D E"F"G$H%H%I%%&J&K&L&M&N&OPQPR(S(TULVWXYZ [\]^_`[abcdefghijklmnopqrstufvwxyz{|}~))r)))))))o)))))))?)))))*******------------5-------[-\---s------f-------g--n----.........0P0P0P000000000000000000000133334444444444555H56666666s6t666666667888:::::::::: : : : : :::::;;;g;;;;n;;d;;;|;;;;;<;;;; ;!;";#;$;;:;%;;&;';(;N;);*;+;;;,;-;.;/;0;1;2;3;4<5<5<6<7<8<9<:<;<<<=<><?<@<A<$<f<<<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?qArAsAtACAuAvAwAxAyAzA{A|A}A~AABBBBBBBBBCCCCCDFFFFFFFFFFCFFFFFFFFFFFFFFFFFFHHHHCHHHHHHHHEHHHHHHHHH[H~HIIII5I5II7IIIIIIIIIIIItoysolver-0.0.5 Text.LPFileVersion Text.SDPFileText.GurobiSol Data.LBool Text.PBFileConverter.PB2LSPConverter.PB2WBOConverter.PB2SMPConverter.SAT2PB SAT.TypesConverter.WBO2PBSAT.TheorySolver SAT.Printer Text.GCNF Text.MaxSATConverter.MaxSAT2WBOConverter.MaxSAT2NLPBConverter.ObjTypeConverter.PBSetObjSATSAT.TseitinEncoderSAT.MUS SAT.CAMUSSAT.PBO.UnsatBased SAT.PBO.MSU4SAT.PBOAlgorithm.FOLModelFinderAlgorithm.CongruenceClosureData.PolynomialData.Polynomial.GBasis$Data.Polynomial.RootSeparation.SturmData.AlgebraicNumber.Root)Data.Polynomial.Factorization.FiniteField&Data.Polynomial.Interpolation.Lagrange(Data.Polynomial.Factorization.SquareFree&Data.Polynomial.RootSeparation.Graeffe Data.SignUtil Data.DeltaConverter.LP2SMTConverter.PB2LPConverter.MaxSAT2LPConverter.SAT2LP Text.MPSFile%Data.Polynomial.Factorization.Integer&Data.Polynomial.Factorization.RationalData.AlgebraicNumber.RealData.VarAlgebra.Lattice.Boolean Data.ArithRelData.LAAlgorithm.BoundsInferenceAlgorithm.SimplexAlgorithm.LPUtilAlgorithm.ContiTraversoAlgorithm.LPSolverAlgorithm.LPSolverHLAlgorithm.Simplex2Algorithm.MIPSolver2 SAT.IntegerData.DNF Algorithm.CADAlgorithm.OmegaTest.MiscAlgorithm.FourierMotzkin.CoreData.FOL.FormulaData.FOL.Arith Data.LA.FOLAlgorithm.FourierMotzkin.FOLAlgorithm.Cooper.CoreAlgorithm.Cooper.FOLAlgorithm.OmegaTestAlgorithm.MIPSolverHLPaths_toysolver Text.Util Data.SeqQueueData.IndexedPriorityQueueAlgorithm.FourierMotzkinAlgorithm.Cooper OptDir-0.0.1 Data.OptDirOptMinOptMaxOptDirversion DenseBlock DenseMatrixBlockMatrixProblem blockStructcostsmatricesmDimnBlock blockElem denseBlock denseMatrix diagBlockparseDataString parseDataFileparseSparseDataStringparseSparseDataFilerender renderSparseModelLBoollTruelFalselUndeflnotliftBool unliftBoolVarLitTerm WeightedTermSumSoftConstraint SoftFormulaOpEqGe ConstraintFormulaparseOPBString parseOPBFileparseWBOString parseWBOFileshowOPBshowWBO pbNumVars wboNumVarsconvertClauseLitMapLitSetVarMapVarSetvalidVarlitUndefvalidLitliterallitNotlitVar litPolarityevalLitnormalizeClausenormalizeAtLeastnormalizePBSumnormalizePBAtLeastnormalizePBExactly cutResolvecardinalityReductionnegatePBAtLeastpbEval pbLowerBound pbUpperBound TheorySolver thAssertLitthCheck thExplainthPushBacktrackPointthPopBacktrackPoint emptyTheory satPrintModelmaxsatPrintModel pbPrintModel musPrintSolGClause GroupIndexGCNFnumVars numClauseslastGroupIndexclauses parseString parseFileWeightWeightedClauseWCNFtopCostparseWCNFString parseWCNFFileObjType ObjMaxZero ObjMaxOneObjNonesetObjRestartStrategy LubyRestarts ArminRestartsMiniSATRestartsLearningStrategyLearningHybridLearningClauseBudgetExceededSolvervarDecayActivityvarBumpActivitynVarsnAssignsnClausesnLearnt newSolvernewVarnewVarsnewVars_ addClause addAtLeast addAtMost addExactly addPBAtLeast addPBAtMost addPBExactlyaddPBAtLeastSoftaddPBAtMostSoftaddPBExactlySoftsolve solveWithmodelfailedAssumptionssetRestartStrategydefaultRestartStrategysetRestartFirstdefaultRestartFirst setRestartIncdefaultRestartIncsetLearningStrategydefaultLearningStrategysetLearntSizeFirstdefaultLearntSizeFirstsetLearntSizeIncdefaultLearntSizeIncsetCCMin defaultCCMinsetVarPolarity setCheckModel setRandomFreqdefaultRandomFreq setRandomSeed setConfBudget setLoggerEncoder encSolverEquivImplyNotOrAnd newEncodersetUsePB addFormula encodeConj encodeDisjOptions optLogger optUpdateBest optLitPrinterdefaultOptionsfindMUSAssumptions optCallbackMCSMUSenumMCSAssumptionsallMCSAssumptionsallMUSAssumptionshittingSetDual optUpdateLBsolveWBOoptObjFunVarsHeuristicsoptSearchStrategyoptTrialLimitConfSearchStrategyMSU4 UnsatBasedAdaptiveSearch BinarySearch LinearSearchminimize tweakParams mUniverse mRelations mFunctionsEntity GenFormulaExistsForallAtomFTPAppTmVarTmAppGenLitNegPosPSymFSym toSkolemNF showEntity showModel findModelFlatTermFTAppFTConstmerge areCongruent MonomialOrder MonicMonomialmmToMapMonomialX UPolynomial PrettyVar pPrintVar PrettyCoeff pPrintCoeffisNegativeCoeff PrintOptions pOptPrintVarpOptPrintCoeffpOptIsNegativeCoeffpOptMonomialOrderContPPcontpp PolynomialcoeffMapDegreedeg Variablesvar variablesconstant fromTerms fromCoeffMap fromMonomialterms leadingTermcoeff lookupCoeff isPrimitivederivintegralevalevalAevalMsubstsubstAsubstMisRootOfmapVarmapCoeffassociatedMonicPolynomialtoUPolynomialOf polyMDivModreducedefaultPrintOptions prettyPrintpolyDivpolyMod polyDivModpolyGCDpolyLCMprempolyGCD'monomialDegree monomialProdmonomialDivisible monomialDiv monomialDerivmonomialIntegralmmOne mmFromList mmFromMap mmFromIntMapmmToList mmToIntMapmmProd mmDivisiblemmDivmmDeriv mmIntegralmmLCMmmGCDmmMapVarlexrevlexgrlexgrevlexStrategy SugarStrategyNormalStrategy optStrategy spolynomialbasisbasis' reduceGBasis SturmChain sturmChainnumRoots numRoots'separate separate'halvehalve'narrownarrow'approxapprox' normalizePolyrootAddrootMul rootShift rootScale rootRecip rootSimpPoly rootNthRootlift2findPolyfactorsqfree berlekampbasisOfBerlekampSubalgebra interpolateNthRootgraeffesMethodSignZero signNegatesignMul signRecipsignDivsignPowsignOfshowSign combineMaybe isIntegerfracPart showRationalshowRationalAsFiniteDecimal revSequencerevMapMrevForMDeltadeltafromRealrealPart deltaPartfloor'ceiling' isInteger'SOSSOSTypeS2S1RelOpEqlLe BoundExprPosInfFiniteNegInfLabelBoundsVarInfovarNamevarType varBoundsVarTypeSemiContinuousVariableIntegerVariableContinuousVariable constrType constrLabelconstrIndicator constrBodyConstraintTypeUserDefinedCutLazyConstraintNormalConstraintObjectiveFunctionExprLPdirobjectiveFunction constraintsvarInfosos defaultBounds defaultLB defaultUB getVarInfo getVarType getBoundsintegerVariablessemiContinuousVariablesLanguageYICESSMTLIB2 optLanguage optCheckSAToptProduceModel optOptimize convertWBOAReal realRoots realRootsExapproxIntervalnthRootminimalPolynomial isRationalisAlgebraicIntegerheight rootIndex simpARealPoly goldenRatiovarsBoolean.=>..<=>. ComplementnotBtruefalse.&&..||.andBorBRelIsRelrelNEqGtLtflipOpnegOpshowOpevalOp.<..<=..>..>=..==../=. BoundsEnvunitVarasConstmapCoeffWithVarevalExpr evalLinearlift1 applySubst applySubst1extract extractMaybeshowExprshowAtomevalAtomsolveForcomputeInterval inferBounds PivotResultRowColIndexRowIndexTableauobjRowpivot lookupRowsetRow setObjFuncurrentObjValuesimplex dualSimplexphaseItoCSVtoStandardFormtoStandardForm'solve' emptySolvergensym getTableau putTableauaddArtificialVariablegetArtificialVariablesclearArtificialVariablesdefinegetDefs addConstraintaddConstraint2 expandDefs expandDefs'tableaugetModelnormalizeConstraintcollectNonnegVars OptResultOptimum UnboundedOptUnsatmaximizeoptimizeRawModelobjLimitObjLimitUnsat PivotStrategyPivotStrategyLargestCoefficientPivotStrategyBlandRule SolverValuetoValue showValue GenericSolver cloneSolversetPivotStrategy assertAtom assertAtomEx assertLower assertUppergetObj setOptDir getOptDirisBasicVariableisNonBasicVariable isFeasible isOptimalcheckrawModel getObjValuegetLBgetUBgetValuegetRowgetColgetCoeff clearLoggerdumpsetShowRational setNThread linearizeaddConstraintSoftDNFunDNFCellIntervalPointRootOfproject findSampleevalCell evalPointcheckRealByCADcheckRealBySimplexNonnegRatExprZtoRatfromRat fromLAAtomtoLAAtomproject'projectN projectN'pushNot SatResultSatUnknown:/::*::+:Const fromFOLAtom toFOLFormula fromFOLExpr toFOLExpr solveFormulaeliminateQuantifierseliminateQuantifiers' QFFormulaOr'And'F'T' Divisible.|. evalQFFormula projectCases projectCasesNsolveQFFormula solveQFLA optCheckRealcheckRealNoCheck checkRealByFMpackageVersionscatchIObindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileName pDataFilepSparseDataFilepComment pBlockStructpCostspDenseMatricespSparseMatricesnat_linenatintrealsign renderImpl renderVecshowRatconcatSsepBySreadUnsignedIntegerbase Text.Readread integer-gmpGHC.Integer.TypeIntegerreadIntreadUnsignedIntSeqQueueclear$fQueueSizeSeqQueueIO$fDequeueSeqQueueIOa$fEnqueueSeqQueueIOa$fNewFifoSeqQueueIO queue-0.1.2Data.Queue.ClassesnewFifoNewFifo enqueueBatchenqueueEnqueue dequeueBatchdequeueDequeue queueSize QueueSize PriorityQueuenewPriorityQueueghc-prim GHC.ClassesOrdnewPriorityQueueBygetElemsclone getHeapArrayltheaptableValueIndexmemberupdateupdownleftrightparent cloneArraycopyTo$fQueueSizePriorityQueueIO$fDequeuePriorityQueueIOInt$fEnqueuePriorityQueueIOInt $fShowLBoolformulasequence_of_commentscomment#sequence_of_comments_or_constraintscomment_or_constraint objective constraintsum weightedtermintegerunsigned_integerrelational_operator variablenameoneOrMoreSpacezeroOrMoreSpaceeolsemitermoneOrMoreLiterals softformula softheader'wbo_sequence_of_comments_or_constraintswbo_comment_or_constraintsoftconstraintshowSumshowWeightedTermshowLitshowConstraintshowSoftConstraint GHC.TypesTrueFalse Data.MaybeNothingsplit isComment parseLine parseCNFLineseqList parseWCNFLinegenObjbasicPropagatewatch toConstraintSomeConstraint basicReasonOf svVarDecaysvVarInc svClaDecaysvClaIncsvRestartFirst svRestartIncsvLearntSizeFirstsvLearntSizeIncsvCCMin ldWatcheswatchessimplify backtrackTo propagatereasonOf PBAtLeastDatapbTermspbDegreepbSlack pbActivity pbReasons AtLeastData atLeastLits atLeastNumatLeastActivity ClauseDataclaLits claActivityConstrPBAtLeast ConstrAtLeast ConstrClauseattachwatchedLiterals toPBAtLeast isSatisfiedconstrIsProtectedconstrActivityconstrBumpActivityconstrRescaleActivity SearchResultSRBudgetExceeded SRRestart SRFinished VarActivitysvOk svVarQueuesvTrail svVarCounter svVarData svClauseDB svLearntDB svAssumptionssvLevel svBCPQueuesvModel svNDecisionsvNRandomDecision svNConflict svNRestart svNAssignssvNFixed svNLearntGCsvNRemovedConstrsvRestartStrategy svLearntLimsvLearntLimAdjCntsvLearntLimSeqsvLearningStrategysvLogger svStartWC svLastStatWC svCheckModel svRandomFreq svRandomGensvFailedAssumptions svConfBudgetLitDataVarData vdAssignment vdPolarity vdPosLitData vdNegLitData vdActivity AssignmentaValueaLevelaReason aBacktrackCBsLevel levelRoot newVarData newLitDatavarDatalitDatavarValuelitValuevarLevellitLevel varReasonmarkBad bcpEnqueue bcpDequeueassignByassignassign_unassignaddBacktrackCBaddToDB addToLearntDBreduceDB varActivityvarRescaleAllActivitylearntConstraintsltVarsolve_search pickBranchLitdecidededuceanalyzeConflict analyzeFinalanalyzeConflictHybridpbBacktrackLevelminimizeConflictClauseminimizeConflictClauseLocalminimizeConflictClauseRecursivepopTrailconstructModelconstrDecayActivityconstrRescaleAllActivity resetStatprintStatHeader printStat showTimeDiffdetachisLocked newClauseDatainstantiateClausenewAtLeastDatainstantiateAtLeastnewPBAtLeastData instantiatePB pbPropagate pbOverSAT mkRestartSeqminiSatRestartSeqarminRestartSeqlubyRestartSeqlubyallManyMshift debugModecheckSatisfied sanityCheckdumpVarActivitydumpClaActivityloglogIO$fConstraintPBAtLeastData$fConstraintAtLeastData$fConstraintClauseData$fEqClauseData$fConstraintSomeConstraint$fExceptionBudgetExceededencUsePB encConjTableencodeToClause encodeToLit addIsConjOf addIsDisjOfpropagateChoicemaintainNoSupersetsSGenAtomSGenTermSubst GroundClause GroundLit GroundAtom GroundTermMSClauseSLitSAtomSTermSEqSPAppSTmVarSTmAppVarstoNNFtest_toSkolemNFflatten test_flattenshowEntityTuple enumSubstsimplifyGroundClause collectFSym collectPSymtesttest2$fVarsSGenAtom$fVarsSGenTerm$fVarsGenFormula $fVarsAtom $fVarsTerm $fVarsGenLit$fVars[] svPendingsvRepresentativeTable svClassList svUseList svLookupTable PendingEqnEqn1 normalizelookup setLookup addToPendinggetRepresentative asConstantscalezeroplusnegprodisZerocontIppIprettyPrintMonomialaddPrecmulPrecratPrecexpPrecappPrec mmNormalize$fVariablesMonicMonomial$fDegreeMonicMonomial$fNFDataMonicMonomial$fShowMonicMonomial $fNFDataX $fPrettyVarX$fPrettyVarInt$fPrettyCoeffPolynomial$fPrettyCoeffPrimeField$fPrettyCoeffRatio$fPrettyCoeffInteger$fPrettyPolynomial $fContPPRatio$fContPPInteger$fDegreePolynomial$fVariablesPolynomial$fNFDataPolynomial$fShowPolynomial$fVectorSpacePolynomial$fAdditiveGroupPolynomial$fNumPolynomialItemiFstiSndiCmpiLCMitempairs$fEqItem $fOrdItemboundscountSignChanges countChanges boundIntervalsqfree' polyPthRootff'$fDivisionSign $fUnitalSign$fCommutativeSign$fMultiplicativeSign$fEnumerableSign $fNFDataSignGHC.Realfloorceiling$fVectorSpaceDelta$fAdditiveGroupDeltaBounds2defaultVarInfointersectBoundschar'string'septokidentlabelreservedlpfileproblemendconstraintSection subjectTorelOplazyConstraintsSectionuserCutsSection boundsSectionbound boundExprinfgeneralSection binarySection semiSection sosSectionexprqexprqtermqfactornumberrender' renderExpr showCoeff showConstTerm renderLabelrenderOprenderConstraintrenderBoundExprrenderVariableListfill$fVariablesConstraint$fVariablesTerm $fVariablesLP $fVariables[]EnvunlinesSlistand'or'not'realNumtoRealassert conditionsnonAdjacentPairsencodetestFiletestdataconvExprconvVarcollectVariablesrelaxGErelaxLEcollectVariablesWBOmtrans BoundTypeSCUILIBVPLMIFRFXUPLOColumnspace'spaces'spaces1' commentlinenewline'stringLnmpsfile nameSectionobjSenseSectionobjNameSection rowsSectionlazyConsSectionrowsBody colsSection rowAndVal rhsSection rangesSection boundTypequadObjSectionqMatrixSectionqcMatrixSectionindicatorsSectionfactor'factor2isUPolyZtoZxvalues interleavefactors primeFactorsproperFraction'properFraction truncate'truncateround'round $fDegreeARealRealRoot realRoots'realRoot realRoot' scaleAReal shiftARealnthRootsinterval$fPrettyCoeffAReal $fPrettyAReal$fRealFracAReal $fRealAReal$fFractionalAReal $fNumAReal $fOrdAReal $fEqAReallattices-1.2.1.1Algebra.Latticetopbottommeetjoinmeetsjoins $fFunctorRel$fVariablesRel $fIsReleRel$fComplementRel normalizeExpr showExprWith$fVectorSpaceExpr$fAdditiveGroupExpr $fNFDataExpr $fReadExpr $fShowExpr$fVariablesExprtightenToIntegerCstrict PivotSuccess PivotFinishedPivotUnbounded normalizeRow copyObjRow validTableau isImproving primalPivot dualPivotremoveArtificialVariableskuhn_7_3 test_kuhn_7_3 example_5_7test_example_5_7mkModel costOrdering elimOrdering example_3_2test_3_2 example_3_5test_3_5 example_4_1test_4_1 example_4_2test_4_2 example_4_3test_4_3 example_4_5test_4_5 example_4_6test_4_6 example_4_7test_4_7testAll increaseNB decreaseNB svTableausvLBsvUBsvVCntsvOptDirsvDefDBsvPivotStrategysvNPivotobjVar simplifyAtomselectViolatingBasicVariableselectEnteringVariable canIncrease canDecrease canIncrease1 canDecrease1 dualRTestprunepivotAndUpdatefindMtestLBtestUBbasicVariables recordTime showDeltatest4test5test6dumpSizecheckFeasibilitycheckNBFeasibilitycheckOptimality$fSolverValueDelta$fSolverValueRatioNodendLPndDepthndValueMIP mipRootLPmipIVsmipBest mipNThread mipLoggermipShowRationalbranchAndBoundviolatedderiveGomoryCutcanDeriveGomoryCut $fNumExpr $fBooleanDNF$fBoundedLatticeDNF$fBoundedMeetSemiLatticeDNF$fBoundedJoinSemiLatticeDNF $fLatticeDNF$fMeetSemiLatticeDNF$fJoinSemiLatticeDNF$fComplementDNFCoeffSignConfshowCell showPoint emptySignConf showSignConfmr test_mr_1 test_mr_2runMassume buildSignConfcollectPolynomialsgetHighestNonzeroTermzmodrefineSignConfshowDNFdumpProjection dumpSignConftest1atest1btest1ctest2atest2b test_projecttest_project_printtest_project_2test_project_3_print test_solvetest_collectPolynomialstest_collectPolynomials_printtest_buildSignConftest_buildSignConf_printtest_buildSignConf_2test_buildSignConf_2_printtest_buildSignConf_3test_buildSignConf_3_printBoundsRnormalizeExprRevalRatconstraintsToDNFatomR'leRltRgeRgtR collectBoundsboundConditions evalBoundsgcd'$fComplementLit$fVariablesLit$fBooleanFormula$fBoundedLatticeFormula$fBoundedMeetSemiLatticeFormula$fBoundedJoinSemiLatticeFormula$fLatticeFormula$fMeetSemiLatticeFormula$fJoinSemiLatticeFormula$fComplementFormula$fVariablesFormula$fIsRelExprFormula $fFunctorExpr$fFractionalExprWitnessWCase2WCase1leZltZgeZgtZeqZsubst1 simplify1 simplifyLit evalWitness projectCases' testHagiyatest3$fIsRelExprQFFormula$fVariablesQFFormula$fBooleanQFFormula$fBoundedLatticeQFFormula!$fBoundedMeetSemiLatticeQFFormula!$fBoundedJoinSemiLatticeQFFormula$fLatticeQFFormula$fMeetSemiLatticeQFFormula$fJoinSemiLatticeQFFormula$fComplementQFFormula IntervalZBoundsZcollectBoundsZisExactchooseVariable evalBoundsZelimEqapplySubst1LitunivZ intersectZpickupZpickupErrErrUnsat ErrUnboundedndSolver ndTableau ndLowerBoundtableau'conv mkInitialNodeisStrictlyBettertraverseexample1test1test1'example2