25 #ifndef _cvc3__theory_array__array_proof_rules_h_
26 #define _cvc3__theory_array__array_proof_rules_h_
73 const Expr& write) = 0;
virtual Theorem propagateIndexDiseq(const Theorem &read1eqread2isFalse)=0
virtual Theorem rewriteReadWrite2(const Expr &e)=0
Data structure of expressions in CVC3.
virtual ~ArrayProofRules()
virtual Theorem rewriteWriteWrite(const Expr &e)=0
virtual Theorem liftReadIte(const Expr &e)=0
Lift ite over read.
virtual Theorem rewriteSameStore(const Expr &e, int n)=0
virtual Theorem arrayNotEq(const Theorem &e)=0
a /= b |- exists i. a[i] /= b[i]
virtual Theorem rewriteReadWrite(const Expr &e)=0
virtual Theorem rewriteRedundantWrite2(const Expr &e)=0
virtual Theorem rewriteRedundantWrite1(const Theorem &v_eq_r, const Expr &write)=0
virtual Theorem readArrayLiteral(const Expr &e)=0
Beta reduction of array literal: |- (array x. f(x))[arg] = f(arg)
virtual Theorem splitOnConstants(const Expr &a, const std::vector< Expr > &consts)=0
virtual Theorem interchangeIndices(const Expr &e)=0