CVC3::ArithTheoremProducerOld Class Reference

#include <arith_theorem_producer_old.h>

Inheritance diagram for CVC3::ArithTheoremProducerOld:

Inheritance graph
[legend]
Collaboration diagram for CVC3::ArithTheoremProducerOld:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Static Public Member Functions

Private Member Functions

Auxiliary functions for eqElimIntRule()
Methods that compute the subterms used in eqElimIntRule()

Private Attributes


Detailed Description

Definition at line 32 of file arith_theorem_producer_old.h.


Constructor & Destructor Documentation

CVC3::ArithTheoremProducerOld::ArithTheoremProducerOld ( TheoremManager tm,
TheoryArith theoryArith 
) [inline]

Constructor.

Definition at line 66 of file arith_theorem_producer_old.h.


Member Function Documentation

Rational ArithTheoremProducerOld::modEq ( const Rational i,
const Rational m 
) [private]

Compute the special modulus: i - m*floor(i/m+1/2).

Definition at line 2040 of file arith_theorem_producer_old.cpp.

References DebugAssert, CVC3::Rational::toString(), and CVC3::TRACE.

Referenced by f(), monomialModM(), and sumModM().

Expr ArithTheoremProducerOld::create_t ( const Expr eqn  )  [private]

Create the term 't'. See eqElimIntRule().

Definition at line 1980 of file arith_theorem_producer_old.cpp.

References CLASS_NAME, DebugAssert, CVC3::Expr::getRational(), CVC3::isMult(), CVC3::isPlus(), monomialModM(), CVC3::multExpr(), CVC3::plusExpr(), rat(), sumModM(), CVC3::Rational::toString(), and CVC3::Expr::toString().

Expr ArithTheoremProducerOld::create_t2 ( const Expr lhs,
const Expr rhs,
const Expr t 
) [private]

Create the term 't2'. See eqElimIntRule().

Definition at line 1999 of file arith_theorem_producer_old.cpp.

References DebugAssert, CVC3::Expr::getRational(), CVC3::isPlus(), CVC3::Expr::isRational(), monomialModM(), CVC3::plusExpr(), rat(), sumModM(), and CVC3::Rational::toString().

Referenced by eqElimIntRule().

Expr ArithTheoremProducerOld::create_t3 ( const Expr lhs,
const Expr rhs,
const Expr t 
) [private]

Create the term 't3'. See eqElimIntRule().

Definition at line 2019 of file arith_theorem_producer_old.cpp.

References DebugAssert, CVC3::Expr::getRational(), CVC3::isPlus(), CVC3::Expr::isRational(), monomialMulF(), CVC3::plusExpr(), rat(), sumMulF(), and CVC3::Rational::toString().

Referenced by eqElimIntRule().

void ArithTheoremProducerOld::sumModM ( std::vector< Expr > &  summands,
const Expr sum,
const Rational m,
const Rational divisor 
) [private]

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.

Definition at line 2056 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), CLASS_NAME, DebugAssert, CVC3::Expr::end(), modEq(), monomialModM(), rat(), and CVC3::Rational::toString().

Referenced by create_t(), and create_t2().

Expr ArithTheoremProducerOld::monomialModM ( const Expr e,
const Rational m,
const Rational divisor 
) [private]

Compute the special modulus: i - m*floor(i/m+1/2).

Definition at line 2076 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), DebugAssert, CVC3::Expr::getKids(), CVC3::Expr::getRational(), CVC3::isMult(), modEq(), CVC3::multExpr(), rat(), CVC3::Expr::toString(), CVC3::Rational::toString(), and CVC3::TRACE.

Referenced by create_t(), create_t2(), and sumModM().

void ArithTheoremProducerOld::sumMulF ( std::vector< Expr > &  summands,
const Expr sum,
const Rational m,
const Rational divisor 
) [private]

Compute the special modulus: i - m*floor(i/m+1/2).

Definition at line 2104 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), CLASS_NAME, DebugAssert, CVC3::Expr::end(), f(), monomialMulF(), rat(), and CVC3::Rational::toString().

Referenced by create_t3().

Expr ArithTheoremProducerOld::monomialMulF ( const Expr e,
const Rational m,
const Rational divisor 
) [private]

Compute the special modulus: i - m*floor(i/m+1/2).

Definition at line 2124 of file arith_theorem_producer_old.cpp.

References DebugAssert, f(), CVC3::isMult(), CVC3::multExpr(), rat(), and CVC3::Rational::toString().

Referenced by create_t3(), and sumMulF().

Rational ArithTheoremProducerOld::f ( const Rational i,
const Rational m 
) [private]

Compute floor(i/m+1/2) + mod(i,m).

Definition at line 2049 of file arith_theorem_producer_old.cpp.

References DebugAssert, modEq(), and CVC3::Rational::toString().

Referenced by monomialMulF(), and sumMulF().

Expr ArithTheoremProducerOld::substitute ( const Expr term,
ExprMap< Expr > &  eMap 
) [private]

