diff --git a/src/ast/rewriter/seq_rewriter.cpp b/src/ast/rewriter/seq_rewriter.cpp index 02faebba5..9fcc35b2d 100644 --- a/src/ast/rewriter/seq_rewriter.cpp +++ b/src/ast/rewriter/seq_rewriter.cpp @@ -936,22 +936,13 @@ expr_ref seq_rewriter::mk_seq_last(expr* t) { } /* -* In general constructs substring(t,0,|t|-1) but if t = substring(s,0,k) then simplifies to substring(s,0,k-1) -* This method assumes that |t| > 0, thus, if t = substring(s,0,k) then k > 0 so substring(s,0,k-1) is correct. +* In general constructs substring(t,0,|t|-1) +* Incorrect comment: "but if t = substring(s,0,k) then simplifies to substring(s,0,k-1). +* This method assumes that |t| > 0, thus, if t = substring(s,0,k) then k > 0 so substring(s,0,k-1) is correct." +* No: if k > |s| then substring(s,0,k) = substring(s,0,k-1) */ expr_ref seq_rewriter::mk_seq_butlast(expr* t) { - expr_ref result(m()); - expr* s, * j, * k; - rational v; - if (false && str().is_extract(t, s, j, k) && m_autil.is_numeral(j, v) && v.is_zero()) { - expr_ref_vector k_min_1(m()); - k_min_1.push_back(k); - k_min_1.push_back(minus_one()); - result = str().mk_substr(s, j, m_autil.mk_add_simplify(k_min_1)); - } - else - result = str().mk_substr(t, zero(), m_autil.mk_sub(str().mk_length(t), one())); - return result; + return expr_ref(str().mk_substr(t, zero(), m_autil.mk_sub(str().mk_length(t), one())), m()); } /*