3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-13 07:56:39 +00:00
Commit graph

34 commits

Author SHA1 Message Date
Jakob Rath
6f1e4283bb Merge forbidden intervals for positive and negative equations 2022-12-13 11:42:52 +01:00
Jakob Rath
9fcea37625 remove constructor 2022-08-22 15:00:35 +02:00
Jakob Rath
3a759c1a28 move fi_record 2022-08-22 14:14:30 +02:00
Jakob Rath
48c6bea331 umul 2 2022-07-21 12:38:00 +02:00
Nikolaj Bjorner
8c9835bca6 smul no overflow
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-02-16 18:55:07 +02:00
Jakob Rath
cbed3bfde4 fi: match_non_zero_linear 2022-01-26 11:09:37 +01:00
Jakob Rath
1cb7ca8dfc match additional cases in forbidden intervals 2022-01-24 14:15:10 +01:00
Nikolaj Bjorner
417a5320c7 forbidden intervals for strict inequalities
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-01-22 11:14:53 +01:00
Jakob Rath
28864e563c First version of refine_disequal_lin 2021-12-23 18:36:27 +01:00
Nikolaj Bjorner
651b41f8c0 refactor fi functionality 2021-12-13 11:39:15 -08:00
Nikolaj Bjorner
c7da31a67d na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-12-13 10:24:42 -08:00
Nikolaj Bjorner
98a0f37eec update viable
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-12-04 02:23:21 -08:00
Nikolaj Bjorner
a81a00a93c add support for non-unit coefficients
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-11-30 09:53:09 -08:00
Nikolaj Bjorner
8db711bc3c retire deprecated functionality
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-11-22 18:14:15 +01:00
Nikolaj Bjorner
0bec8520e1 adding new viable using forbidden intervals
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-11-10 08:23:45 -08:00
Nikolaj Bjorner
931e1624b2 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-11-10 02:58:35 -08:00
Nikolaj Bjorner
d0b47d23f6 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-11-10 00:43:57 -08:00
Nikolaj Bjorner
d0c8240560 refactor forbidden intervals
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-11-09 10:34:11 -08:00
Nikolaj Bjorner
813674087e wip 2021-10-04 14:43:33 -07:00
Nikolaj Bjorner
fd8b2ba596 clear regressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-09-29 15:56:01 -07:00
Nikolaj Bjorner
bb5ff8db24 rename conflict_core to conflict:
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-09-20 14:05:55 -07:00
Nikolaj Bjorner
7e7f88ae3d fix backtracking from fi
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-09-15 09:28:59 +01:00
Nikolaj Bjorner
f5fd295e01 reorganize variable tracking for lemmas
this is going to break a bunch
2021-09-12 18:05:29 +02:00
Jakob Rath
75bac21574 Re-integrate forbidden intervals 2021-09-08 16:51:16 +02:00
Nikolaj Bjorner
7980b05cc1 forbidden intervals create a lemma
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-09-08 06:54:36 +02:00
Nikolaj Bjorner
a6643955e6 forbidden interval update
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-09-07 17:00:46 +02:00
Nikolaj Bjorner
e6c4ae19c6 stab at forbidden intervals
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-09-07 15:49:29 +02:00
Jakob Rath
0c1e44da77
Polysat: constraint refactor cont'd, deduplicate constraints (#5520)
* Assign boolean variables only to long-lived constraints, and deduplicate constraints when they are created

* scoped_signed_constraint

* update other classes

* fix

* Don't use scoped_ptr<constraint> with dedup()
2021-08-30 10:00:27 -07:00
Jakob Rath
ebaea2159e
Polysat: use constraint_literal and begin move to core-based conflict representation (#5489)
* Rename solver_scope for fixplex tests

(otherwise the wrong constructor is called for polysat's solver_scope)

* Update conflict_core

* simplify

* Be clearer about constraint_literal lifetime

* remove old comment

* Remove status (positive/negative) from constraint

* Use constraint_literal in the solver

* Fix build (constraint -> get_constraint)
2021-08-18 11:02:46 -07:00
Jakob Rath
3436b52c4a
Polysat: refactor constraints (#5372)
* Refactor: remove sign and dep from constraint

* fix some bugs

* improve log messages

* Add missing premises to lemma

* Rename getter in an attempt to fix linux build
2021-06-25 11:04:25 -07:00
Jakob Rath
8757f04d20
Polysat: disjunctive lemmas (#5311)
* Add macro to disable linear solver for development

* Move new_* and add_* to header

* Add ref_vector_core::push_back(ref<T>&&)

* Attempt to simplify lifetime handling

* Make operator bool() explicit

* clause improvements

* display boolean assignment

* clause::resolve

* bug fixes

* more fixes

* final case of backtrack
2021-05-28 13:53:08 -07:00
Jakob Rath
28996429df
Polysat disjunctive lemmas (WIP) (#5275)
* Extend search state by boolean literals

* Only resolve against positive equality

* mk_dep_ref

* Make clause non-owning

* scoped_clause

* Use scoped_clause

* minor

* scoped_ptr move assignment

* WIP: internal handling of disjunctive constraints

* leaf_value

* disjunctive constraints continued

* Fix bool_lit

* Actually add constraints to storage

* Some fixes

* more fixes

* constraint should have a bool_lit instead of a bool_var

* propagate(bool_lit)

* updates

* interface changes

* small fixes

* Make sat::dimacs_lit's constructor explicit

(otherwise, calling operator<< with sat::literal is ambiguous)

* Use sat::literal

* Print test name at the beginning

* Convention: constraint corresponds to the positive boolean literal

* Make constraint ownership more explicit

* clause stores literals
2021-05-21 13:50:25 -07:00
Jakob Rath
0c4824f194
Polysat: forbidden intervals updates (#5230)
* Pop assign_eh

* Fix scoped_ptr_vector constructors, add detach()

* Need to copy the returned lemma

* Add test

* Basic inequality tests

* Return disjunctive lemma to caller
2021-04-30 08:41:50 -07:00
Jakob Rath
f83705bf9f
Polysat: first pass at forbidden intervals (not yet fully integrated into solver) (#5227)
* Add interval class

* Take dependency as const reference

* Compute forbidden intervals for ule-constraints

* Add class for evaluated interval

* We need the evaluated bounds as well

* Don't add constraint to cjust multiple times (hack, to be improved later)

* typo

* More interval helpers

* Add constraint::ult factory function

* Fix forbidden interval condition

* Add solver::has_viable

* Add conflict explanation using forbidden intervals (not yet fully integrated into solver)
2021-04-29 10:12:54 -07:00