summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTianyi Liang <tianyi-liang@uiowa.edu>2014-02-05 09:19:23 -0600
committerTianyi Liang <tianyi-liang@uiowa.edu>2014-02-05 09:19:23 -0600
commit6440e0675e5a9906fb9f21d1c1c119299e1cc2be (patch)
tree661c840ceb102c538689b89ad5393fc6341c1020
parent0ca6b72fa4546f81949fe08f3d8a0eb9251dc7c9 (diff)
minor fix for merge
-rw-r--r--src/theory/strings/theory_strings.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp
index 58344964c..3435d8f58 100644
--- a/src/theory/strings/theory_strings.cpp
+++ b/src/theory/strings/theory_strings.cpp
@@ -1403,7 +1403,7 @@ bool TheoryStrings::processDeq( Node ni, Node nj ) {
Assert( index<nfi.size() && index<nfj.size() );
Node i = nfi[index];
Node j = nfj[index];
- Trace("strings-solve-debug") << "...Processing " << i << " " << j << std::endl;
+ Trace("strings-solve-debug") << "...Processing(DEQ) " << i << " " << j << std::endl;
if( !areEqual( i, j ) ) {
Assert( i.getKind()!=kind::CONST_STRING || j.getKind()!=kind::CONST_STRING );
Node li = getLength( i );
@@ -1504,7 +1504,7 @@ int TheoryStrings::processSimpleDeq( std::vector< Node >& nfi, std::vector< Node
} else {
Node i = nfi[index];
Node j = nfj[index];
- Trace("strings-solve-debug") << "...Processing " << i << " " << j << std::endl;
+ Trace("strings-solve-debug") << "...Processing(QED) " << i << " " << j << std::endl;
if( !areEqual( i, j ) ) {
if( i.getKind()==kind::CONST_STRING && j.getKind()==kind::CONST_STRING ) {
unsigned int len_short = i.getConst<String>().size() < j.getConst<String>().size() ? i.getConst<String>().size() : j.getConst<String>().size();
@@ -2032,11 +2032,10 @@ bool TheoryStrings::checkCardinality() {
for( unsigned i = 0; i<cols.size(); ++i ){
Node lr = lts[i];
- Trace("string-cardinality") << "Number of strings with length equal to " << lr << " is " << cols[i].size() << std::endl;
+ Trace("strings-card") << "Number of strings with length equal to " << lr << " is " << cols[i].size() << std::endl;
// size > c^k
- double k = std::log( cols[i].size() ) / log((double) cardinality);
- unsigned int int_k = (unsigned int)k;
- Node k_node = NodeManager::currentNM()->mkConst( ::CVC4::Rational( int_k ) );
+ double k = cols[i].size()==1 ? 0.0 : std::log( cols[i].size() - 1) / log((double) cardinality);
+ unsigned int int_k = (unsigned int) k;
//double c_k = pow ( (double)cardinality, (double)lr );
if( cols[i].size() > 1 ) {
bool allDisequal = true;
@@ -2055,9 +2054,10 @@ bool TheoryStrings::checkCardinality() {
}
if(allDisequal) {
EqcInfo* ei = getOrMakeEqcInfo( lr, true );
- Trace("string-cardinality") << "Previous cardinality used for " << lr << " is " << ((int)ei->d_cardinality_lem_k.get()-1) << std::endl;
+ Trace("strings-card") << "Previous cardinality used for " << lr << " is " << ((int)ei->d_cardinality_lem_k.get()-1) << std::endl;
if( int_k+1 > ei->d_cardinality_lem_k.get() ){
- //add cardinality lemma
+ Node k_node = NodeManager::currentNM()->mkConst( ::CVC4::Rational( int_k ) );
+ //add cardinality lemma
Node dist = NodeManager::currentNM()->mkNode( kind::DISTINCT, cols[i] );
std::vector< Node > vec_node;
vec_node.push_back( dist );
@@ -2065,7 +2065,7 @@ bool TheoryStrings::checkCardinality() {
itr1 != cols[i].end(); ++itr1) {
Node len = NodeManager::currentNM()->mkNode( kind::STRING_LENGTH, *itr1 );
if( len!=lr ){
- Node len_eq_lr = NodeManager::currentNM()->mkNode( kind::EQUAL, lr, len );
+ Node len_eq_lr = len.eqNode(lr);
vec_node.push_back( len_eq_lr );
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback