From c0af8cf1c1e3edca35bb7ae4edf1831ebdee0abd Mon Sep 17 00:00:00 2001 From: ajreynol Date: Fri, 15 Jul 2016 09:39:09 -0500 Subject: [PATCH] Minor simplification to normal form explanations. --- src/theory/strings/theory_strings.cpp | 55 ++------------------------- src/theory/strings/theory_strings.h | 2 - 2 files changed, 3 insertions(+), 54 deletions(-) diff --git a/src/theory/strings/theory_strings.cpp b/src/theory/strings/theory_strings.cpp index 1f2fd694b..e8459133e 100644 --- a/src/theory/strings/theory_strings.cpp +++ b/src/theory/strings/theory_strings.cpp @@ -1956,16 +1956,8 @@ bool TheoryStrings::normalizeEquivalenceClass( Node eqc ) { } getConcatVec( eqc_c, d_normal_forms[eqc] ); d_normal_forms_base[eqc] = eqc_c; - if( eqc_c!=eqc ){ - d_normal_forms_exp[eqc].push_back( eqc_c.eqNode( eqc ) ); - } }else{ int nf_index = 0; - //nf.insert( nf.end(), normal_forms[nf_index].begin(), normal_forms[nf_index].end() ); - //nf_exp.insert( nf_exp.end(), normal_forms_exp[nf_index].begin(), normal_forms_exp[nf_index].end() ); - //Trace("strings-solve-debug2") << "take normal form ... done" << std::endl; - //d_normal_forms_base[eqc] = normal_form_src[nf_index]; - ///* std::vector< Node >::iterator itn = std::find( normal_form_src.begin(), normal_form_src.end(), eqc ); if( itn!=normal_form_src.end() ){ nf_index = itn - normal_form_src.begin(); @@ -1977,12 +1969,8 @@ bool TheoryStrings::normalizeEquivalenceClass( Node eqc ) { } d_normal_forms[eqc].insert( d_normal_forms[eqc].end(), normal_forms[nf_index].begin(), normal_forms[nf_index].end() ); d_normal_forms_exp[eqc].insert( d_normal_forms_exp[eqc].end(), normal_forms_exp[nf_index].begin(), normal_forms_exp[nf_index].end() ); - if( eqc!=normal_form_src[nf_index] ){ - d_normal_forms_exp[eqc].push_back( eqc.eqNode( normal_form_src[nf_index] ) ); - } Trace("strings-solve-debug2") << "take normal form ... done" << std::endl; d_normal_forms_base[eqc] = normal_form_src[nf_index]; - //*/ //track dependencies for( unsigned i=0; i } } } - if( nr!=n[i] ){ - Node eq = n[i].eqNode( nr ); + if( d_normal_forms_base[nr]!=n[i] ){ + Assert( d_normal_forms_base.find( nr )!=d_normal_forms_base.end() ); + Node eq = n[i].eqNode( d_normal_forms_base[nr] ); nf_exp_n.push_back( eq ); //track depends nf_exp_depend_n[eq][false] = orig_size; @@ -3463,44 +3452,6 @@ void TheoryStrings::getEquivalenceClasses( std::vector< Node >& eqcs ) { } } -void TheoryStrings::getFinalNormalForm( Node n, std::vector< Node >& nf, std::vector< Node >& exp ) { - if( n!=d_emptyString ) { - if( n.getKind()==kind::STRING_CONCAT ) { - for( unsigned i=0; id_const_term.get() : Node::null(); - if( !nc.isNull() ) { - nf.push_back( nc ); - if( n!=nc ) { - exp.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, n, nc ) ); - } - } else { - Assert( d_normal_forms.find( nr )!=d_normal_forms.end() ); - if( d_normal_forms[nr][0]==nr ) { - Assert( d_normal_forms[nr].size()==1 ); - nf.push_back( nr ); - if( n!=nr ) { - exp.push_back( NodeManager::currentNM()->mkNode( kind::EQUAL, n, nr ) ); - } - } else { - for( unsigned i=0; i& n, std::vector< std::vector< Node > >& cols, std::vector< Node >& lts ) { diff --git a/src/theory/strings/theory_strings.h b/src/theory/strings/theory_strings.h index 2e0ac7224..c4a3e85cd 100644 --- a/src/theory/strings/theory_strings.h +++ b/src/theory/strings/theory_strings.h @@ -385,8 +385,6 @@ protected: //get equivalence classes void getEquivalenceClasses( std::vector< Node >& eqcs ); - //get final normal form - void getFinalNormalForm( Node n, std::vector< Node >& nf, std::vector< Node >& exp ); //separate into collections with equal length void separateByLength( std::vector< Node >& n, std::vector< std::vector< Node > >& col, std::vector< Node >& lts ); -- 2.30.2