Compute the special modulus: i - m*floor(i/m+1/2).

Definition at line 2141 of file arith_theorem_producer_old.cpp.

References CVC3::ExprMap< Data >::end(), CVC3::ExprMap< Data >::find(), CVC3::isMult(), CVC3::isPlus(), and CVC3::plusExpr().

Expr CVC3::ArithTheoremProducerOld::rat ( Rational  r  )  [inline]

Create Expr from Rational (for convenience).

Definition at line 70 of file arith_theorem_producer_old.h.

References CVC3::TheoremProducer::d_em, and CVC3::ExprManager::newRatExpr().

Referenced by canonCombineLikeTerms(), canonComboLikeTerms(), canonDivideConst(), canonDivideMult(), canonDividePlus(), canonDivideVar(), canonInvertConst(), canonInvertLeaf(), canonInvertMult(), canonInvertPow(), canonMultConstConst(), canonMultConstMult(), canonMultConstTerm(), canonMultLeafLeaf(), canonMultLeafOrPowMult(), canonMultOne(), canonMultPowLeaf(), canonMultPowPow(), canonMultZero(), canonPowConst(), canonUMinusToDivide(), create_t(), create_t2(), create_t3(), darkGrayShadow2ab(), darkGrayShadow2ba(), eqElimIntRule(), expandGrayShadow(), expandGrayShadowConst(), grayShadowConst(), integerSplit(), intVarEqnConst(), leftMinusRight(), lessThanToLE(), minusToPlus(), monomialModM(), monomialMulF(), moveSumConstantRight(), rafineStrictInteger(), rightMinusLeft(), simplifiedMultExpr(), sumModM(), sumMulF(), uMinusToMult(), and varToMult().

Type CVC3::ArithTheoremProducerOld::realType (  )  [inline]

Definition at line 71 of file arith_theorem_producer_old.h.

References d_theoryArith, and CVC3::TheoryArith::realType().

Type CVC3::ArithTheoremProducerOld::intType (  )  [inline]

Definition at line 72 of file arith_theorem_producer_old.h.

References d_theoryArith, and CVC3::TheoryArith::intType().

Referenced by eqElimIntRule().

Expr CVC3::ArithTheoremProducerOld::darkShadow ( const Expr lhs,
const Expr rhs 
) [inline]

Construct the dark shadow expression representing lhs <= rhs.

Definition at line 74 of file arith_theorem_producer_old.h.

References d_theoryArith, and CVC3::TheoryArith::darkShadow().

Referenced by darkGrayShadow2ab(), darkGrayShadow2ba(), and expandDarkShadow().

Expr CVC3::ArithTheoremProducerOld::grayShadow ( const Expr v,
const Expr e,
const Rational c1,
const Rational c2 
) [inline]

Construct the gray shadow expression representing c1 <= v - e <= c2.

Alternatively, v = e + i for some i s.t. c1 <= i <= c2

Definition at line 80 of file arith_theorem_producer_old.h.

References d_theoryArith, and CVC3::TheoryArith::grayShadow().

Referenced by darkGrayShadow2ab(), darkGrayShadow2ba(), expandGrayShadow0(), finiteInterval(), grayShadowConst(), and splitGrayShadow().

Theorem ArithTheoremProducerOld::varToMult ( const Expr e  )  [virtual]

==> e = 1 * e

Implements CVC3::ArithProofRules.

Definition at line 56 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::uMinusToMult ( const Expr e  )  [virtual]

==> -(e) = (-1) * e

Implements CVC3::ArithProofRules.

Definition at line 64 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::minusToPlus ( const Expr x,
const Expr y 
) [virtual]

==> x - y = x + (-1) * y

Implements CVC3::ArithProofRules.

Definition at line 72 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonUMinusToDivide ( const Expr e  )  [virtual]

-(e) ==> e / (-1); takes 'e'

Canon Rule for unary minus: it just converts it to division by -1, the result is not yet canonical:

Implements CVC3::ArithProofRules.

Definition at line 82 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonDivideConst ( const Expr c,
const Expr d 
) [virtual]

(c) / d ==> (c/d), takes c and d

Canon Rules for division by constant 'd'

Implements CVC3::ArithProofRules.

Definition at line 91 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::TheoremProducer::d_hole, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getRational(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonDivideMult ( const Expr cx,
const Expr d 
) [virtual]

(c * x) / d ==> (c/d) * x, takes (c*x) and d

Implements CVC3::ArithProofRules.

Definition at line 110 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getRational(), CVC3::isMult(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonDividePlus ( const Expr e,
const Expr d 
) [virtual]

(+ c ...)/d ==> push division to all the coefficients.

The result is not canonical, but canonizing the summands will make it canonical. Takes (+ c ...) and d

Implements CVC3::ArithProofRules.

Definition at line 138 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CVC3::Expr::begin(), CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::Expr::end(), CVC3::isPlus(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::plusExpr(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonDivideVar ( const Expr e1,
const Expr e2 
) [virtual]

x / d ==> (1/d) * x, takes x and d

Implements CVC3::ArithProofRules.

Definition at line 161 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getRational(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

bool ArithTheoremProducerOld::greaterthan ( const Expr ,
const Expr  
) [static]

Definition at line 2167 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CVC3::Expr::begin(), DebugAssert, CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::Expr::isRational(), CVC3::MULT, CVC3::PLUS, CVC3::POW, and CVC3::RATIONAL_EXPR.

Referenced by MonomialLess::operator()().

Expr ArithTheoremProducerOld::simplifiedMultExpr ( std::vector< Expr > &  mulKids  )  [virtual]

Definition at line 196 of file arith_theorem_producer_old.cpp.

References DebugAssert, CVC3::multExpr(), and rat().

Referenced by canonMultConstMult(), canonMultLeafLeaf(), canonMultLeafOrPowMult(), canonMultPowLeaf(), and canonMultPowPow().

Expr ArithTheoremProducerOld::canonMultConstMult ( const Expr c,
const Expr e 
) [virtual]

Definition at line 209 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CVC3::Expr::begin(), DebugAssert, CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::isRational(), CVC3::Expr::isRational(), CVC3::MULT, rat(), simplifiedMultExpr(), and CVC3::Expr::toString().

Referenced by canonMultMtermMterm().

Expr ArithTheoremProducerOld::canonMultConstPlus ( const Expr e1,
const Expr e2 
) [virtual]

Definition at line 231 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CVC3::Expr::begin(), canonMultMtermMterm(), d_theoryArith, DebugAssert, CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::Expr::getOp(), CVC3::Theorem::getRHS(), CVC3::Expr::isRational(), CVC3::PLUS, and CVC3::Theory::substitutivityRule().

Referenced by canonMultMtermMterm().

Expr ArithTheoremProducerOld::canonMultPowPow ( const Expr e1,
const Expr e2 
) [virtual]

Definition at line 250 of file arith_theorem_producer_old.cpp.

References DebugAssert, CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::POW, CVC3::powExpr(), rat(), and simplifiedMultExpr().

Referenced by canonMultMtermMterm().

Expr ArithTheoremProducerOld::canonMultPowLeaf ( const Expr e1,
const Expr e2 
) [virtual]

Definition at line 290 of file arith_theorem_producer_old.cpp.

References DebugAssert, CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::POW, CVC3::powExpr(), rat(), and simplifiedMultExpr().

Referenced by canonMultMtermMterm().

Expr ArithTheoremProducerOld::canonMultLeafLeaf ( const Expr e1,
const Expr e2 
) [virtual]

Definition at line 329 of file arith_theorem_producer_old.cpp.

References CVC3::powExpr(), rat(), and simplifiedMultExpr().

Referenced by canonMultMtermMterm().

Expr ArithTheoremProducerOld::canonMultLeafOrPowMult ( const Expr e1,
const Expr e2 
) [virtual]

Definition at line 357 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CVC3::Expr::begin(), DebugAssert, CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::MULT, CVC3::POW, CVC3::powExpr(), rat(), and simplifiedMultExpr().

Referenced by canonMultMtermMterm().

Expr ArithTheoremProducerOld::canonCombineLikeTerms ( const std::vector< Expr > &  sumExprs  )  [virtual]

Definition at line 429 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), canonMultMtermMterm(), DebugAssert, CVC3::Theorem::getRHS(), CVC3::MULT, CVC3::multExpr(), CVC3::plusExpr(), and rat().

Referenced by canonMultLeafOrPowOrMultPlus(), canonMultPlusPlus(), and canonPlus().

Expr ArithTheoremProducerOld::canonMultLeafOrPowOrMultPlus ( const Expr e1,
const Expr e2 
) [virtual]

Definition at line 510 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), canonCombineLikeTerms(), canonMultMtermMterm(), DebugAssert, CVC3::Expr::end(), CVC3::Expr::getKind(), and CVC3::PLUS.

Referenced by canonMultMtermMterm().

Expr ArithTheoremProducerOld::canonMultPlusPlus ( const Expr e1,
const Expr e2 
) [virtual]

Definition at line 529 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), canonCombineLikeTerms(), canonMultMtermMterm(), DebugAssert, CVC3::Expr::end(), CVC3::Expr::getKind(), and CVC3::PLUS.

Referenced by canonMultMtermMterm().

Theorem ArithTheoremProducerOld::canonMultMtermMterm ( const Expr e  )  [virtual]

Implements CVC3::ArithProofRules.

Definition at line 553 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), canonMultConstConst(), canonMultConstMult(), canonMultConstPlus(), canonMultLeafLeaf(), canonMultLeafOrPowMult(), canonMultLeafOrPowOrMultPlus(), canonMultOne(), canonMultPlusPlus(), canonMultPowLeaf(), canonMultPowPow(), canonMultZero(), CHECK_PROOFS, CHECK_SOUND, d_theoryArith, CVC3::Assumptions::emptyAssump(), FatalAssert, CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::Theorem::getRHS(), CVC3::isMult(), CVC3::Expr::isRational(), CVC3::MULT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, CVC3::POW, CVC3::RATIONAL_EXPR, CVC3::Theory::reflexivityRule(), and CVC3::TheoremProducer::withProof().

Referenced by canonCombineLikeTerms(), canonInvertMult(), canonMult(), canonMultConstPlus(), canonMultLeafOrPowOrMultPlus(), and canonMultPlusPlus().

Theorem ArithTheoremProducerOld::canonPlus ( const Expr e  )  [virtual]

Canonize (PLUS t1 ... tn).

Implements CVC3::ArithProofRules.

Definition at line 718 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), canonCombineLikeTerms(), DebugAssert, CVC3::Assumptions::emptyAssump(), CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonInvertConst ( const Expr e  )  [virtual]

