3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-23 16:57:51 +00:00

Complete theory_finite_set.h header and implement finite set theory solver (#7976)

* Initial plan

* Implement theory_finite_set header and implementation

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Add theory registration to smt_setup

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Update theory_finite_set.cpp

* Refactor membership_atoms and add elements list

Renamed membership_atoms to membership_elements and added elements list.

* Change membership elements to use enode type

* Update theory_finite_set.cpp

* Fix typo in internalize_atom function

* Update theory_finite_set.cpp

* Refactor final_check_eh by removing comments

Removed redundant comments and cleaned up code.

* Add m_lemmas member to theory_finite_set class

* Improve clause management and instantiation logic

Refactor clause handling and instantiate logic in finite set theory.

* Add friend class declaration for testing

* Add placeholder methods for lemma instantiation

Added placeholder methods for lemma instantiation.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Copilot 2025-10-15 14:55:08 +02:00 committed by GitHub
parent 7446112fbe
commit b4d41ffe81
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 248 additions and 2 deletions

View file

@ -40,6 +40,7 @@ Revision History:
#include "smt/theory_pb.h"
#include "smt/theory_fpa.h"
#include "smt/theory_polymorphism.h"
#include "smt/theory_finite_set.h"
namespace smt {
@ -784,6 +785,10 @@ namespace smt {
m_context.register_plugin(alloc(smt::theory_char, m_context));
}
void setup::setup_finite_set() {
m_context.register_plugin(alloc(smt::theory_finite_set, m_context));
}
void setup::setup_special_relations() {
m_context.register_plugin(alloc(smt::theory_special_relations, m_context, m_manager));
}
@ -807,6 +812,7 @@ namespace smt {
setup_dl();
setup_seq_str(st);
setup_fpa();
setup_finite_set();
setup_special_relations();
setup_polymorphism();
setup_relevancy(st);