3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-22 19:17:53 +00:00
Commit graph

22 commits

Author SHA1 Message Date
Nikolaj Bjorner
c6f58c8bf7 updates to some_string_in_re per code review comments
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2025-01-11 17:47:27 -08:00
Clemens Eisenhofer
c572fc2e4f
Regex membership (#7506)
* Make finding a word in the regex iterative

* Fixed gc problem
2025-01-11 17:41:37 -08:00
Nikolaj Bjorner
c1a62d346c add missing return 2025-01-07 21:02:02 -08:00
Nikolaj Bjorner
2dd4faf598 sketch expr_inverter approach for eliminating unconstrained regex containment. 2025-01-07 16:53:57 -08:00
Nikolaj Bjorner
ab9ea4e6e7 Add outline of elimination for regex membership constraints 2025-01-07 14:17:28 -08:00
Nikolaj Bjorner
4f4cafbc98 start update with expr-inverter to handle PB 2024-12-22 18:17:42 -08:00
Nikolaj Bjorner
3f407982f3 build fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2024-11-14 21:55:44 -08:00
Nikolaj Bjorner
6eae3f0863 add cases for unconstrained sequences and strings 2024-11-14 21:43:40 -08:00
Nikolaj Bjorner
bb99f44214 fix bugs in elim-unconstr2 and fix bugs in intblast_solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-12-17 17:42:55 -08:00
THE Spellchecker
dc0887db5a
Typo Fixes (#6803) 2023-07-09 11:56:10 -07:00
Nikolaj Bjorner
1a70ac75df fix #6687 2023-04-13 09:01:17 -07:00
Nikolaj Bjorner
d1c7ff1a36 add unconstrained elimination for sequences 2023-03-20 17:07:04 +01:00
Nikolaj Bjorner
b3de7ac595 remove passing proof parameter to expr-inverter
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-01-25 11:15:09 -08:00
Nikolaj Bjorner
f6d411d54b experimental feature to access congruence closure of SimpleSolver
This update includes an experimental feature to access a congruence closure data-structure after search.
It comes with several caveats as pre-processing is free to eliminate terms. It is therefore necessary to use a solver that does not eliminate the terms you want to track for congruence of. This is partially addressed by using SimpleSolver or incremental mode solving.

```python
from z3 import *
s = SimpleSolver()
x, y, z = Ints('x y z')
s.add(x == y)
s.add(y == z)
s.check()
print(s.root(x), s.root(y), s.root(z))
print(s.next(x), s.next(y), s.next(z))
```
2022-12-30 21:41:27 -08:00
Nikolaj Bjorner
79e6d4e32d tune and debug elim-unconstrained (v2 - for simplifiers infrastructure) 2022-12-04 03:53:31 -08:00
Nikolaj Bjorner
dcc995f0e5 code simplification 2022-11-19 18:45:54 +07:00
Nikolaj Bjorner
38cde14e08 wip missing updates 2022-11-13 12:10:43 -08:00
Nikolaj Bjorner
ce76e3138d streamlining expr-inverter code 2022-11-13 11:48:32 -08:00
Nikolaj Bjorner
3d570aaa0a add missing process_eq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-11-12 18:43:57 -08:00
Nikolaj Bjorner
0b83732b82 missing override specifier 2022-11-12 18:35:41 -08:00
Nikolaj Bjorner
343603f643 fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-11-12 18:34:04 -08:00
Nikolaj Bjorner
efbe0a6554 wip - updated version of elim_uncstr_tactic
- remove reduce_invertible. It is subsumed by reduce_uncstr(2)
- introduce a simplifier for reduce_unconstrained. It uses reference counting to deal with inefficiency bug of legacy reduce_uncstr. It decomposes theory plugins into expr_inverter.

reduce_invertible is a tactic used in most built-in scenarios. It is useful for removing subterms that can be eliminated using "cheap" quantifier elimination. Specifically variables that occur only once can be removed in many cases by computing an expression that represents the effect computing a value for the eliminated occurrence.

The theory plugins for variable elimination are very partial and should be augmented by extensions, esp. for the case of bit-vectors where the invertibility conditions are thoroughly documented by Niemetz and Preiner.
2022-11-12 17:56:45 -08:00