copilot-swe-agent[bot]
150f1fe2ea
Revert is_concat changes, add ZIPT URL, implement snode/sgraph operations and tests
...
- Revert is_str_concat/is_re_concat to original form (PR #8820 review)
- Add ZIPT URL (https://github.com/CEisenhofer/ZIPT ) to euf_sgraph.h
- Add snode::at() for token indexing and collect_tokens() for enumeration
- Add sgraph factory methods: mk_var, mk_char, mk_empty, mk_concat
- Add sgraph drop operations: drop_first, drop_last, drop_left, drop_right
- Add sgraph substitution: subst(snode*, snode*, snode*)
- Add Brzozowski derivative via seq_rewriter::mk_derivative
- Add minterm computation from regex predicates
- Add 7 new unit tests covering all new operations with complex concats
Co-authored-by: NikolajBjorner <56730610+NikolajBjorner@users.noreply.github.com>
2026-03-02 19:28:32 +00:00
copilot-swe-agent[bot]
40b99311e3
Fix enode_concat_eq leaf comparison, simplify is_str/re_concat, update sgraph summary
...
Address remaining review feedback from PR #8820 :
- Use pointer comparison instead of ID comparison in enode_concat_eq
- Remove redundant num_args() == 2 check from is_str_concat/is_re_concat
- Update euf_sgraph.h abstract to detail seq_plugin features
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-02 18:58:21 +00:00
copilot-swe-agent[bot]
8c0be6e614
Changes before error encountered
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-02 17:50:49 +00:00
copilot-swe-agent[bot]
a3baae5942
Changes before error encountered
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-02 17:01:49 +00:00
copilot-swe-agent[bot]
037d2da801
Distinguish is_re_concat/is_str_concat and mk_re_concat/mk_str_concat in euf_seq_plugin
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-02 16:34:29 +00:00
copilot-swe-agent[bot]
921260ae82
Fix propagate_assoc find/else logic for hash table
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-02 00:38:04 +00:00
copilot-swe-agent[bot]
82051ac4d8
Reuse seq_rewriter::is_nullable, add assoc hash table to seq_plugin propagate_assoc
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-02 00:36:52 +00:00
copilot-swe-agent[bot]
6ef3be4e5e
Remove sgraph dependency from seq_plugin, let sgraph register nodes via on_make callback
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 23:50:48 +00:00
copilot-swe-agent[bot]
b8656d4fbe
Address code review: add comments for collect_leaves, find_assoc_equal, and display
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 23:24:59 +00:00
copilot-swe-agent[bot]
5c14edf030
Change ownership: sgraph owns egraph with seq_plugin, add assoc hash table, add unit tests
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 23:23:12 +00:00
copilot-swe-agent[bot]
12b7a4dae3
Remove unused old_qhead variable in seq_plugin::propagate
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 21:51:00 +00:00
copilot-swe-agent[bot]
78a4e3001b
Add euf_seq_plugin: string plugin for egraph with concat associativity and ZIPT simplifications
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 21:50:06 +00:00
copilot-swe-agent[bot]
51f4f918ea
Update file header years from 2025 to 2026
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 21:17:08 +00:00
copilot-swe-agent[bot]
17099300f2
Add co-author Clemens Eisenhofer to headers, document ZIPT features not yet ported
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 21:14:52 +00:00
copilot-swe-agent[bot]
e4f9a517e4
Address code review: fix const-correctness, improve child registration, add comments
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 20:25:18 +00:00
copilot-swe-agent[bot]
2e17bb8767
Add OP_SEQ_POWER to seq_decl_plugin and create euf_snode/euf_sgraph for string graph encapsulation
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-01 20:19:37 +00:00
Nikolaj Bjorner
d906a0cc2d
fix bug reported by Maria Novoszel
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-02-27 12:02:55 -08:00
Lev Nachmanson
5ff5b075b2
Merge pull request #8789 from Z3Prover/succ_int_mult
...
Fix #7507 : simplify (>= product_of_consecutive_ints 0) to true
2026-02-27 09:45:26 -10:00
Lev Nachmanson
21c23e78db
Fix #7507 : simplify (>= product_of_consecutive_ints 0) to true
...
The arith rewriter now recognizes that x * (x + 1) >= 0 for all
integers, since no integer lies strictly between -1 and 0.
Two changes:
1. is_non_negative: detect products where unpaired factors are
consecutive integer expressions (differ by exactly 1), handling
both +1 and -1 offsets and n-ary additions
2. is_separated: return true for (>= non_negative_mul 0), restricted
to multiplication expressions to avoid disrupting other theories
Also adds regression tests for the new simplification.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 06:37:07 -10:00
Nikolaj Bjorner
828e4a7ef7
Merge pull request #8779 from Z3Prover/copilot/convert-bv1-blast-to-simplifier
...
Convert bv1-blast tactic to a dependent_expr_simplifier
2026-02-26 15:52:18 -08:00
Nikolaj Bjorner
c70f902b53
Merge pull request #8780 from Z3Prover/copilot/convert-blast-term-ite-to-simplifier
...
Convert `blast-term-ite` tactic to a `dependent_expr_simplifier`
2026-02-26 15:51:30 -08:00
copilot-swe-agent[bot]
ff7cc0f59e
Remove old blast-term-ite tactic class, rename blast-term-ite2 to blast-term-ite
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-26 20:07:42 +00:00
Nikolaj Bjorner
070f760501
Merge pull request #8748 from Z3Prover/copilot/fix-floating-point-model-validation
...
Fix fp.to_real bitvector encoding for denormal floating-point values
2026-02-26 02:21:20 -08:00
copilot-swe-agent[bot]
033ea50a5d
Convert bv1-blast tactic to a simplifier
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-26 04:01:11 +00:00
copilot-swe-agent[bot]
7390a9b856
Convert blast-term-ite tactic to also expose as a simplifier
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-26 03:51:42 +00:00
Nikolaj Bjorner
fba1e4b648
Merge pull request #8737 from Z3Prover/copilot/fix-refutational-soundness-bug
...
Fix soundness bug: RNE/RNA overflow to ±infinity in symbolic Real-to-FP conversion
2026-02-25 13:34:59 -08:00
Nikolaj Bjorner
aaa62efc90
Merge pull request #8725 from Z3Prover/copilot/convert-factor-to-simplifier
...
Convert `factor` tactic to a `dependent_expr_simplifier`
2026-02-24 08:42:30 -08:00
copilot-swe-agent[bot]
de3cf18899
Fix fp.to_real encoding for denormal floating-point values
...
The mk_to_real function in fpa2bv_converter.cpp was missing the
normalization shift adjustment (lz) when computing the real-valued
exponent for denormal floating-point numbers.
When unpack(x, sgn, sig, exp, lz, normalize=true) normalizes a denormal
by shifting the significand left by lz positions, the returned exp does
not account for this shift. All other callers (mk_mul, mk_div, mk_fma)
correctly subtract lz from the exponent, but mk_to_real was missing this.
The fix subtracts zero-extended lz from the sign-extended exp to get the
true exponent, matching the convention used by other FP operations.
Fixes incorrect model with (_ FloatingPoint 2 24) and fp.to_real.
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-24 05:22:54 +00:00
copilot-swe-agent[bot]
c0fd3513a2
Fix RNE/RNA overflow-to-infinity in Real-to-FP conversion (soundness bug)
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-23 04:34:58 +00:00
Nikolaj Bjorner
8fbc4ed26d
Merge pull request #8727 from Z3Prover/copilot/expose-max-bv-sharing-simplifier
...
Expose max-bv-sharing as a registered simplifier
2026-02-22 19:40:35 -08:00
copilot-swe-agent[bot]
c78b3d872d
Convert der tactic to simplifier: add der_simplifier.h and update der_tactic.h
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-21 23:49:05 +00:00
copilot-swe-agent[bot]
42d3a13ddf
Add factor_simplifier and factor2 tactic wrapping the simplifier
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-21 23:45:51 +00:00
copilot-swe-agent[bot]
ce905f91c3
Register max_bv_sharing simplifier via ADD_SIMPLIFIER
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-21 23:26:47 +00:00
copilot-swe-agent[bot]
e5d7319670
Code simplifications for finite set plugin
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-21 02:08:04 +00:00
Nikolaj Bjorner
a1d43f5fb9
fix build
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-02-18 21:03:19 -08:00
Nuno Lopes
3b89789438
delete dead code
2026-02-18 21:02:30 -08:00
copilot-swe-agent[bot]
d5ba26e754
Fix C4267 build warnings in ast.h by adding static_cast for size_t to unsigned conversions
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 21:02:29 -08:00
copilot-swe-agent[bot]
d958036711
Add initializer_list overloads and update all call sites
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 21:02:26 -08:00
copilot-swe-agent[bot]
d414646975
Add std::initializer_list overloads for update_quantifier and update call sites
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 21:02:26 -08:00
Nuno Lopes
f6f8beaf78
Remove copies ( #8583 )
2026-02-18 21:02:22 -08:00
Nikolaj Bjorner
776976cbd1
fix #8572
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-02-18 21:02:20 -08:00
Nikolaj Bjorner
c8cd205207
fix build warnings and scoop up after Nuno's leaks
2026-02-18 21:02:18 -08:00
Nuno Lopes
a3e7bbb92f
replace some copies with moves
2026-02-18 21:02:17 -08:00
Copilot
3a8b688008
Store rational by value in parameter variant ( #8518 )
...
Co-authored-by: nunoplopes <2998477+nunoplopes@users.noreply.github.com>
2026-02-18 20:58:07 -08:00
Nuno Lopes
e73c897bd4
constructor
2026-02-18 20:58:07 -08:00
copilot-swe-agent[bot]
38661f25e4
Fix build warnings: cast size_t to unsigned in arith_decl_plugin.h and bv_decl_plugin.h
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 20:58:07 -08:00
copilot-swe-agent[bot]
999a92e3e6
Revert prexpr to non-static for debugging availability
...
Co-authored-by: nunoplopes <2998477+nunoplopes@users.noreply.github.com>
2026-02-18 20:58:05 -08:00
copilot-swe-agent[bot]
21fd199062
Add static linkage to internal functions
...
Co-authored-by: nunoplopes <2998477+nunoplopes@users.noreply.github.com>
2026-02-18 20:58:05 -08:00
Copilot
adf72f2a66
Modern C++: Add std::span overload for mk_or, adopt std::clamp, optimize stream output ( #8507 )
...
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 20:58:05 -08:00
Copilot
73f6dae095
Refactor mk_concat call sites to use std::initializer_list ( #8494 )
...
* Initial plan
* Refactor mk_concat call sites to use std::initializer_list
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 20:58:03 -08:00