Definition at line 769 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Referenced by canonInvert().

Theorem ArithTheoremProducerOld::canonInvertLeaf ( const Expr e  )  [virtual]

Definition at line 785 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::powExpr(), rat(), and CVC3::TheoremProducer::withProof().

Referenced by canonInvert().

Theorem ArithTheoremProducerOld::canonInvertPow ( const Expr e  )  [virtual]

Definition at line 797 of file arith_theorem_producer_old.cpp.

References DebugAssert, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getKind(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::POW, CVC3::powExpr(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Referenced by canonInvert().

Theorem ArithTheoremProducerOld::canonInvertMult ( const Expr e  )  [virtual]

Definition at line 816 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), canonInvert(), canonMultMtermMterm(), DebugAssert, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getKind(), CVC3::Theorem::getRHS(), CVC3::MULT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Referenced by canonInvert().

Theorem ArithTheoremProducerOld::canonInvert ( const Expr e  )  [virtual]

==> 1/e = e' where e' is canonical; takes e.

Implements CVC3::ArithProofRules.

Definition at line 839 of file arith_theorem_producer_old.cpp.

References canonInvertConst(), canonInvertLeaf(), canonInvertMult(), canonInvertPow(), DebugAssert, CVC3::Expr::getKind(), CVC3::MULT, CVC3::PLUS, CVC3::POW, CVC3::RATIONAL_EXPR, and CVC3::Expr::toString().

Referenced by canonDivide(), and canonInvertMult().

Theorem ArithTheoremProducerOld::moveSumConstantRight ( const Expr e  )  [virtual]

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.

Parameters:
e the expression to transform
Returns:
rewrite theorem representing the transformation

Implements CVC3::ArithProofRules.

Definition at line 861 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::isIneq(), CVC3::isPlus(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::plusExpr(), rat(), MiniSat::right(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonDivide ( const Expr e  )  [virtual]

e[0]/e[1] ==> e[0]*(e[1])^-1

Implements CVC3::ArithProofRules.

Definition at line 907 of file arith_theorem_producer_old.cpp.

References canonInvert(), canonMult(), d_theoryArith, DebugAssert, CVC3::DIVIDE, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getKind(), CVC3::Theorem::getRHS(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::Expr::toString(), CVC3::Theory::transitivityRule(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonMult ( const Expr e  )  [virtual]

Multiply out the operands of the multiplication (each of them is expected to be canonised

Implements CVC3::ArithProofRules.

Definition at line 751 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CVC3::Expr::begin(), canonMultMtermMterm(), DebugAssert, CVC3::Assumptions::emptyAssump(), CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::Theorem::getRHS(), CVC3::MULT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::TheoremProducer::withProof().

Referenced by canonDivide().

Theorem ArithTheoremProducerOld::canonMultTermConst ( const Expr c,
const Expr t 
) [virtual]

t*c ==> c*t, takes constant c and term t

Implements CVC3::ArithProofRules.

Definition at line 925 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonMultTerm1Term2 ( const Expr t1,
const Expr t2 
) [virtual]

t1*t2 ==> Error, takes t1 and t2 where both are non-constants

Implements CVC3::ArithProofRules.

Definition at line 939 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, and CVC3::Expr::toString().

Theorem ArithTheoremProducerOld::canonMultZero ( const Expr e  )  [virtual]

0*t ==> 0, takes 0*t

Implements CVC3::ArithProofRules.

Definition at line 952 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Referenced by canonMultMtermMterm().

Theorem ArithTheoremProducerOld::canonMultOne ( const Expr e  )  [virtual]

1*t ==> t, takes 1*t

Implements CVC3::ArithProofRules.

Definition at line 960 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Referenced by canonMultMtermMterm().

Theorem ArithTheoremProducerOld::canonMultConstConst ( const Expr c1,
const Expr c2 
) [virtual]

c1*c2 ==> c', takes constant c1*c2

Implements CVC3::ArithProofRules.

Definition at line 969 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getRational(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Referenced by canonMultMtermMterm().

Theorem ArithTheoremProducerOld::canonMultConstTerm ( const Expr c1,
const Expr c2,
const Expr t 
) [virtual]

c1*(c2*t) ==> c'*t, takes c1 and c2 and t

Implements CVC3::ArithProofRules.

Definition at line 987 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getRational(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonMultConstSum ( const Expr c1,
const Expr sum 
) [virtual]

c1*(+ c2 v1 ...) ==> (+ c' c1v1 ...), takes c1 and the sum

Implements CVC3::ArithProofRules.

Definition at line 1007 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, CVC3::plusExpr(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonPowConst ( const Expr pow  )  [virtual]

c^n = c' (compute the constant power expression)

Implements CVC3::ArithProofRules.

Definition at line 1030 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::Expr::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::pow(), CVC3::POW, rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonFlattenSum ( const Expr e  )  [virtual]

flattens the input. accepts a PLUS expr

Implements CVC3::ArithProofRules.

Definition at line 1057 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::begin(), CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::Assumptions::emptyAssump(), CVC3::Expr::end(), CVC3::Expr::getKind(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, CVC3::plusExpr(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::canonComboLikeTerms ( const Expr e  )  [virtual]

combine like terms. accepts a flattened PLUS expr

Implements CVC3::ArithProofRules.

Definition at line 1084 of file arith_theorem_producer_old.cpp.

References CVC3::ExprMap< Data >::begin(), CVC3::Expr::begin(), CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::ExprMap< Data >::count(), CVC3::Assumptions::emptyAssump(), CVC3::ExprMap< Data >::end(), CVC3::Expr::end(), CVC3::isMult(), CVC3::isPlus(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::plusExpr(), rat(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::constPredicate ( const Expr e  )  [virtual]

e0 @ e1 <==> true | false, where @ is {=,<,<=,>,>=}

Parameters:
e takes e is (e0@e1) where e0 and e1 are constants

Implements CVC3::ArithProofRules.

Definition at line 1146 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CHECK_PROOFS, CHECK_SOUND, CLASS_NAME, CVC3::TheoremProducer::d_em, CVC3::Assumptions::emptyAssump(), CVC3::EQ, CVC3::ExprManager::falseExpr(), CVC3::GE, CVC3::Expr::getKind(), CVC3::Expr::getRational(), CVC3::GT, CVC3::isRational(), CVC3::LE, CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::Expr::toString(), CVC3::ExprManager::trueExpr(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::rightMinusLeft ( const Expr e  )  [virtual]

e[0] @ e[1] <==> 0 @ e[1] - e[0], where @ is {=,<,<=,>,>=}

Implements CVC3::ArithProofRules.

Definition at line 1185 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::EQ, CVC3::GE, CVC3::Expr::getKind(), CVC3::Expr::getOp(), CVC3::GT, CVC3::LE, CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::leftMinusRight ( const Expr e  )  [virtual]

e[0] @ e[1] <==> e[0] - e[1] @ 0, where @ is {=,<,<=,>,>=}

Implements CVC3::ArithProofRules.

Definition at line 1203 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::EQ, CVC3::GE, CVC3::Expr::getKind(), CVC3::Expr::getOp(), CVC3::GT, CVC3::LE, CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::plusPredicate ( const Expr x,
const Expr y,
const Expr z,
int  kind 
) [virtual]

x @ y <==> x + z @ y + z, where @ is {=,<,<=,>,>=} (given as 'kind')

Implements CVC3::ArithProofRules.

Definition at line 1221 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::EQ, CVC3::GE, CVC3::GT, CVC3::LE, MiniSat::left(), CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), MiniSat::right(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::multEqn ( const Expr x,
const Expr y,
const Expr z 
) [virtual]

x = y <==> x * z = y * z, where z is a non-zero constant

Implements CVC3::ArithProofRules.

Definition at line 1240 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::Expr::eqExpr(), CVC3::Expr::getRational(), CVC3::Expr::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::multIneqn ( const Expr e,
const Expr z 
) [virtual]

Multiplying inequation by a non-zero constant.

z>0 ==> e[0] @ e[1] <==> e[0]*z @ e[1]*z

z<0 ==> e[0] @ e[1] <==> e[1]*z @ e[0]*z

for @ in {<,<=,>,>=}:

Implements CVC3::ArithProofRules.

Definition at line 1254 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::GE, CVC3::Expr::getKind(), CVC3::Expr::getOp(), CVC3::Expr::getRational(), CVC3::GT, CVC3::Expr::isRational(), CVC3::LE, CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::eqToIneq ( const Expr e  )  [virtual]

x = y ==> x <= y and x >= y

Implements CVC3::ArithProofRules.

Definition at line 1281 of file arith_theorem_producer_old.cpp.

References CVC3::andExpr(), CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::geExpr(), CVC3::Expr::isEq(), CVC3::leExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::flipInequality ( const Expr e  )  [virtual]

"op1 GE|GT op2" <==> op2 LE|LT op1

Implements CVC3::ArithProofRules.

Definition at line 1303 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::isGE(), CVC3::isGT(), CVC3::LE, CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::negatedInequality ( const Expr e  )  [virtual]

Propagating negation over <,<=,>,>=.

NOT (op1 < op2) <==> (op1 >= op2)

NOT (op1 <= op2) <==> (op1 > op2)

NOT (op1 > op2) <==> (op1 <= op2)

NOT (op1 >= op2) <==> (op1 < op2)

Implements CVC3::ArithProofRules.

Definition at line 1323 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::GE, CVC3::GT, CVC3::isGT(), CVC3::isIneq(), CVC3::isLE(), CVC3::isLT(), CVC3::Expr::isNot(), CVC3::LE, CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::realShadow ( const Theorem alphaLTt,
const Theorem tLTbeta 
) [virtual]

Real shadow: a <(=) t, t <(=) b ==> a <(=) b.

Implements CVC3::ArithProofRules.

Definition at line 1352 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getExpr(), CVC3::Expr::getKind(), CVC3::Theorem::getProof(), CVC3::isLE(), CVC3::isLT(), CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Theorem::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::realShadowEq ( const Theorem alphaLEt,
const Theorem tLEalpha 
) [virtual]

alpha <= t <= alpha ==> t = alpha

takes two ineqs "|- alpha LE t" and "|- t LE alpha" and returns "|- t = alpha"

Implements CVC3::ArithProofRules.

Definition at line 1387 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::isLE(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::Theorem::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::finiteInterval ( const Theorem aLEt,
const Theorem tLEac,
const Theorem isInta,
const Theorem isIntt 
) [virtual]

Finite interval for integers: a <= t <= a + c ==> G(t, a, 0, c).

Implements CVC3::ArithProofRules.

Definition at line 1419 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), grayShadow(), CVC3::isIntPred(), CVC3::isLE(), CVC3::isPlus(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::darkGrayShadow2ab ( const Theorem betaLEbx,
const Theorem axLEalpha,
const Theorem isIntAlpha,
const Theorem isIntBeta,
const Theorem isIntx 
) [virtual]

Dark & Gray shadows when a <= b.

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).

Implements CVC3::ArithProofRules.

Definition at line 1483 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CHECK_PROOFS, CHECK_SOUND, darkShadow(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), grayShadow(), CVC3::isIntPred(), isIntx(), CVC3::isLE(), CVC3::isMult(), CVC3::minusExpr(), CVC3::multExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), rat(), CVC3::Expr::toString(), CVC3::Theorem::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::darkGrayShadow2ba ( const Theorem betaLEbx,
const Theorem axLEalpha,
const Theorem isIntAlpha,
const Theorem isIntBeta,
const Theorem isIntx 
) [virtual]

Dark & Gray shadows when b <= a.

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).

Implements CVC3::ArithProofRules.

Definition at line 1566 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CHECK_PROOFS, CHECK_SOUND, darkShadow(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), grayShadow(), CVC3::isIntPred(), isIntx(), CVC3::isLE(), CVC3::isMult(), CVC3::minusExpr(), CVC3::multExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), rat(), CVC3::Expr::toString(), CVC3::Theorem::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::expandDarkShadow ( const Theorem darkShadow  )  [virtual]

takes a dark shadow and expands it into an inequality.

Implements CVC3::ArithProofRules.

Definition at line 1651 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, darkShadow(), CVC3::isDarkShadow(), CVC3::leExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::expandGrayShadow0 ( const Theorem grayShadow  )  [virtual]

GRAY_SHADOW(v, e, c, c) ==> v=e+c.

Implements CVC3::ArithProofRules.

Definition at line 1666 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, grayShadow(), CVC3::isGrayShadow(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::splitGrayShadow ( const Theorem grayShadow  )  [virtual]

G(x, e, c1, c2) ==> (G1 or G2) and (!G1 or !G2).

Here G1 = G(x,e,c1,c), G2 = G(x,e,c+1,c2), and c = floor((c1+c2)/2).

Implements CVC3::ArithProofRules.

Definition at line 1691 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), grayShadow(), CVC3::isGrayShadow(), CVC3::Rational::isInteger(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::expandGrayShadow ( const Theorem grayShadow  )  [virtual]

G(x, e, c1, c2) ==> e+c1 <= x AND x <= e+c2.

Implements CVC3::ArithProofRules.

Definition at line 1721 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), CVC3::isGrayShadow(), CVC3::Rational::isInteger(), CVC3::leExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::expandGrayShadowConst ( const Theorem grayShadow  )  [virtual]

Optimized rules: GRAY_SHADOW(a*x, c, c1, c2) ==> [expansion].

Implements three versions of the rule:

\[\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)))}\]

where the conclusion may become FALSE or without the GRAY_SHADOW part, depending on the values of a, c and i.

Implements CVC3::ArithProofRules.

Definition at line 1752 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, constRHSGrayShadow(), CVC3::TheoremProducer::d_em, CVC3::Expr::eqExpr(), CVC3::ExprManager::falseExpr(), CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), CVC3::GRAY_SHADOW, CVC3::isGrayShadow(), CVC3::Rational::isInteger(), CVC3::isMult(), CVC3::Expr::isRational(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::TheoremProducer::newTheorem(), CVC3::Expr::orExpr(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::grayShadowConst ( const Theorem g  )  [virtual]

|- G(ax, c, c1, c2) ==> |- G(x, 0, ceil((c1+c)/a), floor((c2+c)/a))

In the case the new c1 > c2, return |- FALSE

Implements CVC3::ArithProofRules.

Definition at line 1817 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::TheoremProducer::d_em, d_theoryArith, CVC3::ExprManager::falseExpr(), CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), grayShadow(), CVC3::isGrayShadow(), CVC3::Rational::isInteger(), CVC3::Expr::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), rat(), CVC3::TheoryArith::separateMonomial(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Rational ArithTheoremProducerOld::constRHSGrayShadow ( const Rational c,
const Rational b,
const Rational a 
)

Implements j(c,b,a).

accepts 3 integers a,b,c and returns (b > 0)? (c+b) mod a : (a - (c+b)) mod a

Definition at line 1857 of file arith_theorem_producer_old.cpp.

References DebugAssert, and CVC3::Rational::isInteger().

Referenced by expandGrayShadowConst().

Theorem ArithTheoremProducerOld::lessThanToLE ( const Theorem less,
const Theorem isIntLHS,
const Theorem isIntRHS,
bool  changeRight 
) [virtual]

Takes a Theorem(\alpha < \beta) and returns Theorem(\alpha < \beta <==> \alpha <= \beta -1) where \alpha and \beta are integer expressions

Implements CVC3::ArithProofRules.

Definition at line 1875 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::isIntPred(), CVC3::isLT(), CVC3::leExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::intVarEqnConst ( const Expr eqn,
const Theorem isIntx 
) [virtual]

Parameters:
eqn is an equation 0 = a.x or 0 = c + a.x
isIntx is a proof of IS_INTEGER(x)
Returns:
the theorem 0 = c + a.x <==> x=-c/a if -c/a is int else return the theorem 0 = c + a.x <==> false.
It also handles the special case of 0 = a.x <==> x = 0

Implements CVC3::ArithProofRules.

Definition at line 1926 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::TheoremProducer::d_em, d_theoryArith, CVC3::Expr::eqExpr(), CVC3::ExprManager::falseExpr(), CVC3::Expr::getRational(), CVC3::isIntPred(), isIntx(), CVC3::isMult(), CVC3::isPlus(), CVC3::isRational(), MiniSat::left(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), MiniSat::right(), CVC3::TheoryArith::separateMonomial(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::eqElimIntRule ( const Theorem eqn,
const Theorem isIntx,
const std::vector< Theorem > &  isIntVars 
) [virtual]

Equality elimination rule for integers:

\[\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}} \]

See the detailed description for explanations.

\[\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)} \]

See detailed docs for more information.

This rule implements a step in the iterative algorithm for eliminating integer equality. The terms in the rule are defined as follows:

\[\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} \]

All the variables and coefficients are integer, and a >= 2.

Parameters:
eqn is the equation ax=t:

\[a\cdot x = C + \sum_{i=1}^n a_i\cdot x_i.\]

isIntx is a Theorem deriving the integrality of the LHS variable: IS_INTEGER(x)
isIntVars is a vector of Theorems deriving the integrality of all variables on the RHS

Implements CVC3::ArithProofRules.

Definition at line 2291 of file arith_theorem_producer_old.cpp.

References CVC3::Expr::arity(), CHECK_PROOFS, CHECK_SOUND, create_t2(), create_t3(), CVC3::TheoremProducer::d_em, d_theoryArith, CVC3::Expr::eqExpr(), CVC3::EXISTS, CVC3::Theorem::getExpr(), CVC3::Theorem::getLHS(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), CVC3::Theorem::getRHS(), intType(), CVC3::isDivide(), CVC3::isInt(), CVC3::Rational::isInteger(), CVC3::isIntPred(), isIntx(), CVC3::isPlus(), CVC3::isRational(), CVC3::Theorem::isRewrite(), CVC3::ExprManager::newBoundVarExpr(), CVC3::ExprManager::newClosureExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), rat(), CVC3::TheoryArith::separateMonomial(), CVC3::Expr::setType(), CVC3::Rational::toString(), CVC3::Expr::toString(), CVC3::Theorem::toString(), CVC3::TRACE, and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::isIntConst ( const Expr e  )  [virtual]

return e <=> TRUE/FALSE for e == IS_INTEGER(c), where c is a constant

Parameters:
e is a predicate IS_INTEGER(c) where c is a rational constant

Implements CVC3::ArithProofRules.

Definition at line 2383 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::TheoremProducer::d_em, CVC3::Assumptions::emptyAssump(), CVC3::ExprManager::falseExpr(), CVC3::Expr::getRational(), CVC3::isInt(), CVC3::Rational::isInteger(), CVC3::isIntPred(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::ExprManager::trueExpr(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::equalLeaves1 ( const Theorem e  )  [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2399 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getProof(), CVC3::Theorem::getRHS(), CVC3::MULT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, CVC3::RATIONAL_EXPR, and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::equalLeaves2 ( const Theorem e  )  [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2428 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getProof(), CVC3::Theorem::getRHS(), CVC3::MULT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, CVC3::RATIONAL_EXPR, and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::equalLeaves3 ( const Theorem e  )  [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2457 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getProof(), CVC3::Theorem::getRHS(), CVC3::MULT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, CVC3::RATIONAL_EXPR, and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::equalLeaves4 ( const Theorem e  )  [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2486 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getProof(), CVC3::Theorem::getRHS(), CVC3::MULT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), CVC3::PLUS, CVC3::RATIONAL_EXPR, and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::diseqToIneq ( const Theorem diseq  )  [virtual]

x /= y ==> (x < y) OR (x > y)

Used in concrete model generation

Implements CVC3::ArithProofRules.

Definition at line 2514 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Theorem::getProof(), CVC3::gtExpr(), CVC3::Expr::isEq(), CVC3::Expr::isNot(), CVC3::ltExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::orExpr(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::dummyTheorem ( const Expr e  )  [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2533 of file arith_theorem_producer_old.cpp.

References CVC3::TheoremProducer::d_em, CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::ExprManager::trueExpr().

Theorem ArithTheoremProducerOld::oneElimination ( const Expr x  )  [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2538 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::isMult(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::clashingBounds ( const Theorem lowerBound,
const Theorem upperBound 
) [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2559 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::add(), CHECK_PROOFS, CHECK_SOUND, CVC3::TheoremProducer::d_em, CVC3::ExprManager::falseExpr(), CVC3::Theorem::getExpr(), CVC3::Expr::getRational(), CVC3::isGE(), CVC3::isGT(), CVC3::isLE(), CVC3::isLT(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::addInequalities ( const Theorem thm1,
const Theorem thm2 
) [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2598 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Theorem::getExpr(), CVC3::Expr::getKind(), CVC3::Theorem::getProof(), CVC3::GT, CVC3::isGE(), CVC3::isGT(), CVC3::isIneq(), CVC3::isLE(), CVC3::isLT(), CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::plusExpr(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::implyWeakerInequality ( const Expr expr1,
const Expr expr2 
) [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2643 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::Expr::impExpr(), CVC3::isGE(), CVC3::isGT(), CVC3::isIneq(), CVC3::isLE(), CVC3::isLT(), CVC3::isRational(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Rational::toString(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::implyNegatedInequality ( const Expr expr1,
const Expr expr2 
) [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2689 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::Expr::getRational(), CVC3::Expr::impExpr(), CVC3::isGE(), CVC3::isGT(), CVC3::isIneq(), CVC3::isLE(), CVC3::isLT(), CVC3::isRational(), CVC3::Expr::negate(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::Rational::toString(), CVC3::Expr::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::integerSplit ( const Expr intVar,
const Rational intPoint 
) [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2734 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::Assumptions::emptyAssump(), CVC3::geExpr(), CVC3::IS_INTEGER, CVC3::Rational::isInteger(), CVC3::leExpr(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newTheorem(), CVC3::orExpr(), rat(), CVC3::Rational::toString(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::trustedRewrite ( const Expr expr1,
const Expr expr2 
) [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2721 of file arith_theorem_producer_old.cpp.

References CVC3::Assumptions::emptyAssump(), CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), and CVC3::TheoremProducer::withProof().

Theorem ArithTheoremProducerOld::rafineStrictInteger ( const Theorem isIntConstrThm,
const Expr constr 
) [virtual]

Implements CVC3::ArithProofRules.

Definition at line 2753 of file arith_theorem_producer_old.cpp.

References CHECK_PROOFS, CHECK_SOUND, CVC3::GE, CVC3::Theorem::getAssumptionsRef(), CVC3::Theorem::getExpr(), CVC3::Expr::getKind(), CVC3::Theorem::getProof(), CVC3::Expr::getRational(), CVC3::GT, CVC3::isIneq(), CVC3::Rational::isInteger(), CVC3::isRational(), CVC3::LE, CVC3::LT, CVC3::TheoremProducer::newPf(), CVC3::TheoremProducer::newRWTheorem(), rat(), and CVC3::TheoremProducer::withProof().


Member Data Documentation

TheoryArith* CVC3::ArithTheoremProducerOld::d_theoryArith [private]

Definition at line 33 of file arith_theorem_producer_old.h.

Referenced by canonDivide(), canonMultConstPlus(), canonMultMtermMterm(), darkShadow(), eqElimIntRule(), grayShadow(), grayShadowConst(), intType(), intVarEqnConst(), and realType().


The documentation for this class was generated from the following files:
Generated on Tue Jul 3 14:41:34 2007 for CVC3 by  doxygen 1.5.1