<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>CVC3: CVC3::ArithTheoremProducer Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.4 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">CVC3 <span id="projectnumber">2.4.1</span></div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespaceCVC3.html">CVC3</a> </li> <li class="navelem"><a class="el" href="classCVC3_1_1ArithTheoremProducer.html">ArithTheoremProducer</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="#pri-attribs">Private Attributes</a> </div> <div class="headertitle"> <div class="title">CVC3::ArithTheoremProducer Class Reference</div> </div> </div> <div class="contents"> <!-- doxytag: class="CVC3::ArithTheoremProducer" --><!-- doxytag: inherits="CVC3::ArithProofRules,CVC3::TheoremProducer" --> <p><code>#include <<a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>></code></p> <div class="dynheader"> Inheritance diagram for CVC3::ArithTheoremProducer:</div> <div class="dyncontent"> <div class="center"> <img src="classCVC3_1_1ArithTheoremProducer.png" usemap="#CVC3::ArithTheoremProducer_map" alt=""/> <map id="CVC3::ArithTheoremProducer_map" name="CVC3::ArithTheoremProducer_map"> <area href="classCVC3_1_1ArithProofRules.html" alt="CVC3::ArithProofRules" shape="rect" coords="0,0,181,24"/> <area href="classCVC3_1_1TheoremProducer.html" alt="CVC3::TheoremProducer" shape="rect" coords="191,0,372,24"/> </map> </div></div> <p><a href="classCVC3_1_1ArithTheoremProducer-members.html">List of all members.</a></p> <h2><a name="pub-methods"></a> Public Member Functions</h2> <ul> <li><a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8216db52c44de1ba9a50ca6dfea24720">ArithTheoremProducer</a> (<a class="el" href="classCVC3_1_1TheoremManager.html">TheoremManager</a> *tm, <a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a> *theoryArith) <dl class="el"><dd class="mdescRight">Constructor. <a href="#a8216db52c44de1ba9a50ca6dfea24720"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae0d46b17ef012eabbbe62cac026bfab9">rat</a> (<a class="el" href="classCVC3_1_1Rational.html">Rational</a> r) <dl class="el"><dd class="mdescRight">Create <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> from <a class="el" href="classCVC3_1_1Rational.html">Rational</a> (for convenience) <a href="#ae0d46b17ef012eabbbe62cac026bfab9"></a><br/></dl><li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4606a94098ae94cdae1b924dc7f7b4ae">realType</a> () <li><a class="el" href="classCVC3_1_1Type.html">Type</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8b33391347e9741339b674abd5c4fbf2">intType</a> () <li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9dfab0a471e7a705264be04007ac61e5">darkShadow</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &lhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &rhs) <dl class="el"><dd class="mdescRight">Construct the dark shadow expression representing lhs <= rhs. <a href="#a9dfab0a471e7a705264be04007ac61e5"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a1684298bef4bf1efdccb7078f5a6c96f">grayShadow</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &v, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &c1, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &c2) <dl class="el"><dd class="mdescRight">Construct the gray shadow expression representing c1 <= v - e <= c2. <a href="#a1684298bef4bf1efdccb7078f5a6c96f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7568925b6c26f1c7ba882893f596d214">varToMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">==> e = 1 * e <a href="#a7568925b6c26f1c7ba882893f596d214"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aaafdbe9dcc49728cc2bf16b43045c193">uMinusToMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">==> -(e) = (-1) * e <a href="#aaafdbe9dcc49728cc2bf16b43045c193"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab369e518fc2ee411503253fa0b1515d6">minusToPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &y) <dl class="el"><dd class="mdescRight">==> x - y = x + (-1) * y <a href="#ab369e518fc2ee411503253fa0b1515d6"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4671174ae8ff61c52f16ddd53a3cdd27">canonUMinusToDivide</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a515e5d076ed135a6d943c2f5d5e34188">canonDivideConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &d) <dl class="el"><dd class="mdescRight">(c) / d ==> (c/d), takes c and d <a href="#a515e5d076ed135a6d943c2f5d5e34188"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4d2d8da9de6d6faaa07758c01e3a9fe8">canonDivideMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &cx, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &d) <dl class="el"><dd class="mdescRight">(c * x) / d ==> (c/d) * x, takes (c*x) and d <a href="#a4d2d8da9de6d6faaa07758c01e3a9fe8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4338b85f1dd0fca0cc58e6b7259a20b4">canonDividePlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &d) <dl class="el"><dd class="mdescRight">(+ c ...)/d ==> push division to all the coefficients. <a href="#a4338b85f1dd0fca0cc58e6b7259a20b4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aa651eb7a4d20a77135efa2d3e984c355">canonDivideVar</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <dl class="el"><dd class="mdescRight">x / d ==> (1/d) * x, takes x and d <a href="#aa651eb7a4d20a77135efa2d3e984c355"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af24b2bc3bc03bc320707362f2460dd0e">simplifiedMultExpr</a> (std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > &mulKids) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a10ebfab26aa4ee1a147f08d8f6b94c45">canonMultConstMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a48b21552a97a3a75ae469fb48c155e51">canonMultConstPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aebf0a0b539104e2190b53351efc6116b">canonMultPowPow</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aabc24cdaf5d3a390f9880937bac17311">canonMultPowLeaf</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aae1bc41d54f8b148ce5cf9425ac688af">canonMultLeafLeaf</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a05b2608fd280890cb49bf4534a54e304">canonMultLeafOrPowMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9548361051bb6febc314faa107d2c2f5">canonCombineLikeTerms</a> (const std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > &sumExprs) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0b344f367f01d240d997df7edfe1a12c">canonMultLeafOrPowOrMultPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>virtual <a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac0363ff2f51ad1173ed1e46046b0654a">canonMultPlusPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e2) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab5166b206f49897a6a49ba0014c0b808">canonMultMtermMterm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a41f7000c783a82e9a86cad823b06bff4">canonPlus</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">Canonize (PLUS t1 ... tn) <a href="#a41f7000c783a82e9a86cad823b06bff4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7b07ab799dbdf80254df3ec7fc35d36d">canonInvertConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#afb0c2a89f3373dcb26cd516714d0e49a">canonInvertLeaf</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a6a829cb16f960f9e7c2f25ea4906eaba">canonInvertPow</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a70a381c22184655fb6d4f3b621bf216b">canonInvertMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7c7c860b193ec63a776dd13613aeca25">canonInvert</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">==> 1/e = e' where e' is canonical; takes e. <a href="#a7c7c860b193ec63a776dd13613aeca25"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a77b99e94956d407e5cd20701e6771120">moveSumConstantRight</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a92540cc58f6203c2904fc2bd197190da">canonDivide</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9bd77385dd0cbaac271aaab4b6c6ec09">canonMult</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af6ba91fa47c4c9139c4d93fe3de0112f">canonMultTermConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &t) <dl class="el"><dd class="mdescRight">t*c ==> c*t, takes constant c and term t <a href="#af6ba91fa47c4c9139c4d93fe3de0112f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a529fe89fea243d932879a1a74e9d36a7">canonMultTerm1Term2</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &t1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &t2) <dl class="el"><dd class="mdescRight">t1*t2 ==> Error, takes t1 and t2 where both are non-constants <a href="#a529fe89fea243d932879a1a74e9d36a7"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a55ec89d6cf310694e9f4b1013a795ce2">canonMultZero</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">0*t ==> 0, takes 0*t <a href="#a55ec89d6cf310694e9f4b1013a795ce2"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae5a6e1b2c7b9239b7e53027c51a2dc7e">canonMultOne</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">1*t ==> t, takes 1*t <a href="#ae5a6e1b2c7b9239b7e53027c51a2dc7e"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#affbdf02016310d8cd6a9037fdd9eddc6">canonMultConstConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c2) <dl class="el"><dd class="mdescRight">c1*c2 ==> c', takes constant c1*c2 <a href="#affbdf02016310d8cd6a9037fdd9eddc6"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad51f0d5c3232b6c247939a10e253f53d">canonMultConstTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c2, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &t) <dl class="el"><dd class="mdescRight">c1*(c2*t) ==> c'*t, takes c1 and c2 and t <a href="#ad51f0d5c3232b6c247939a10e253f53d"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab0e0e14c71501a9f8208963c54010fe4">canonMultConstSum</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &c1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &sum) <dl class="el"><dd class="mdescRight">c1*(+ c2 v1 ...) ==> (+ c' c1v1 ...), takes c1 and the sum <a href="#ab0e0e14c71501a9f8208963c54010fe4"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af673275ae1c3dc606b29979b60df35c5">canonPowConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &pow) <dl class="el"><dd class="mdescRight">c^n = c' (compute the constant power expression) <a href="#af673275ae1c3dc606b29979b60df35c5"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a19964269c705bafbe69cb1052fe7bec8">canonFlattenSum</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">flattens the input. accepts a PLUS expr <a href="#a19964269c705bafbe69cb1052fe7bec8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac9ee451992ab00f200ee8aee26e99e0c">canonComboLikeTerms</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">combine like terms. accepts a flattened PLUS expr <a href="#ac9ee451992ab00f200ee8aee26e99e0c"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0040d5d848f7040df940b92d95a75930">multEqZero</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9cd618abf322c0389f1fc40f274059c2">powEqZero</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3c454b863142345e1093663fbb89d306">elimPower</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a21456f49d3a6711f21e3c13fb3c0d34a">elimPowerConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &root) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#afbf059903de8b1e87aef9a4a75340d6c">evenPowerEqNegConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aa3838fe1c003a9f47f3ec8344d192dea">intEqIrrational</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isInt) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a621015d4894231ecd9ab465494e9c9c8">constPredicate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">e0 @ e1 <==> true | false, where @ is {=,<,<=,>,>=} <a href="#a621015d4894231ecd9ab465494e9c9c8"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3eb1309c184247837239c098d9c9100a">rightMinusLeft</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">e[0] @ e[1] <==> 0 @ e[1] - e[0], where @ is {=,<,<=,>,>=} <a href="#a3eb1309c184247837239c098d9c9100a"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8196042ba713a7c782ee4b5eb4c69ccc">leftMinusRight</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">e[0] @ e[1] <==> e[0] - e[1] @ 0, where @ is {=,<,<=,>,>=} <a href="#a8196042ba713a7c782ee4b5eb4c69ccc"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3c3041eb3b0144e21d72ffe6999953e2">plusPredicate</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &y, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &z, int kind) <dl class="el"><dd class="mdescRight">x @ y <==> x + z @ y + z, where @ is {=,<,<=,>,>=} (given as 'kind') <a href="#a3c3041eb3b0144e21d72ffe6999953e2"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae66ddbc1457e3c032ea9059625059992">multEqn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &y, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &z) <dl class="el"><dd class="mdescRight">x = y <==> x * z = y * z, where z is a non-zero constant <a href="#ae66ddbc1457e3c032ea9059625059992"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aa371616db9ac1a4a9c7a4b1ce0f2a05c">divideEqnNonConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &x, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &y, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &z) <li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3d245f36a2e42684ec2fd9356d89111f">multIneqn</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &z) <dl class="el"><dd class="mdescRight">Multiplying inequation by a non-zero constant. <a href="#a3d245f36a2e42684ec2fd9356d89111f"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a517d45514aefcab0dc6aabb400f149fd">eqToIneq</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">x = y ==> x <= y and x >= y <a href="#a517d45514aefcab0dc6aabb400f149fd"></a><br/></dl><li>virtual <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af069fc1b320c0455ec7cde192668884b">flipInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">"op1 GE|GT op2" <==> op2 LE|LT op1 <a href="#af069fc1b320c0455ec7cde192668884b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a07368f8a2e12b5c189645a99bc934102">negatedInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">Propagating negation over <,<=,>,>=. <a href="#a07368f8a2e12b5c189645a99bc934102"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8092c96a87d952fc1e572bb9237ff994">realShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &alphaLTt, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &tLTbeta) <dl class="el"><dd class="mdescRight">Real shadow: a <(=) t, t <(=) b ==> a <(=) b. <a href="#a8092c96a87d952fc1e572bb9237ff994"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a6e14251c516153e14539a34598daca04">realShadowEq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &alphaLEt, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &tLEalpha) <dl class="el"><dd class="mdescRight">alpha <= t <= alpha ==> t = alpha <a href="#a6e14251c516153e14539a34598daca04"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a7f4c82e18e7a3ed3b5b22a6ce7d7cf27">finiteInterval</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &aLEt, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &tLEac, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isInta, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntt) <dl class="el"><dd class="mdescRight">Finite interval for integers: a <= t <= a + c ==> G(t, a, 0, c) <a href="#a7f4c82e18e7a3ed3b5b22a6ce7d7cf27"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aef6fd1261bea182d4554d0423803b05e">darkGrayShadow2ab</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &betaLEbx, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &axLEalpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntAlpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntBeta, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntx) <dl class="el"><dd class="mdescRight">Dark & Gray shadows when a <= b. <a href="#aef6fd1261bea182d4554d0423803b05e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aaf64935bb620ab79fd7383f1913bd8b8">darkGrayShadow2ba</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &betaLEbx, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &axLEalpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntAlpha, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntBeta, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntx) <dl class="el"><dd class="mdescRight">Dark & Gray shadows when b <= a. <a href="#aaf64935bb620ab79fd7383f1913bd8b8"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#aafadfc6ae6013ab18a7b4ee570cce16a">expandDarkShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &darkShadow) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac8a2c0a97ace8f17153ad784c87ba5a2">expandGrayShadow0</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &grayShadow) <dl class="el"><dd class="mdescRight">GRAY_SHADOW(v, e, c, c) ==> v=e+c. <a href="#ac8a2c0a97ace8f17153ad784c87ba5a2"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a14af8b5ecbfaaee4600453bd9d681838">splitGrayShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &grayShadow) <dl class="el"><dd class="mdescRight">G(x, e, c1, c2) ==> (G1 or G2) and (!G1 or !G2) <a href="#a14af8b5ecbfaaee4600453bd9d681838"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#acaa835c8569f6667fa26bfedb0502cf1">splitGrayShadowSmall</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &grayShadow) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac6714d4922aea3413f9aeed742bc645e">expandGrayShadow</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &grayShadow) <dl class="el"><dd class="mdescRight">G(x, e, c1, c2) ==> e+c1 <= x AND x <= e+c2. <a href="#ac6714d4922aea3413f9aeed742bc645e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af091e13254c983370c46707a03b1ad30">expandGrayShadowConst</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &grayShadow) <dl class="el"><dd class="mdescRight">Optimized rules: GRAY_SHADOW(a*x, c, c1, c2) ==> [expansion]. <a href="#af091e13254c983370c46707a03b1ad30"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af0070c5da95d33029e54b1d669d5b1f0">grayShadowConst</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &g) <dl class="el"><dd class="mdescRight">|- G(ax, c, c1, c2) ==> |- G(x, 0, ceil((c1+c)/a), floor((c2+c)/a)) <a href="#af0070c5da95d33029e54b1d669d5b1f0"></a><br/></dl><li><a class="el" href="classCVC3_1_1Rational.html">Rational</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a529e92e59e9009e3330a8592c9cb56fe">constRHSGrayShadow</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &c, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &b, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &a) <dl class="el"><dd class="mdescRight">Implements j(c,b,a) <a href="#a529e92e59e9009e3330a8592c9cb56fe"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ac5d4056f00cee80d73b5b46f63bd5b3d">lessThanToLE</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &less, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntLHS, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntRHS, bool changeRight) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af55c5d0a2626f955b0843381ca8b50f3">lessThanToLERewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &ineq, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntLHS, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntRHS, bool changeRight) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a92936e3de514c430659486b00e84b0a9">intVarEqnConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &eqn, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntx) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a85e9c7d93d6d1433fea606b0c3878e25">IsIntegerElim</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntx) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff">eqElimIntRule</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &eqn, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntx, const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &isIntVars) <dl class="el"><dd class="mdescRight">Equality elimination rule for integers: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\mathsf{int}(a\cdot x)\quad \mathsf{int}(C+\sum_{i=1}^{n}a_{i}\cdot x_{i})} {a\cdot x=C+\sum_{i=1}^{n}a_{i}\cdot x_{i} \quad\equiv\quad x=t_{2}\wedge 0=t_{3}} \]" src="form_311.png"/> </p> <p> See the detailed description for explanations. <a href="#a49d6559f50d51cde3c2e723c2a254cff"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#af1baf70d6108dc52cbb9704e2a8889ec">isIntConst</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <dl class="el"><dd class="mdescRight">return e <=> TRUE/FALSE for e == IS_INTEGER(c), where c is a constant <a href="#af1baf70d6108dc52cbb9704e2a8889ec"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a512f22a4a025477ced8c27f3d62809d7">equalLeaves1</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &e) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a77ae567431bf98e20cc08903deb2ec99">equalLeaves2</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &e) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a8de6b6b44c60cf495b455b980a7c681b">equalLeaves3</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &e) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a97768870957319cdc68eb94694a37dc5">equalLeaves4</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &e) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3d6e1d8668360c20b5a6a47e3fcc4612">diseqToIneq</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &diseq) <dl class="el"><dd class="mdescRight">x /= y ==> (x < y) OR (x > y) <a href="#a3d6e1d8668360c20b5a6a47e3fcc4612"></a><br/></dl><li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a753c339b31e38915ae6f06e0fe6e48da">dummyTheorem</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a23051d23d509f9cda35c64d4a5ff1dbf">oneElimination</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &x) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad4513630a9eec6c841b527222a79ea1d">clashingBounds</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &lowerBound, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &upperBound) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3b2bea72cd9163daa7c41388037bca29">addInequalities</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm1, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &thm2) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0eb949bb19e618a8318f236b249fadd5">addInequalities</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &thms) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a364ef37224bae3afb4f62a5c0f75d02c">implyWeakerInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr2) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a1bf4d45330b587882e726daa9117cdfb">implyNegatedInequality</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr2) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab9395a2ee958d70c780df2514e517320">integerSplit</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &intVar, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &intPoint) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a43fa5f7c8c3ad3915de7f068ac8cefbd">trustedRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr1, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &expr2) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a4b28aa17702ca3f9703e61ca012ca236">rafineStrictInteger</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntConstrThm, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &constr) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#afd5bca9b136254b904b931680180ac83">simpleIneqInt</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &ineq, const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntRHS) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad5f121b6b7d6b8ae951dfb4cce064575">intEqualityRationalConstant</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &isIntConstrThm, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &constr) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0111aa5645658dbd6a4bc030178edb94">cycleConflict</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &inequalitites) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#abb8aff055ea56ad8de2b66fd9a7aeba9">implyEqualities</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &inequalities) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae3a7aa0ebe8e84b806efaa59278ea75e">implyWeakerInequalityDiffLogic</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &antecedentThms, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &implied) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab794c1f9d6e971ac56e0063f409b4774">implyNegatedInequalityDiffLogic</a> (const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &antecedentThms, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &implied) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a84a9652acc5908e5d1ead5c54c1f2d90">expandGrayShadowRewrite</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &theShadow) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ae43400e7e4c9e3695a75da3bd5718eda">compactNonLinearTerm</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &nonLinear) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a9edd8b9ee6a8b4d14e9a2f967b78d52f">nonLinearIneqSignSplit</a> (const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> &ineqThm) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a45d8f89bdb0e57ddbaec273a24bf34b4">implyDiffLogicBothBounds</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &x, std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &c1_le_x, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> c1, std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > &x_le_c2, <a class="el" href="classCVC3_1_1Rational.html">Rational</a> c2) <li><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a0433b1ba53a33275015c26450acb09d0">powerOfOne</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e) </ul> <h2><a name="pub-static-methods"></a> Static Public Member Functions</h2> <ul> <li>static bool <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a23faa6b30e4b01d7540ac1e22e6e06ce">greaterthan</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &) </ul> <h2><a name="pri-methods"></a> Private Member Functions</h2> <tr><td colspan="2"><div class="groupHeader">Auxiliary functions for eqElimIntRule()</div></td></tr> <tr><td colspan="2"><div class="groupText"><p>Methods that compute the subterms used in <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers: See the detailed description for explanations.">eqElimIntRule()</a> </p> </div></td></tr> <ul> <li><a class="el" href="classCVC3_1_1Rational.html">Rational</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a3cb8580c7627250ffe999de9a1b2c8c3">modEq</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &i, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &m) <dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2) <a href="#a3cb8580c7627250ffe999de9a1b2c8c3"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a47a517c15b57ba19b7759a4ba925e306">create_t</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &eqn) <dl class="el"><dd class="mdescRight">Create the term 't'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers: See the detailed description for explanations.">eqElimIntRule()</a>. <a href="#a47a517c15b57ba19b7759a4ba925e306"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ab20380e74e431d9956c588d45d5121a4">create_t2</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &lhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &rhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &t) <dl class="el"><dd class="mdescRight">Create the term 't2'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers: See the detailed description for explanations.">eqElimIntRule()</a>. <a href="#ab20380e74e431d9956c588d45d5121a4"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a77e9c5681a02ab61f1311628e843d3db">create_t3</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &lhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &rhs, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &t) <dl class="el"><dd class="mdescRight">Create the term 't3'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers: See the detailed description for explanations.">eqElimIntRule()</a>. <a href="#a77e9c5681a02ab61f1311628e843d3db"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a10c569edc893a67b42af659633b3f20d">sumModM</a> (std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > &summands, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &sum, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &divisor) <dl class="el"><dd class="mdescRight">Takes sum = a_0 + a_1*x_1+...+a_n*x_n and returns the vector of similar monomials (in 'summands') with coefficients mod(a_i, m). If divide flag is true, the coefficients will be mod(a_i,m)/m. <a href="#a10c569edc893a67b42af659633b3f20d"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a69adf7d70a6a71e5c0e3489535a18108">monomialModM</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &divisor) <dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2) <a href="#a69adf7d70a6a71e5c0e3489535a18108"></a><br/></dl><li>void <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a32e61136df79a76fe1ed853ee6b8dc2e">sumMulF</a> (std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > &summands, const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &sum, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &divisor) <dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2) <a href="#a32e61136df79a76fe1ed853ee6b8dc2e"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a41da83b4624daa43a84bc049b5b7d836">monomialMulF</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &e, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &m, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &divisor) <dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2) <a href="#a41da83b4624daa43a84bc049b5b7d836"></a><br/></dl><li><a class="el" href="classCVC3_1_1Rational.html">Rational</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad727620082aea32b487863ac5888eb1b">f</a> (const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &i, const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> &m) <dl class="el"><dd class="mdescRight">Compute floor(i/m+1/2) + mod(i,m) <a href="#ad727620082aea32b487863ac5888eb1b"></a><br/></dl><li><a class="el" href="classCVC3_1_1Expr.html">Expr</a> <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a073ec1476668043be44ae96519eae36d">substitute</a> (const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> &term, <a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > &eMap) <dl class="el"><dd class="mdescRight">Compute the special modulus: i - m*floor(i/m+1/2) <a href="#a073ec1476668043be44ae96519eae36d"></a><br/></dl></ul> <h2><a name="pri-attribs"></a> Private Attributes</h2> <ul> <li><a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a> * <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad2c70acba668e2582f0ebd9533646338">d_theoryArith</a> </ul> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00032">32</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> </div><hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a8216db52c44de1ba9a50ca6dfea24720"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::ArithTheoremProducer" ref="a8216db52c44de1ba9a50ca6dfea24720" args="(TheoremManager *tm, TheoryArithNew *theoryArith)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">CVC3::ArithTheoremProducer::ArithTheoremProducer </td> <td>(</td> <td class="paramtype"><a class="el" href="classCVC3_1_1TheoremManager.html">TheoremManager</a> * </td> <td class="paramname"><em>tm</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a> * </td> <td class="paramname"><em>theoryArith</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Constructor. </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00067">67</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a3cb8580c7627250ffe999de9a1b2c8c3"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::modEq" ref="a3cb8580c7627250ffe999de9a1b2c8c3" args="(const Rational &i, const Rational &m)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> ArithTheoremProducer::modEq </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>i</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>m</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Compute the special modulus: i - m*floor(i/m+1/2) </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02252">2252</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p> </div> </div> <a class="anchor" id="a47a517c15b57ba19b7759a4ba925e306"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::create_t" ref="a47a517c15b57ba19b7759a4ba925e306" args="(const Expr &eqn)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::create_t </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>eqn</em></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create the term 't'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers: See the detailed description for explanations.">eqElimIntRule()</a>. </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02192">2192</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="ab20380e74e431d9956c588d45d5121a4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::create_t2" ref="ab20380e74e431d9956c588d45d5121a4" args="(const Expr &lhs, const Expr &rhs, const Expr &t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::create_t2 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>lhs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>rhs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>t</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create the term 't2'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers: See the detailed description for explanations.">eqElimIntRule()</a>. </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02211">2211</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p> </div> </div> <a class="anchor" id="a77e9c5681a02ab61f1311628e843d3db"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::create_t3" ref="a77e9c5681a02ab61f1311628e843d3db" args="(const Expr &lhs, const Expr &rhs, const Expr &t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::create_t3 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>lhs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>rhs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>t</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create the term 't3'. See <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#a49d6559f50d51cde3c2e723c2a254cff" title="Equality elimination rule for integers: See the detailed description for explanations.">eqElimIntRule()</a>. </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02231">2231</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p> </div> </div> <a class="anchor" id="a10c569edc893a67b42af659633b3f20d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::sumModM" ref="a10c569edc893a67b42af659633b3f20d" args="(std::vector< Expr > &summands, const Expr &sum, const Rational &m, const Rational &divisor)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ArithTheoremProducer::sumModM </td> <td>(</td> <td class="paramtype">std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > & </td> <td class="paramname"><em>summands</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>sum</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>divisor</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Takes sum = a_0 + a_1*x_1+...+a_n*x_n and returns the vector of similar monomials (in 'summands') with coefficients mod(a_i, m). If divide flag is true, the coefficients will be mod(a_i,m)/m. </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02268">2268</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p> </div> </div> <a class="anchor" id="a69adf7d70a6a71e5c0e3489535a18108"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::monomialModM" ref="a69adf7d70a6a71e5c0e3489535a18108" args="(const Expr &e, const Rational &m, const Rational &divisor)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::monomialModM </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>divisor</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Compute the special modulus: i - m*floor(i/m+1/2) </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02288">2288</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01162">CVC3::Expr::getKids()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p> </div> </div> <a class="anchor" id="a32e61136df79a76fe1ed853ee6b8dc2e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::sumMulF" ref="a32e61136df79a76fe1ed853ee6b8dc2e" args="(std::vector< Expr > &summands, const Expr &sum, const Rational &m, const Rational &divisor)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ArithTheoremProducer::sumMulF </td> <td>(</td> <td class="paramtype">std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > & </td> <td class="paramname"><em>summands</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>sum</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>divisor</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Compute the special modulus: i - m*floor(i/m+1/2) </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02316">2316</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p> </div> </div> <a class="anchor" id="a41da83b4624daa43a84bc049b5b7d836"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::monomialMulF" ref="a41da83b4624daa43a84bc049b5b7d836" args="(const Expr &e, const Rational &m, const Rational &divisor)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::monomialMulF </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>m</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>divisor</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Compute the special modulus: i - m*floor(i/m+1/2) </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02336">2336</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p> </div> </div> <a class="anchor" id="ad727620082aea32b487863ac5888eb1b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::f" ref="ad727620082aea32b487863ac5888eb1b" args="(const Rational &i, const Rational &m)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> ArithTheoremProducer::f </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>i</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>m</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Compute floor(i/m+1/2) + mod(i,m) </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02261">2261</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p> </div> </div> <a class="anchor" id="a073ec1476668043be44ae96519eae36d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::substitute" ref="a073ec1476668043be44ae96519eae36d" args="(const Expr &term, ExprMap< Expr > &eMap)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::substitute </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>term</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classCVC3_1_1ExprMap.html">ExprMap</a>< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > & </td> <td class="paramname"><em>eMap</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Compute the special modulus: i - m*floor(i/m+1/2) </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02353">2353</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap< Data >::end()</a>, <a class="el" href="expr__map_8h_source.html#l00194">CVC3::ExprMap< Data >::find()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, and <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>.</p> </div> </div> <a class="anchor" id="ae0d46b17ef012eabbbe62cac026bfab9"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::rat" ref="ae0d46b17ef012eabbbe62cac026bfab9" args="(Rational r)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::ArithTheoremProducer::rat </td> <td>(</td> <td class="paramtype"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> </td> <td class="paramname"><em>r</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create <a class="el" href="classCVC3_1_1Expr.html" title="Data structure of expressions in CVC3.">Expr</a> from <a class="el" href="classCVC3_1_1Rational.html">Rational</a> (for convenience) </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00071">71</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00095">CVC3::TheoremProducer::d_em</a>, and <a class="el" href="expr__manager_8h_source.html#l00471">CVC3::ExprManager::newRatExpr()</a>.</p> </div> </div> <a class="anchor" id="a4606a94098ae94cdae1b924dc7f7b4ae"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::realType" ref="a4606a94098ae94cdae1b924dc7f7b4ae" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> CVC3::ArithTheoremProducer::realType </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00072">72</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> <p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00152">CVC3::TheoryArith::realType()</a>.</p> </div> </div> <a class="anchor" id="a8b33391347e9741339b674abd5c4fbf2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intType" ref="a8b33391347e9741339b674abd5c4fbf2" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Type.html">Type</a> CVC3::ArithTheoremProducer::intType </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00073">73</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> <p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00153">CVC3::TheoryArith::intType()</a>.</p> </div> </div> <a class="anchor" id="a9dfab0a471e7a705264be04007ac61e5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::darkShadow" ref="a9dfab0a471e7a705264be04007ac61e5" args="(const Expr &lhs, const Expr &rhs)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::ArithTheoremProducer::darkShadow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>lhs</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>rhs</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Construct the dark shadow expression representing lhs <= rhs. </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00075">75</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> <p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00159">CVC3::TheoryArith::darkShadow()</a>.</p> </div> </div> <a class="anchor" id="a1684298bef4bf1efdccb7078f5a6c96f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::grayShadow" ref="a1684298bef4bf1efdccb7078f5a6c96f" args="(const Expr &v, const Expr &e, const Rational &c1, const Rational &c2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> CVC3::ArithTheoremProducer::grayShadow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>v</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>c1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>c2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Construct the gray shadow expression representing c1 <= v - e <= c2. </p> <p>Alternatively, v = e + i for some i s.t. c1 <= i <= c2 </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00081">81</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> <p>References <a class="el" href="arith__theorem__producer_8h_source.html#l00033">d_theoryArith</a>, and <a class="el" href="theory__arith_8h_source.html#l00165">CVC3::TheoryArith::grayShadow()</a>.</p> </div> </div> <a class="anchor" id="a7568925b6c26f1c7ba882893f596d214"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::varToMult" ref="a7568925b6c26f1c7ba882893f596d214" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::varToMult </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>==> e = 1 * e </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8b8db5ad0a8d4968f429e98964db93c1">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00055">55</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="aaafdbe9dcc49728cc2bf16b43045c193"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::uMinusToMult" ref="aaafdbe9dcc49728cc2bf16b43045c193" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::uMinusToMult </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>==> -(e) = (-1) * e </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa95faca93e7b4a1cf21667ff88d390e4">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00062">62</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="ab369e518fc2ee411503253fa0b1515d6"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::minusToPlus" ref="ab369e518fc2ee411503253fa0b1515d6" args="(const Expr &x, const Expr &y)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::minusToPlus </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>y</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>==> x - y = x + (-1) * y </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4319c532082c0f43794b34a2fb9df73f">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00075">75</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="a4671174ae8ff61c52f16ddd53a3cdd27"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonUMinusToDivide" ref="a4671174ae8ff61c52f16ddd53a3cdd27" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonUMinusToDivide </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>-(e) ==> e / (-1); takes 'e'</p> <p>Canon Rule for unary minus: it just converts it to division by -1, the result is not yet canonical: </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0053398d4a8fc49d9a2f8ede6949fc70">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00089">89</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="a515e5d076ed135a6d943c2f5d5e34188"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivideConst" ref="a515e5d076ed135a6d943c2f5d5e34188" args="(const Expr &c, const Expr &d)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivideConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>(c) / d ==> (c/d), takes c and d </p> <p>Canon Rules for division by constant 'd' </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a79c759f2bb7dc41ed98c5962febef804">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00098">98</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a4d2d8da9de6d6faaa07758c01e3a9fe8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivideMult" ref="a4d2d8da9de6d6faaa07758c01e3a9fe8" args="(const Expr &cx, const Expr &d)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivideMult </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>cx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>(c * x) / d ==> (c/d) * x, takes (c*x) and d </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aee487a2a1e8ce4c34075568eb70ea874">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00117">117</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a4338b85f1dd0fca0cc58e6b7259a20b4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDividePlus" ref="a4338b85f1dd0fca0cc58e6b7259a20b4" args="(const Expr &e, const Expr &d)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDividePlus </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>(+ c ...)/d ==> push division to all the coefficients. </p> <p>The result is not canonical, but canonizing the summands will make it canonical. Takes (+ c ...) and d </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a92846ee0cdab98d1759a13ff7e8d710d">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00145">145</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="aa651eb7a4d20a77135efa2d3e984c355"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivideVar" ref="aa651eb7a4d20a77135efa2d3e984c355" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivideVar </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>d</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>x / d ==> (1/d) * x, takes x and d </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4ab0351b340ecb82d6ced530e4f30510">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00168">168</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a23faa6b30e4b01d7540ac1e22e6e06ce"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::greaterthan" ref="a23faa6b30e4b01d7540ac1e22e6e06ce" args="(const Expr &, const Expr &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ArithTheoremProducer::greaterthan </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>l</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>r</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02379">2379</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p> </div> </div> <a class="anchor" id="af24b2bc3bc03bc320707362f2460dd0e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::simplifiedMultExpr" ref="af24b2bc3bc03bc320707362f2460dd0e" args="(std::vector< Expr > &mulKids)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::simplifiedMultExpr </td> <td>(</td> <td class="paramtype">std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > & </td> <td class="paramname"><em>mulKids</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00203">203</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>.</p> </div> </div> <a class="anchor" id="a10ebfab26aa4ee1a147f08d8f6b94c45"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstMult" ref="a10ebfab26aa4ee1a147f08d8f6b94c45" args="(const Expr &c, const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultConstMult </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00214">214</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a48b21552a97a3a75ae469fb48c155e51"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstPlus" ref="a48b21552a97a3a75ae469fb48c155e51" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultConstPlus </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00237">237</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p> </div> </div> <a class="anchor" id="aebf0a0b539104e2190b53351efc6116b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultPowPow" ref="aebf0a0b539104e2190b53351efc6116b" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultPowPow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00256">256</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p> </div> </div> <a class="anchor" id="aabc24cdaf5d3a390f9880937bac17311"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultPowLeaf" ref="aabc24cdaf5d3a390f9880937bac17311" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultPowLeaf </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00296">296</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p> </div> </div> <a class="anchor" id="aae1bc41d54f8b148ce5cf9425ac688af"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultLeafLeaf" ref="aae1bc41d54f8b148ce5cf9425ac688af" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultLeafLeaf </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00335">335</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p> </div> </div> <a class="anchor" id="a05b2608fd280890cb49bf4534a54e304"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultLeafOrPowMult" ref="a05b2608fd280890cb49bf4534a54e304" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultLeafOrPowMult </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00363">363</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p> </div> </div> <a class="anchor" id="a9548361051bb6febc314faa107d2c2f5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonCombineLikeTerms" ref="a9548361051bb6febc314faa107d2c2f5" args="(const std::vector< Expr > &sumExprs)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonCombineLikeTerms </td> <td>(</td> <td class="paramtype">const std::vector< <a class="el" href="classCVC3_1_1Expr.html">Expr</a> > & </td> <td class="paramname"><em>sumExprs</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00434">434</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, and <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>.</p> </div> </div> <a class="anchor" id="a0b344f367f01d240d997df7edfe1a12c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultLeafOrPowOrMultPlus" ref="a0b344f367f01d240d997df7edfe1a12c" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultLeafOrPowOrMultPlus </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00532">532</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p> </div> </div> <a class="anchor" id="ac0363ff2f51ad1173ed1e46046b0654a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultPlusPlus" ref="ac0363ff2f51ad1173ed1e46046b0654a" args="(const Expr &e1, const Expr &e2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Expr.html">Expr</a> ArithTheoremProducer::canonMultPlusPlus </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00551">551</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p> </div> </div> <a class="anchor" id="ab5166b206f49897a6a49ba0014c0b808"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultMtermMterm" ref="ab5166b206f49897a6a49ba0014c0b808" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultMtermMterm </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa38d5c06ebe0b672570641fe933cfedb">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00574">574</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="debug_8h_source.html#l00037">FatalAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a41f7000c783a82e9a86cad823b06bff4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonPlus" ref="a41f7000c783a82e9a86cad823b06bff4" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonPlus </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Canonize (PLUS t1 ... tn) </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a225fe511e6f654f313048e86c1550510">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00746">746</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>.</p> </div> </div> <a class="anchor" id="a7b07ab799dbdf80254df3ec7fc35d36d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertConst" ref="a7b07ab799dbdf80254df3ec7fc35d36d" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00815">815</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="afb0c2a89f3373dcb26cd516714d0e49a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertLeaf" ref="afb0c2a89f3373dcb26cd516714d0e49a" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertLeaf </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00831">831</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>.</p> </div> </div> <a class="anchor" id="a6a829cb16f960f9e7c2f25ea4906eaba"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertPow" ref="a6a829cb16f960f9e7c2f25ea4906eaba" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertPow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00843">843</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, <a class="el" href="theory__arith_8h_source.html#l00216">CVC3::powExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a70a381c22184655fb6d4f3b621bf216b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvertMult" ref="a70a381c22184655fb6d4f3b621bf216b" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvertMult </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00862">862</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a7c7c860b193ec63a776dd13613aeca25"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonInvert" ref="a7c7c860b193ec63a776dd13613aeca25" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonInvert </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>==> 1/e = e' where e' is canonical; takes e. </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a9a806d487932bbfa9a019d4d1eed1cea">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00885">885</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a77b99e94956d407e5cd20701e6771120"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::moveSumConstantRight" ref="a77b99e94956d407e5cd20701e6771120" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::moveSumConstantRight </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Transform e = (SUM r t1 ... tn) @ 0 into (SUM t1 ... tn) @ -r. The first sum term (r) must be a rational and t1 ... tn terms must be canonised.</p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">e</td><td>the expression to transform </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>rewrite theorem representing the transformation </dd></dl> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a18e5970bc4f670a63ca5775750f099ab">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02773">2773</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a92540cc58f6203c2904fc2bd197190da"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonDivide" ref="a92540cc58f6203c2904fc2bd197190da" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonDivide </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>e[0]/e[1] ==> e[0]*(e[1])^-1 </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a198b0b44145b8e33555ffd212f43b7b3">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00907">907</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="theory__arith_8h_source.html#l00045">CVC3::DIVIDE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a9bd77385dd0cbaac271aaab4b6c6ec09"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMult" ref="a9bd77385dd0cbaac271aaab4b6c6ec09" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMult </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Multiply out the operands of the multiplication (each of them is expected to be canonised </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aca910e6ff44389aac100b14b486c1942">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00781">781</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, and <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>.</p> </div> </div> <a class="anchor" id="af6ba91fa47c4c9139c4d93fe3de0112f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultTermConst" ref="af6ba91fa47c4c9139c4d93fe3de0112f" args="(const Expr &c, const Expr &t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultTermConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>t</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>t*c ==> c*t, takes constant c and term t </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a11870b90dbfcc61d2b9a2820df7f6057">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00931">931</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a529fe89fea243d932879a1a74e9d36a7"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultTerm1Term2" ref="a529fe89fea243d932879a1a74e9d36a7" args="(const Expr &t1, const Expr &t2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultTerm1Term2 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>t1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>t2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>t1*t2 ==> Error, takes t1 and t2 where both are non-constants </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8b9abf99f0b013714eaaa49e81a618b9">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00945">945</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a55ec89d6cf310694e9f4b1013a795ce2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultZero" ref="a55ec89d6cf310694e9f4b1013a795ce2" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultZero </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>0*t ==> 0, takes 0*t </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aae559b4d1558fecba5621c9ba27daa88">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00958">958</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="ae5a6e1b2c7b9239b7e53027c51a2dc7e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultOne" ref="ae5a6e1b2c7b9239b7e53027c51a2dc7e" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultOne </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>1*t ==> t, takes 1*t </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a87f9a39ecb1bec46adff5187bc899726">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00967">967</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="affbdf02016310d8cd6a9037fdd9eddc6"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstConst" ref="affbdf02016310d8cd6a9037fdd9eddc6" args="(const Expr &c1, const Expr &c2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultConstConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>c1*c2 ==> c', takes constant c1*c2 </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a71be38a9fa2d89e147ac4fde35c49e21">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l00983">983</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="ad51f0d5c3232b6c247939a10e253f53d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstTerm" ref="ad51f0d5c3232b6c247939a10e253f53d" args="(const Expr &c1, const Expr &c2, const Expr &t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultConstTerm </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>t</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>c1*(c2*t) ==> c'*t, takes c1 and c2 and t </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a96b1cb83272cf80c2de663de429e6a15">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01001">1001</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="ab0e0e14c71501a9f8208963c54010fe4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonMultConstSum" ref="ab0e0e14c71501a9f8208963c54010fe4" args="(const Expr &c1, const Expr &sum)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonMultConstSum </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>c1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>sum</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>c1*(+ c2 v1 ...) ==> (+ c' c1v1 ...), takes c1 and the sum </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a978068749de266dbbba2000d9e0c3d39">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01021">1021</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="af673275ae1c3dc606b29979b60df35c5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonPowConst" ref="af673275ae1c3dc606b29979b60df35c5" args="(const Expr &pow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonPowConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>pow</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>c^n = c' (compute the constant power expression) </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a999f13a6fa4a6d8cbe97f02f93fc9ed3">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01043">1043</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, <a class="el" href="theory__arith_8h_source.html#l00046">CVC3::POW</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a19964269c705bafbe69cb1052fe7bec8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonFlattenSum" ref="a19964269c705bafbe69cb1052fe7bec8" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonFlattenSum </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>flattens the input. accepts a PLUS expr </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af0f4877d7326a53faec76bef54a3d400">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01070">1070</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="ac9ee451992ab00f200ee8aee26e99e0c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::canonComboLikeTerms" ref="ac9ee451992ab00f200ee8aee26e99e0c" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::canonComboLikeTerms </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>combine like terms. accepts a flattened PLUS expr </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a1da0c47c02ff2392ca3e0b6493ac4823">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01097">1097</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr__map_8h_source.html#l00190">CVC3::ExprMap< Data >::begin()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="expr__map_8h_source.html#l00173">CVC3::ExprMap< Data >::count()</a>, <a class="el" href="expr__map_8h_source.html#l00191">CVC3::ExprMap< Data >::end()</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, and <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>.</p> </div> </div> <a class="anchor" id="a0040d5d848f7040df940b92d95a75930"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::multEqZero" ref="a0040d5d848f7040df940b92d95a75930" args="(const Expr &expr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::multEqZero </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af8f4f59bd12fdd8f93d1fd49ae41279e">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01155">1155</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="expr_8h_source.html#l01211">CVC3::Expr::begin()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01217">CVC3::Expr::end()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="kinds_8h_source.html#l00068">OR</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a9cd618abf322c0389f1fc40f274059c2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::powEqZero" ref="a9cd618abf322c0389f1fc40f274059c2" args="(const Expr &expr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::powEqZero </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af17a5dbf4ebbe9d7e46d63ad1284ddaf">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01178">1178</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a3c454b863142345e1093663fbb89d306"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::elimPower" ref="a3c454b863142345e1093663fbb89d306" args="(const Expr &expr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::elimPower </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0e6f19ba5333f667efa3a0e3d8787775">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01205">1205</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a21456f49d3a6711f21e3c13fb3c0d34a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::elimPowerConst" ref="a21456f49d3a6711f21e3c13fb3c0d34a" args="(const Expr &expr, const Rational &root)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::elimPowerConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>root</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0e240fba4eac33522b24be6581d98346">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01230">1230</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, <a class="el" href="rational_8h_source.html#l00159">CVC3::pow()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="afbf059903de8b1e87aef9a4a75340d6c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::evenPowerEqNegConst" ref="afbf059903de8b1e87aef9a4a75340d6c" args="(const Expr &expr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::evenPowerEqNegConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a80f948f405f0b1a88283c97b70aab43e">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01254">1254</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="aa3838fe1c003a9f47f3ec8344d192dea"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intEqIrrational" ref="aa3838fe1c003a9f47f3ec8344d192dea" args="(const Expr &expr, const Theorem &isInt)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::intEqIrrational </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isInt</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aff57d78a7d743fffd21de7d4415df3e4">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01273">1273</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00178">CVC3::isIntegerConst()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00185">CVC3::isPow()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="rational_8h_source.html#l00172">CVC3::ratRoot()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a621015d4894231ecd9ab465494e9c9c8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::constPredicate" ref="a621015d4894231ecd9ab465494e9c9c8" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::constPredicate </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>e0 @ e1 <==> true | false, where @ is {=,<,<=,>,>=} </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">e</td><td>takes e is (e0@e1) where e0 and e1 are constants </td></tr> </table> </dd> </dl> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8dd6bb6fed9a4745469b0cad5ed4a139">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01300">1300</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="arith__theorem__producer_8cpp_source.html#l00052">CLASS_NAME</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a3eb1309c184247837239c098d9c9100a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::rightMinusLeft" ref="a3eb1309c184247837239c098d9c9100a" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::rightMinusLeft </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>e[0] @ e[1] <==> 0 @ e[1] - e[0], where @ is {=,<,<=,>,>=} </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#acde77bf4aa73ff6b9a079b372ed7cc51">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01340">1340</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, and <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>.</p> </div> </div> <a class="anchor" id="a8196042ba713a7c782ee4b5eb4c69ccc"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::leftMinusRight" ref="a8196042ba713a7c782ee4b5eb4c69ccc" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::leftMinusRight </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>e[0] @ e[1] <==> e[0] - e[1] @ 0, where @ is {=,<,<=,>,>=} </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0201544f06baaba23df9946f5da47978">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01357">1357</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, and <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>.</p> </div> </div> <a class="anchor" id="a3c3041eb3b0144e21d72ffe6999953e2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::plusPredicate" ref="a3c3041eb3b0144e21d72ffe6999953e2" args="(const Expr &x, const Expr &y, const Expr &z, int kind)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::plusPredicate </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>y</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>z</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>kind</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>x @ y <==> x + z @ y + z, where @ is {=,<,<=,>,>=} (given as 'kind') </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0fa920a2a5cfa4419dbde10b1d913687">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01376">1376</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="kinds_8h_source.html#l00061">EQ</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="minisat__heap_8h_source.html#l00053">MiniSat::left()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</a>.</p> </div> </div> <a class="anchor" id="ae66ddbc1457e3c032ea9059625059992"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::multEqn" ref="ae66ddbc1457e3c032ea9059625059992" args="(const Expr &x, const Expr &y, const Expr &z)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::multEqn </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>y</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>z</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>x = y <==> x * z = y * z, where z is a non-zero constant </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ad62d795eb10e67c655c608774881bde3">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01395">1395</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, and <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>.</p> </div> </div> <a class="anchor" id="aa371616db9ac1a4a9c7a4b1ce0f2a05c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::divideEqnNonConst" ref="aa371616db9ac1a4a9c7a4b1ce0f2a05c" args="(const Expr &x, const Expr &y, const Expr &z)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::divideEqnNonConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>y</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>z</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a419dd84177b5ca1fda7a23f3052b6132">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01408">1408</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, and <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>.</p> </div> </div> <a class="anchor" id="a3d245f36a2e42684ec2fd9356d89111f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::multIneqn" ref="a3d245f36a2e42684ec2fd9356d89111f" args="(const Expr &e, const Expr &z)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::multIneqn </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>z</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Multiplying inequation by a non-zero constant. </p> <p>z>0 ==> e[0] @ e[1] <==> e[0]*z @ e[1]*z</p> <p>z<0 ==> e[0] @ e[1] <==> e[1]*z @ e[0]*z</p> <p>for @ in {<,<=,>,>=}: </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a70e83cfbc207a5d15fedd4adde7e9e76">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01420">1420</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory__arith_8h_source.html#l00227">CVC3::geExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="expr_8h_source.html#l01183">CVC3::Expr::getOp()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00225">CVC3::gtExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, <a class="el" href="theory__arith_8h_source.html#l00221">CVC3::ltExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a517d45514aefcab0dc6aabb400f149fd"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::eqToIneq" ref="a517d45514aefcab0dc6aabb400f149fd" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::eqToIneq </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>x = y ==> x <= y and x >= y </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a646e312e12d5d23dca0c4db39d2c9fb9">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02818">2818</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l00945">CVC3::andExpr()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00227">CVC3::geExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="af069fc1b320c0455ec7cde192668884b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::flipInequality" ref="af069fc1b320c0455ec7cde192668884b" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::flipInequality </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>"op1 GE|GT op2" <==> op2 LE|LT op1 </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aff4a01da77770b0b60089444c83c9cef">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01498">1498</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a07368f8a2e12b5c189645a99bc934102"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::negatedInequality" ref="a07368f8a2e12b5c189645a99bc934102" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::negatedInequality </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Propagating negation over <,<=,>,>=. </p> <p>NOT (op1 < op2) <==> (op1 >= op2)</p> <p>NOT (op1 <= op2) <==> (op1 > op2)</p> <p>NOT (op1 > op2) <==> (op1 <= op2)</p> <p>NOT (op1 >= op2) <==> (op1 < op2) </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aee47bda46999143ea29d7d4ff0be89d4">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01518">1518</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="expr_8h_source.html#l00420">CVC3::Expr::isNot()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a8092c96a87d952fc1e572bb9237ff994"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::realShadow" ref="a8092c96a87d952fc1e572bb9237ff994" args="(const Theorem &alphaLTt, const Theorem &tLTbeta)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::realShadow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>alphaLTt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>tLTbeta</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Real shadow: a <(=) t, t <(=) b ==> a <(=) b. </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a203c7079289189cd4bf4f604c10645e5">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01547">1547</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p> </div> </div> <a class="anchor" id="a6e14251c516153e14539a34598daca04"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::realShadowEq" ref="a6e14251c516153e14539a34598daca04" args="(const Theorem &alphaLEt, const Theorem &tLEalpha)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::realShadowEq </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>alphaLEt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>tLEalpha</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>alpha <= t <= alpha ==> t = alpha </p> <p>takes two ineqs "|- alpha LE t" and "|- t LE alpha" and returns "|- t = alpha" </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a08dfccc28787af2a4141ed0f5a66bc9d">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01582">1582</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p> </div> </div> <a class="anchor" id="a7f4c82e18e7a3ed3b5b22a6ce7d7cf27"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::finiteInterval" ref="a7f4c82e18e7a3ed3b5b22a6ce7d7cf27" args="(const Theorem &aLEt, const Theorem &tLEac, const Theorem &isInta, const Theorem &isIntt)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::finiteInterval </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>aLEt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>tLEac</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isInta</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntt</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Finite interval for integers: a <= t <= a + c ==> G(t, a, 0, c) </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5d419e48b93820624e356ba33efef27c">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01614">1614</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="aef6fd1261bea182d4554d0423803b05e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::darkGrayShadow2ab" ref="aef6fd1261bea182d4554d0423803b05e" args="(const Theorem &betaLEbx, const Theorem &axLEalpha, const Theorem &isIntAlpha, const Theorem &isIntBeta, const Theorem &isIntx)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::darkGrayShadow2ab </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>betaLEbx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>axLEalpha</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntAlpha</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntBeta</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntx</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Dark & Gray shadows when a <= b. </p> <p>takes two integer ineqs (i.e. all vars are ints) "|- beta <= b.x" and "|- a.x <= alpha" and checks if "1 <= a <= b" and returns (D or G) and (!D or !G), where D = Dark_Shadow(ab-1, b.alpha - a.beta), G = Gray_Shadow(a.x, alpha, -(a-1), 0). </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a37835b10dd0f73b5c4cf36c1eebf0d1f">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01678">1678</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00205">CVC3::minusExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p> </div> </div> <a class="anchor" id="aaf64935bb620ab79fd7383f1913bd8b8"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::darkGrayShadow2ba" ref="aaf64935bb620ab79fd7383f1913bd8b8" args="(const Theorem &betaLEbx, const Theorem &axLEalpha, const Theorem &isIntAlpha, const Theorem &isIntBeta, const Theorem &isIntx)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::darkGrayShadow2ba </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>betaLEbx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>axLEalpha</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntAlpha</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntBeta</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntx</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Dark & Gray shadows when b <= a. </p> <p>takes two integer ineqs (i.e. all vars are ints) "|- beta <= b.x" and "|- a.x <= alpha" and checks if "1 <= b < a" and returns (D or G) and (!D or !G), where D = Dark_Shadow(ab-1, b.alpha - a.beta), G = Gray_Shadow(b.x, beta, 0, b-1). </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ab17282c2e4de9965586f4821f17bf60d">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01769">1769</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00205">CVC3::minusExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00207">CVC3::multExpr()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, and <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>.</p> </div> </div> <a class="anchor" id="aafadfc6ae6013ab18a7b4ee570cce16a"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandDarkShadow" ref="aafadfc6ae6013ab18a7b4ee570cce16a" args="(const Theorem &darkShadow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandDarkShadow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>darkShadow</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>takes a dark shadow and expands it into an inequality. </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a94ffe313b29aa63c32d5c3facb3bc917">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01854">1854</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00190">CVC3::isDarkShadow()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="ac8a2c0a97ace8f17153ad784c87ba5a2"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandGrayShadow0" ref="ac8a2c0a97ace8f17153ad784c87ba5a2" args="(const Theorem &grayShadow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandGrayShadow0 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>g</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>GRAY_SHADOW(v, e, c, c) ==> v=e+c. </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a32df170ed2ec7fb3d1c7541e6f3dda77">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01869">1869</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a14af8b5ecbfaaee4600453bd9d681838"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::splitGrayShadow" ref="a14af8b5ecbfaaee4600453bd9d681838" args="(const Theorem &grayShadow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::splitGrayShadow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>g</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>G(x, e, c1, c2) ==> (G1 or G2) and (!G1 or !G2) </p> <p>Here G1 = G(x,e,c1,c), G2 = G(x,e,c+1,c2), and c = floor((c1+c2)/2). </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4b6ef5b29b05bada6ea2df72873abea6">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01894">1894</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="acaa835c8569f6667fa26bfedb0502cf1"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::splitGrayShadowSmall" ref="acaa835c8569f6667fa26bfedb0502cf1" args="(const Theorem &grayShadow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::splitGrayShadowSmall </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>grayShadow</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa33975feef2a9cdd513e5d641f14dc7a">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03190">3190</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="ac6714d4922aea3413f9aeed742bc645e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandGrayShadow" ref="ac6714d4922aea3413f9aeed742bc645e" args="(const Theorem &grayShadow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandGrayShadow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>g</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>G(x, e, c1, c2) ==> e+c1 <= x AND x <= e+c2. </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af936b764ef75b0a6f63043d01a819044">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01931">1931</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="af091e13254c983370c46707a03b1ad30"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandGrayShadowConst" ref="af091e13254c983370c46707a03b1ad30" args="(const Theorem &grayShadow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandGrayShadowConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>g</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Optimized rules: GRAY_SHADOW(a*x, c, c1, c2) ==> [expansion]. </p> <p>Implements three versions of the rule:</p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\mathrm{GRAY\_SHADOW}(ax,c,c1,c2)} {ax = c + i - \mathrm{sign}(i)\cdot j(c,i,a) \lor GRAY\_SHADOW(ax, c, i-\mathrm{sign}(i)\cdot (a+j(c,i,a)))}\]" src="form_310.png"/> </p> <p>where the conclusion may become FALSE or without the GRAY_SHADOW part, depending on the values of a, c and i. </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a3083a3c5893123f2a3ec54ce31718e09">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l01962">1962</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="cvc__util_8h_source.html#l00053">CVC3::abs()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00055">CVC3::GRAY_SHADOW</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="expr_8h_source.html#l00951">CVC3::Expr::orExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="af0070c5da95d33029e54b1d669d5b1f0"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::grayShadowConst" ref="af0070c5da95d33029e54b1d669d5b1f0" args="(const Theorem &g)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::grayShadowConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>g</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>|- G(ax, c, c1, c2) ==> |- G(x, 0, ceil((c1+c)/a), floor((c2+c)/a)) </p> <p>In the case the new c1 > c2, return |- FALSE </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a597adbe8879c33bffefae537a5bca7c0">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02027">2027</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00191">CVC3::isGrayShadow()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a529e92e59e9009e3330a8592c9cb56fe"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::constRHSGrayShadow" ref="a529e92e59e9009e3330a8592c9cb56fe" args="(const Rational &c, const Rational &b, const Rational &a)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> ArithTheoremProducer::constRHSGrayShadow </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>c</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>a</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Implements j(c,b,a) </p> <p>accepts 3 integers a,b,c and returns (b > 0)? (c+b) mod a : (a - (c+b)) mod a </p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02067">2067</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, and <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>.</p> </div> </div> <a class="anchor" id="ac5d4056f00cee80d73b5b46f63bd5b3d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::lessThanToLE" ref="ac5d4056f00cee80d73b5b46f63bd5b3d" args="(const Theorem &less, const Theorem &isIntLHS, const Theorem &isIntRHS, bool changeRight)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::lessThanToLE </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>less</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntLHS</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntRHS</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>changeRight</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Takes a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha < \beta) and returns <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha < \beta <==> \alpha <= \beta -1) where \alpha and \beta are integer expressions </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a7a0dad5cb9c2815421457dabc25bc537">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02085">2085</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="af55c5d0a2626f955b0843381ca8b50f3"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::lessThanToLERewrite" ref="af55c5d0a2626f955b0843381ca8b50f3" args="(const Expr &ineq, const Theorem &isIntLHS, const Theorem &isIntRHS, bool changeRight)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::lessThanToLERewrite </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>ineq</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntLHS</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntRHS</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>changeRight</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Takes a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha < \beta) and returns <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a>(\alpha < \beta <==> \alpha <= \beta -1) where \alpha and \beta are integer expressions </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af5cfb693ee5ee6f3463e83f01196b31e">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03152">3152</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a92936e3de514c430659486b00e84b0a9"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intVarEqnConst" ref="a92936e3de514c430659486b00e84b0a9" args="(const Expr &eqn, const Theorem &isIntx)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::intVarEqnConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>eqn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntx</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">eqn</td><td>is an equation 0 = a.x or 0 = c + a.x </td></tr> <tr><td class="paramname">isIntx</td><td>is a proof of IS_INTEGER(x)</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>the theorem 0 = c + a.x <==> x=-c/a if -c/a is int else return the theorem 0 = c + a.x <==> false.</dd></dl> <p>It also handles the special case of 0 = a.x <==> x = 0 </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a62d76b2ccca8af5e1f28c5104ea2e313">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02138">2138</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="minisat__heap_8h_source.html#l00053">MiniSat::left()</a>, <a class="el" href="minisat__heap_8h_source.html#l00054">MiniSat::right()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a85e9c7d93d6d1433fea606b0c3878e25"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::IsIntegerElim" ref="a85e9c7d93d6d1433fea606b0c3878e25" args="(const Theorem &isIntx)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::IsIntegerElim </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntx</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>IS_INTEGER(x) |= EXISTS (y : INT) y = x where x is not already known to be an integer. </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a8c3d5fdc2b0c9c11291d41c3c20067e4">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02505">2505</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, and <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>.</p> </div> </div> <a class="anchor" id="a49d6559f50d51cde3c2e723c2a254cff"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::eqElimIntRule" ref="a49d6559f50d51cde3c2e723c2a254cff" args="(const Theorem &eqn, const Theorem &isIntx, const std::vector< Theorem > &isIntVars)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::eqElimIntRule </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>eqn</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>isIntVars</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Equality elimination rule for integers: </p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\mathsf{int}(a\cdot x)\quad \mathsf{int}(C+\sum_{i=1}^{n}a_{i}\cdot x_{i})} {a\cdot x=C+\sum_{i=1}^{n}a_{i}\cdot x_{i} \quad\equiv\quad x=t_{2}\wedge 0=t_{3}} \]" src="form_311.png"/> </p> <p> See the detailed description for explanations. </p> <p>This rule implements a step in the iterative algorithm for eliminating integer equality. The terms in the rule are defined as follows:</p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\begin{array}{rcl} t_{2} & = & -(C\ \mathbf{mod}\ m+\sum_{i=1}^{n}(a_{i}\ \mathbf{mod}\ m) \cdot x_{i}-m\cdot\sigma(t))\\ & & \\ t_{3} & = & \mathbf{f}(C,m)+\sum_{i=1}^{n}\mathbf{f}(a_{i},m)\cdot x_{i} -a\cdot\sigma(t)\\ & & \\ t & = & (C\ \mathbf{mod}\ m+\sum_{i=1}^{n}(a_{i}\ \mathbf{mod}\ m) \cdot x_{i}+x)/m\\ & & \\ m & = & a+1\\ & & \\ \mathbf{f}(i,m) & = & \left\lfloor \frac{i}{m} +\frac{1}{2}\right\rfloor +i\ \mathbf{mod}\ m\\ & & \\ i\ \mathbf{mod}\ m & = & i-m\left\lfloor\frac{i}{m} +\frac{1}{2}\right\rfloor \end{array} \]" src="form_312.png"/> </p> <p>All the variables and coefficients are integer, and a >= 2.</p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">eqn</td><td>is the equation <p class="formulaDsp"> <img class="formulaDsp" alt="\[a\cdot x = C + \sum_{i=1}^n a_i\cdot x_i.\]" src="form_313.png"/> </p> </td></tr> </table> </dd> </dl> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\frac{\Gamma\models ax=t\quad \Gamma'\models\mathsf{int}(x)\quad \{\Gamma_i\models\mathsf{int}(x_i) | x_i\mbox{ is var in }t\}} {\Gamma,\Gamma',\bigcup_i\Gamma_i\models \exists (y:\mathrm{int}).\ x=t_2(y)\wedge 0=t_3(y)} \]" src="form_314.png"/> </p> <p> See detailed docs for more information.</p> <p>This rule implements a step in the iterative algorithm for eliminating integer equality. The terms in the rule are defined as follows:</p> <p class="formulaDsp"> <img class="formulaDsp" alt="\[\begin{array}{rcl} t & = & C+\sum_{i=1}^na_{i}\cdot x_{i}\\ t_{2}(y) & = & -(C\ \mathbf{mod}\ m+\sum_{i=1}^{n}(a_{i}\ \mathbf{mod}\ m) \cdot x_{i}-m\cdot y)\\ & & \\ t_{3}(y) & = & \mathbf{f}(C,m)+\sum_{i=1}^{n}\mathbf{f}(a_{i},m)\cdot x_{i} -a\cdot y\\ & & \\ m & = & a+1\\ & & \\ \mathbf{f}(i,m) & = & \left\lfloor \frac{i}{m} +\frac{1}{2}\right\rfloor +i\ \mathbf{mod}\ m\\ & & \\ i\ \mathbf{mod}\ m & = & i-m\left\lfloor\frac{i}{m} +\frac{1}{2}\right\rfloor \end{array} \]" src="form_315.png"/> </p> <p>All the variables and coefficients are integer, and a >= 2.</p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">eqn</td><td>is the equation ax=t: <p class="formulaDsp"> <img class="formulaDsp" alt="\[a\cdot x = C + \sum_{i=1}^n a_i\cdot x_i.\]" src="form_313.png"/> </p> </td></tr> <tr><td class="paramname">isIntx</td><td>is a <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> deriving the integrality of the LHS variable: IS_INTEGER(x)</td></tr> <tr><td class="paramname">isIntVars</td><td>is a vector of Theorems deriving the integrality of all variables on the RHS </td></tr> </table> </dd> </dl> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a08b14a730bbc6b4ca28bb808e6f6dc85">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02531">2531</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l00929">CVC3::Expr::eqExpr()</a>, <a class="el" href="kinds_8h_source.html#l00085">EXISTS</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00240">CVC3::Theorem::getLHS()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="cvc__util_8h_source.html#l00046">CVC3::int2string()</a>, <a class="el" href="theory__arith_8h_source.html#l00184">CVC3::isDivide()</a>, <a class="el" href="theory__arith_8h_source.html#l00174">CVC3::isInt()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00181">CVC3::isPlus()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theorem_8cpp_source.html#l00224">CVC3::Theorem::isRewrite()</a>, <a class="el" href="expr_8h_source.html#l01427">CVC3::Expr::setType()</a>, <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>, <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>, <a class="el" href="theorem_8h_source.html#l00404">CVC3::Theorem::toString()</a>, and <a class="el" href="kinds_8h_source.html#l00099">TRACE</a>.</p> </div> </div> <a class="anchor" id="af1baf70d6108dc52cbb9704e2a8889ec"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::isIntConst" ref="af1baf70d6108dc52cbb9704e2a8889ec" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::isIntConst </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return e <=> TRUE/FALSE for e == IS_INTEGER(c), where c is a constant </p> <dl><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">e</td><td>is a predicate IS_INTEGER(c) where c is a rational constant </td></tr> </table> </dd> </dl> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5e9bccd77000156ab34b0b42d3e3bb18">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02623">2623</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00174">CVC3::isInt()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00194">CVC3::isIntPred()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a512f22a4a025477ced8c27f3d62809d7"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::equalLeaves1" ref="a512f22a4a025477ced8c27f3d62809d7" args="(const Theorem &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::equalLeaves1 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ac05fd3606540a5222ebaa68f9091345b">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02639">2639</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p> </div> </div> <a class="anchor" id="a77ae567431bf98e20cc08903deb2ec99"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::equalLeaves2" ref="a77ae567431bf98e20cc08903deb2ec99" args="(const Theorem &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::equalLeaves2 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5052c783af25243987424ef66e2bf5fc">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02668">2668</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p> </div> </div> <a class="anchor" id="a8de6b6b44c60cf495b455b980a7c681b"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::equalLeaves3" ref="a8de6b6b44c60cf495b455b980a7c681b" args="(const Theorem &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::equalLeaves3 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a893c86f0404789d229540f7a0a00df89">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02697">2697</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p> </div> </div> <a class="anchor" id="a97768870957319cdc68eb94694a37dc5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::equalLeaves4" ref="a97768870957319cdc68eb94694a37dc5" args="(const Theorem &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::equalLeaves4 </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa9018c4d16d3d0a2d8f1614f8e7cae23">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02726">2726</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theorem_8cpp_source.html#l00246">CVC3::Theorem::getRHS()</a>, <a class="el" href="theory__arith_8h_source.html#l00044">CVC3::MULT</a>, <a class="el" href="theory__arith_8h_source.html#l00042">CVC3::PLUS</a>, and <a class="el" href="kinds_8h_source.html#l00037">RATIONAL_EXPR</a>.</p> </div> </div> <a class="anchor" id="a3d6e1d8668360c20b5a6a47e3fcc4612"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::diseqToIneq" ref="a3d6e1d8668360c20b5a6a47e3fcc4612" args="(const Theorem &diseq)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::diseqToIneq </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>diseq</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>x /= y ==> (x < y) OR (x > y) </p> <p>Used in concrete model generation </p> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af180898d9f1d255ef3a2f528ecd8ac65">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02754">2754</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00225">CVC3::gtExpr()</a>, <a class="el" href="expr_8h_source.html#l00419">CVC3::Expr::isEq()</a>, <a class="el" href="expr_8h_source.html#l00420">CVC3::Expr::isNot()</a>, <a class="el" href="theory__arith_8h_source.html#l00221">CVC3::ltExpr()</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a753c339b31e38915ae6f06e0fe6e48da"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::dummyTheorem" ref="a753c339b31e38915ae6f06e0fe6e48da" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::dummyTheorem </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a24ea340651805e648d7180debad17225">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02839">2839</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="a23051d23d509f9cda35c64d4a5ff1dbf"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::oneElimination" ref="a23051d23d509f9cda35c64d4a5ff1dbf" args="(const Expr &x)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::oneElimination </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>x</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a1ebae10d65430ab1a3a14c866af93de6">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02844">2844</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="expr_8h_source.html#l01201">CVC3::Expr::arity()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00183">CVC3::isMult()</a>, <a class="el" href="expr_8h_source.html#l00431">CVC3::Expr::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="ad4513630a9eec6c841b527222a79ea1d"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::clashingBounds" ref="ad4513630a9eec6c841b527222a79ea1d" args="(const Theorem &lowerBound, const Theorem &upperBound)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::clashingBounds </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>lowerBound</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>upperBound</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ad0b23fb01a7adea349c8958059b9f7fd">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02865">2865</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="assumptions_8cpp_source.html#l00200">CVC3::Assumptions::add()</a>, <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a3b2bea72cd9163daa7c41388037bca29"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::addInequalities" ref="a3b2bea72cd9163daa7c41388037bca29" args="(const Theorem &thm1, const Theorem &thm2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::addInequalities </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>thm1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>thm2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ac06dd83948d0f3e474f073ecac592343">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02905">2905</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, <a class="el" href="theory__arith_8h_source.html#l00199">CVC3::plusExpr()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a0eb949bb19e618a8318f236b249fadd5"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::addInequalities" ref="a0eb949bb19e618a8318f236b249fadd5" args="(const std::vector< Theorem > &thms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::addInequalities </td> <td>(</td> <td class="paramtype">const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>thms</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ab87b1e3a09aa830063d51c24a2147095">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03227">3227</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="a364ef37224bae3afb4f62a5c0f75d02c"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyWeakerInequality" ref="a364ef37224bae3afb4f62a5c0f75d02c" args="(const Expr &expr1, const Expr &expr2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyWeakerInequality </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a9abe85f95b61d94fa308a0b15f2b2ef8">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l02950">2950</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00969">CVC3::Expr::impExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="a1bf4d45330b587882e726daa9117cdfb"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyNegatedInequality" ref="a1bf4d45330b587882e726daa9117cdfb" args="(const Expr &expr1, const Expr &expr2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyNegatedInequality </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5eaf4d106f7ce86227ab1d96ffc66b55">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03004">3004</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="expr_8h_source.html#l00969">CVC3::Expr::impExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00189">CVC3::isGE()</a>, <a class="el" href="theory__arith_8h_source.html#l00188">CVC3::isGT()</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="theory__arith_8h_source.html#l00187">CVC3::isLE()</a>, <a class="el" href="theory__arith_8h_source.html#l00186">CVC3::isLT()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="expr_8h_source.html#l00937">CVC3::Expr::negate()</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="ab9395a2ee958d70c780df2514e517320"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::integerSplit" ref="ab9395a2ee958d70c780df2514e517320" args="(const Expr &intVar, const Rational &intPoint)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::integerSplit </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>intVar</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Rational.html">Rational</a> & </td> <td class="paramname"><em>intPoint</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a0090e0d4065efbf936ec92f0e99935e9">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03049">3049</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00227">CVC3::geExpr()</a>, <a class="el" href="expr_8h_source.html#l00969">CVC3::Expr::impExpr()</a>, <a class="el" href="theory__arith_8h_source.html#l00053">CVC3::IS_INTEGER</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00223">CVC3::leExpr()</a>, <a class="el" href="expr_8h_source.html#l00955">CVC3::orExpr()</a>, and <a class="el" href="classCVC3_1_1Rational.html#a195c125a76cb9a6c5731369e244a2de3">CVC3::Rational::toString()</a>.</p> </div> </div> <a class="anchor" id="a43fa5f7c8c3ad3915de7f068ac8cefbd"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::trustedRewrite" ref="a43fa5f7c8c3ad3915de7f068ac8cefbd" args="(const Expr &expr1, const Expr &expr2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::trustedRewrite </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>expr2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a11976de555ee2e88236575893f2ed766">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03036">3036</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> </div> </div> <a class="anchor" id="a4b28aa17702ca3f9703e61ca012ca236"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::rafineStrictInteger" ref="a4b28aa17702ca3f9703e61ca012ca236" args="(const Theorem &isIntConstrThm, const Expr &constr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::rafineStrictInteger </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntConstrThm</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>constr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a4b61e3ea9d5ac911806de95241cf35de">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03068">3068</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="theorem__producer_8h_source.html#l00087">CHECK_PROOFS</a>, <a class="el" href="theorem__producer_8h_source.html#l00083">CHECK_SOUND</a>, <a class="el" href="theory__arith_8h_source.html#l00052">CVC3::GE</a>, <a class="el" href="theorem_8cpp_source.html#l00385">CVC3::Theorem::getAssumptionsRef()</a>, <a class="el" href="theorem_8cpp_source.html#l00230">CVC3::Theorem::getExpr()</a>, <a class="el" href="expr_8h_source.html#l01168">CVC3::Expr::getKind()</a>, <a class="el" href="theorem_8cpp_source.html#l00402">CVC3::Theorem::getProof()</a>, <a class="el" href="expr_8h_source.html#l01135">CVC3::Expr::getRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00051">CVC3::GT</a>, <a class="el" href="theory__arith_8h_source.html#l00192">CVC3::isIneq()</a>, <a class="el" href="classCVC3_1_1Rational.html#a1366320f4de558bb964c67f8aecedb36">CVC3::Rational::isInteger()</a>, <a class="el" href="theory__arith_8h_source.html#l00177">CVC3::isRational()</a>, <a class="el" href="theory__arith_8h_source.html#l00050">CVC3::LE</a>, <a class="el" href="theory__arith_8h_source.html#l00049">CVC3::LT</a>, and <a class="el" href="expr_8cpp_source.html#l00344">CVC3::Expr::toString()</a>.</p> </div> </div> <a class="anchor" id="afd5bca9b136254b904b931680180ac83"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::simpleIneqInt" ref="afd5bca9b136254b904b931680180ac83" args="(const Expr &ineq, const Theorem &isIntRHS)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::simpleIneqInt </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>ineq</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntRHS</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a95bc88d9e126e6b9c938691ce92985aa">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03123">3123</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="ad5f121b6b7d6b8ae951dfb4cce064575"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::intEqualityRationalConstant" ref="ad5f121b6b7d6b8ae951dfb4cce064575" args="(const Theorem &isIntConstrThm, const Expr &constr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::intEqualityRationalConstant </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>isIntConstrThm</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>constr</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a93489420e882a93eb308c7d99c27dc1e">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03133">3133</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="a0111aa5645658dbd6a4bc030178edb94"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::cycleConflict" ref="a0111aa5645658dbd6a4bc030178edb94" args="(const std::vector< Theorem > &inequalitites)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::cycleConflict </td> <td>(</td> <td class="paramtype">const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>inequalitites</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5a544980652c3f6793057b16cbc43cf9">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03138">3138</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="abb8aff055ea56ad8de2b66fd9a7aeba9"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyEqualities" ref="abb8aff055ea56ad8de2b66fd9a7aeba9" args="(const std::vector< Theorem > &inequalities)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyEqualities </td> <td>(</td> <td class="paramtype">const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>inequalities</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a5b475214a53d70298e55f4ac5f3db71f">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03143">3143</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="ae3a7aa0ebe8e84b806efaa59278ea75e"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyWeakerInequalityDiffLogic" ref="ae3a7aa0ebe8e84b806efaa59278ea75e" args="(const std::vector< Theorem > &antecedentThms, const Expr &implied)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyWeakerInequalityDiffLogic </td> <td>(</td> <td class="paramtype">const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>antecedentThms</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>implied</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aafc12b4bdf180f3475ecf4eaa40648d9">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03195">3195</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="ab794c1f9d6e971ac56e0063f409b4774"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyNegatedInequalityDiffLogic" ref="ab794c1f9d6e971ac56e0063f409b4774" args="(const std::vector< Theorem > &antecedentThms, const Expr &implied)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyNegatedInequalityDiffLogic </td> <td>(</td> <td class="paramtype">const std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>antecedentThms</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>implied</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a61ecf1cfc7219c010519cd90cb31d465">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03200">3200</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="a84a9652acc5908e5d1ead5c54c1f2d90"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::expandGrayShadowRewrite" ref="a84a9652acc5908e5d1ead5c54c1f2d90" args="(const Expr &theShadow)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::expandGrayShadowRewrite </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>theShadow</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ac48d6f8b2ad8e8f8fefac775d33825b5">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03205">3205</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="ae43400e7e4c9e3695a75da3bd5718eda"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::compactNonLinearTerm" ref="ae43400e7e4c9e3695a75da3bd5718eda" args="(const Expr &nonLinear)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::compactNonLinearTerm </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>nonLinear</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#a98020e790bcb60c9c2cc5a7e406f500f">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03210">3210</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="a9edd8b9ee6a8b4d14e9a2f967b78d52f"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::nonLinearIneqSignSplit" ref="a9edd8b9ee6a8b4d14e9a2f967b78d52f" args="(const Theorem &ineqThm)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::nonLinearIneqSignSplit </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> & </td> <td class="paramname"><em>ineqThm</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#aa6874fa9f5b02db0adb8149af9664b05">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03215">3215</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="a45d8f89bdb0e57ddbaec273a24bf34b4"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::implyDiffLogicBothBounds" ref="a45d8f89bdb0e57ddbaec273a24bf34b4" args="(const Expr &x, std::vector< Theorem > &c1_le_x, Rational c1, std::vector< Theorem > &x_le_c2, Rational c2)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::implyDiffLogicBothBounds </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>c1_le_x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> </td> <td class="paramname"><em>c1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">std::vector< <a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> > & </td> <td class="paramname"><em>x_le_c2</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classCVC3_1_1Rational.html">Rational</a> </td> <td class="paramname"><em>c2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#af80ad28bb01d8a37e32f29c746d22dbc">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03220">3220</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <a class="anchor" id="a0433b1ba53a33275015c26450acb09d0"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::powerOfOne" ref="a0433b1ba53a33275015c26450acb09d0" args="(const Expr &e)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1Theorem.html">Theorem</a> ArithTheoremProducer::powerOfOne </td> <td>(</td> <td class="paramtype">const <a class="el" href="classCVC3_1_1Expr.html">Expr</a> & </td> <td class="paramname"><em>e</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classCVC3_1_1ArithProofRules.html#ad3dee93f4078a4fc79ccacef33f05119">CVC3::ArithProofRules</a>.</p> <p>Definition at line <a class="el" href="arith__theorem__producer_8cpp_source.html#l03232">3232</a> of file <a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a>.</p> <p>References <a class="el" href="debug_8h_source.html#l00408">DebugAssert</a>.</p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="ad2c70acba668e2582f0ebd9533646338"></a><!-- doxytag: member="CVC3::ArithTheoremProducer::d_theoryArith" ref="ad2c70acba668e2582f0ebd9533646338" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCVC3_1_1TheoryArithNew.html">TheoryArithNew</a>* <a class="el" href="classCVC3_1_1ArithTheoremProducer.html#ad2c70acba668e2582f0ebd9533646338">CVC3::ArithTheoremProducer::d_theoryArith</a><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Definition at line <a class="el" href="arith__theorem__producer_8h_source.html#l00033">33</a> of file <a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a>.</p> <p>Referenced by <a class="el" href="arith__theorem__producer_8h_source.html#l00075">darkShadow()</a>, <a class="el" href="arith__theorem__producer_8h_source.html#l00081">grayShadow()</a>, <a class="el" href="arith__theorem__producer_8h_source.html#l00073">intType()</a>, and <a class="el" href="arith__theorem__producer_8h_source.html#l00072">realType()</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="arith__theorem__producer_8h_source.html">arith_theorem_producer.h</a></li> <li><a class="el" href="arith__theorem__producer_8cpp_source.html">arith_theorem_producer.cpp</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Wed Sep 7 2011 for CVC3 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address> </body> </html>