From f1806d32d6f21fd4df7a08719abbc1f6493d9dc5 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Sun, 20 Mar 2022 13:25:44 -0700 Subject: [PATCH] remove buggy code, close, fix #5825 Signed-off-by: Nikolaj Bjorner --- src/ast/rewriter/seq_rewriter.cpp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) 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()); } /*