mirror of
https://github.com/Z3Prover/z3
synced 2025-10-08 08:51:55 +00:00
Rename finite_sets to finite_set everywhere including file names
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
parent
aa9cb71f6b
commit
495cdba9af
7 changed files with 46 additions and 46 deletions
|
@ -28,7 +28,7 @@ z3_add_component(ast
|
||||||
expr_map.cpp
|
expr_map.cpp
|
||||||
expr_stat.cpp
|
expr_stat.cpp
|
||||||
expr_substitution.cpp
|
expr_substitution.cpp
|
||||||
finite_sets_decl_plugin.cpp
|
finite_set_decl_plugin.cpp
|
||||||
for_each_ast.cpp
|
for_each_ast.cpp
|
||||||
for_each_expr.cpp
|
for_each_expr.cpp
|
||||||
format.cpp
|
format.cpp
|
||||||
|
|
|
@ -3,7 +3,7 @@ Copyright (c) 2025 Microsoft Corporation
|
||||||
|
|
||||||
Module Name:
|
Module Name:
|
||||||
|
|
||||||
finite_sets_decl_plugin.cpp
|
finite_set_decl_plugin.cpp
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
|
@ -17,27 +17,27 @@ Revision History:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
#include<sstream>
|
#include<sstream>
|
||||||
#include "ast/finite_sets_decl_plugin.h"
|
#include "ast/finite_set_decl_plugin.h"
|
||||||
#include "ast/arith_decl_plugin.h"
|
#include "ast/arith_decl_plugin.h"
|
||||||
#include "ast/array_decl_plugin.h"
|
#include "ast/array_decl_plugin.h"
|
||||||
#include "util/warning.h"
|
#include "util/warning.h"
|
||||||
|
|
||||||
finite_sets_decl_plugin::finite_sets_decl_plugin():
|
finite_set_decl_plugin::finite_set_decl_plugin():
|
||||||
m_init(false) {
|
m_init(false) {
|
||||||
}
|
}
|
||||||
|
|
||||||
finite_sets_decl_plugin::~finite_sets_decl_plugin() {
|
finite_set_decl_plugin::~finite_set_decl_plugin() {
|
||||||
for (psig* s : m_sigs)
|
for (psig* s : m_sigs)
|
||||||
dealloc(s);
|
dealloc(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool finite_sets_decl_plugin::is_sort_param(sort* s, unsigned& idx) {
|
bool finite_set_decl_plugin::is_sort_param(sort* s, unsigned& idx) {
|
||||||
return
|
return
|
||||||
s->get_name().is_numerical() &&
|
s->get_name().is_numerical() &&
|
||||||
(idx = s->get_name().get_num(), true);
|
(idx = s->get_name().get_num(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool finite_sets_decl_plugin::match(ptr_vector<sort>& binding, sort* s, sort* sP) {
|
bool finite_set_decl_plugin::match(ptr_vector<sort>& binding, sort* s, sort* sP) {
|
||||||
if (s == sP) return true;
|
if (s == sP) return true;
|
||||||
unsigned idx;
|
unsigned idx;
|
||||||
if (is_sort_param(sP, idx)) {
|
if (is_sort_param(sP, idx)) {
|
||||||
|
@ -64,7 +64,7 @@ bool finite_sets_decl_plugin::match(ptr_vector<sort>& binding, sort* s, sort* sP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void finite_sets_decl_plugin::match(psig& sig, unsigned dsz, sort *const* dom, sort* range, sort_ref& range_out) {
|
void finite_set_decl_plugin::match(psig& sig, unsigned dsz, sort *const* dom, sort* range, sort_ref& range_out) {
|
||||||
m_binding.reset();
|
m_binding.reset();
|
||||||
ast_manager& m = *m_manager;
|
ast_manager& m = *m_manager;
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ void finite_sets_decl_plugin::match(psig& sig, unsigned dsz, sort *const* dom, s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void finite_sets_decl_plugin::init() {
|
void finite_set_decl_plugin::init() {
|
||||||
if (m_init) return;
|
if (m_init) return;
|
||||||
ast_manager& m = *m_manager;
|
ast_manager& m = *m_manager;
|
||||||
array_util autil(m);
|
array_util autil(m);
|
||||||
|
@ -147,7 +147,7 @@ void finite_sets_decl_plugin::init() {
|
||||||
m_sigs[OP_FINITE_SET_RANGE] = alloc(psig, m, "set.range", 0, 2, intintT, setInt);
|
m_sigs[OP_FINITE_SET_RANGE] = alloc(psig, m, "set.range", 0, 2, intintT, setInt);
|
||||||
}
|
}
|
||||||
|
|
||||||
sort * finite_sets_decl_plugin::mk_sort(decl_kind k, unsigned num_parameters, parameter const * parameters) {
|
sort * finite_set_decl_plugin::mk_sort(decl_kind k, unsigned num_parameters, parameter const * parameters) {
|
||||||
if (k == FINITE_SET_SORT) {
|
if (k == FINITE_SET_SORT) {
|
||||||
if (num_parameters != 1) {
|
if (num_parameters != 1) {
|
||||||
m_manager->raise_exception("FiniteSet sort expects exactly one parameter (element sort)");
|
m_manager->raise_exception("FiniteSet sort expects exactly one parameter (element sort)");
|
||||||
|
@ -166,7 +166,7 @@ sort * finite_sets_decl_plugin::mk_sort(decl_kind k, unsigned num_parameters, pa
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
sort * finite_sets_decl_plugin::get_element_sort(sort* finite_set_sort) const {
|
sort * finite_set_decl_plugin::get_element_sort(sort* finite_set_sort) const {
|
||||||
if (finite_set_sort->get_family_id() != m_family_id ||
|
if (finite_set_sort->get_family_id() != m_family_id ||
|
||||||
finite_set_sort->get_decl_kind() != FINITE_SET_SORT) {
|
finite_set_sort->get_decl_kind() != FINITE_SET_SORT) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -178,7 +178,7 @@ sort * finite_sets_decl_plugin::get_element_sort(sort* finite_set_sort) const {
|
||||||
return to_sort(params[0].get_ast());
|
return to_sort(params[0].get_ast());
|
||||||
}
|
}
|
||||||
|
|
||||||
func_decl * finite_sets_decl_plugin::mk_empty(sort* element_sort) {
|
func_decl * finite_set_decl_plugin::mk_empty(sort* element_sort) {
|
||||||
parameter param(element_sort);
|
parameter param(element_sort);
|
||||||
sort * finite_set_sort = m_manager->mk_sort(m_family_id, FINITE_SET_SORT, 1, ¶m);
|
sort * finite_set_sort = m_manager->mk_sort(m_family_id, FINITE_SET_SORT, 1, ¶m);
|
||||||
sort * const * no_domain = nullptr;
|
sort * const * no_domain = nullptr;
|
||||||
|
@ -186,14 +186,14 @@ func_decl * finite_sets_decl_plugin::mk_empty(sort* element_sort) {
|
||||||
func_decl_info(m_family_id, OP_FINITE_SET_EMPTY, 1, ¶m));
|
func_decl_info(m_family_id, OP_FINITE_SET_EMPTY, 1, ¶m));
|
||||||
}
|
}
|
||||||
|
|
||||||
func_decl * finite_sets_decl_plugin::mk_finite_set_op(decl_kind k, unsigned arity, sort * const * domain, sort* range) {
|
func_decl * finite_set_decl_plugin::mk_finite_set_op(decl_kind k, unsigned arity, sort * const * domain, sort* range) {
|
||||||
ast_manager& m = *m_manager;
|
ast_manager& m = *m_manager;
|
||||||
sort_ref rng(m);
|
sort_ref rng(m);
|
||||||
match(*m_sigs[k], arity, domain, range, rng);
|
match(*m_sigs[k], arity, domain, range, rng);
|
||||||
return m.mk_func_decl(m_sigs[k]->m_name, arity, domain, rng, func_decl_info(m_family_id, k));
|
return m.mk_func_decl(m_sigs[k]->m_name, arity, domain, rng, func_decl_info(m_family_id, k));
|
||||||
}
|
}
|
||||||
|
|
||||||
func_decl * finite_sets_decl_plugin::mk_func_decl(decl_kind k, unsigned num_parameters,
|
func_decl * finite_set_decl_plugin::mk_func_decl(decl_kind k, unsigned num_parameters,
|
||||||
parameter const * parameters,
|
parameter const * parameters,
|
||||||
unsigned arity, sort * const * domain,
|
unsigned arity, sort * const * domain,
|
||||||
sort * range) {
|
sort * range) {
|
||||||
|
@ -222,7 +222,7 @@ func_decl * finite_sets_decl_plugin::mk_func_decl(decl_kind k, unsigned num_para
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void finite_sets_decl_plugin::get_op_names(svector<builtin_name>& op_names, symbol const & logic) {
|
void finite_set_decl_plugin::get_op_names(svector<builtin_name>& op_names, symbol const & logic) {
|
||||||
init();
|
init();
|
||||||
for (unsigned i = 0; i < m_sigs.size(); ++i) {
|
for (unsigned i = 0; i < m_sigs.size(); ++i) {
|
||||||
if (m_sigs[i])
|
if (m_sigs[i])
|
||||||
|
@ -230,11 +230,11 @@ void finite_sets_decl_plugin::get_op_names(svector<builtin_name>& op_names, symb
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void finite_sets_decl_plugin::get_sort_names(svector<builtin_name>& sort_names, symbol const & logic) {
|
void finite_set_decl_plugin::get_sort_names(svector<builtin_name>& sort_names, symbol const & logic) {
|
||||||
sort_names.push_back(builtin_name("FiniteSet", FINITE_SET_SORT));
|
sort_names.push_back(builtin_name("FiniteSet", FINITE_SET_SORT));
|
||||||
}
|
}
|
||||||
|
|
||||||
expr * finite_sets_decl_plugin::get_some_value(sort * s) {
|
expr * finite_set_decl_plugin::get_some_value(sort * s) {
|
||||||
if (s->get_family_id() == m_family_id && s->get_decl_kind() == FINITE_SET_SORT) {
|
if (s->get_family_id() == m_family_id && s->get_decl_kind() == FINITE_SET_SORT) {
|
||||||
// Return empty set for the given sort
|
// Return empty set for the given sort
|
||||||
sort* element_sort = get_element_sort(s);
|
sort* element_sort = get_element_sort(s);
|
||||||
|
@ -246,16 +246,16 @@ expr * finite_sets_decl_plugin::get_some_value(sort * s) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool finite_sets_decl_plugin::is_fully_interp(sort * s) const {
|
bool finite_set_decl_plugin::is_fully_interp(sort * s) const {
|
||||||
return s->get_family_id() == m_family_id && s->get_decl_kind() == FINITE_SET_SORT;
|
return s->get_family_id() == m_family_id && s->get_decl_kind() == FINITE_SET_SORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool finite_sets_decl_plugin::is_value(app * e) const {
|
bool finite_set_decl_plugin::is_value(app * e) const {
|
||||||
// Empty set is a value
|
// Empty set is a value
|
||||||
return is_app_of(e, m_family_id, OP_FINITE_SET_EMPTY);
|
return is_app_of(e, m_family_id, OP_FINITE_SET_EMPTY);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool finite_sets_decl_plugin::is_unique_value(app* e) const {
|
bool finite_set_decl_plugin::is_unique_value(app* e) const {
|
||||||
// Empty set is a unique value for its sort
|
// Empty set is a unique value for its sort
|
||||||
return is_value(e);
|
return is_value(e);
|
||||||
}
|
}
|
|
@ -3,7 +3,7 @@ Copyright (c) 2025 Microsoft Corporation
|
||||||
|
|
||||||
Module Name:
|
Module Name:
|
||||||
|
|
||||||
finite_sets_decl_plugin.h
|
finite_set_decl_plugin.h
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
Declaration plugin for finite sets signatures
|
Declaration plugin for finite sets signatures
|
||||||
|
@ -29,11 +29,11 @@ Operators:
|
||||||
|
|
||||||
#include "ast/ast.h"
|
#include "ast/ast.h"
|
||||||
|
|
||||||
enum finite_sets_sort_kind {
|
enum finite_set_sort_kind {
|
||||||
FINITE_SET_SORT
|
FINITE_SET_SORT
|
||||||
};
|
};
|
||||||
|
|
||||||
enum finite_sets_op_kind {
|
enum finite_set_op_kind {
|
||||||
OP_FINITE_SET_EMPTY,
|
OP_FINITE_SET_EMPTY,
|
||||||
OP_FINITE_SET_SINGLETON,
|
OP_FINITE_SET_SINGLETON,
|
||||||
OP_FINITE_SET_UNION,
|
OP_FINITE_SET_UNION,
|
||||||
|
@ -48,7 +48,7 @@ enum finite_sets_op_kind {
|
||||||
LAST_FINITE_SET_OP
|
LAST_FINITE_SET_OP
|
||||||
};
|
};
|
||||||
|
|
||||||
class finite_sets_decl_plugin : public decl_plugin {
|
class finite_set_decl_plugin : public decl_plugin {
|
||||||
struct psig {
|
struct psig {
|
||||||
symbol m_name;
|
symbol m_name;
|
||||||
unsigned m_num_params;
|
unsigned m_num_params;
|
||||||
|
@ -77,11 +77,11 @@ class finite_sets_decl_plugin : public decl_plugin {
|
||||||
sort * get_element_sort(sort* finite_set_sort) const;
|
sort * get_element_sort(sort* finite_set_sort) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
finite_sets_decl_plugin();
|
finite_set_decl_plugin();
|
||||||
~finite_sets_decl_plugin() override;
|
~finite_set_decl_plugin() override;
|
||||||
|
|
||||||
decl_plugin * mk_fresh() override {
|
decl_plugin * mk_fresh() override {
|
||||||
return alloc(finite_sets_decl_plugin);
|
return alloc(finite_set_decl_plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void finalize() override {
|
void finalize() override {
|
||||||
|
@ -118,11 +118,11 @@ public:
|
||||||
bool is_unique_value(app* e) const override;
|
bool is_unique_value(app* e) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class finite_sets_recognizers {
|
class finite_set_recognizers {
|
||||||
protected:
|
protected:
|
||||||
family_id m_fid;
|
family_id m_fid;
|
||||||
public:
|
public:
|
||||||
finite_sets_recognizers(family_id fid):m_fid(fid) {}
|
finite_set_recognizers(family_id fid):m_fid(fid) {}
|
||||||
family_id get_family_id() const { return m_fid; }
|
family_id get_family_id() const { return m_fid; }
|
||||||
bool is_finite_set(sort* s) const { return is_sort_of(s, m_fid, FINITE_SET_SORT); }
|
bool is_finite_set(sort* s) const { return is_sort_of(s, m_fid, FINITE_SET_SORT); }
|
||||||
bool is_finite_set(expr* n) const { return is_finite_set(n->get_sort()); }
|
bool is_finite_set(expr* n) const { return is_finite_set(n->get_sort()); }
|
||||||
|
@ -139,11 +139,11 @@ public:
|
||||||
bool is_range(expr* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_RANGE); }
|
bool is_range(expr* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_RANGE); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class finite_sets_util : public finite_sets_recognizers {
|
class finite_set_util : public finite_set_recognizers {
|
||||||
ast_manager& m_manager;
|
ast_manager& m_manager;
|
||||||
public:
|
public:
|
||||||
finite_sets_util(ast_manager& m):
|
finite_set_util(ast_manager& m):
|
||||||
finite_sets_recognizers(m.mk_family_id("finite_sets")), m_manager(m) {}
|
finite_set_recognizers(m.mk_family_id("finite_set")), m_manager(m) {}
|
||||||
|
|
||||||
ast_manager& get_manager() const { return m_manager; }
|
ast_manager& get_manager() const { return m_manager; }
|
||||||
|
|
|
@ -29,7 +29,7 @@ Revision History:
|
||||||
#include "ast/pb_decl_plugin.h"
|
#include "ast/pb_decl_plugin.h"
|
||||||
#include "ast/fpa_decl_plugin.h"
|
#include "ast/fpa_decl_plugin.h"
|
||||||
#include "ast/special_relations_decl_plugin.h"
|
#include "ast/special_relations_decl_plugin.h"
|
||||||
#include "ast/finite_sets_decl_plugin.h"
|
#include "ast/finite_set_decl_plugin.h"
|
||||||
|
|
||||||
void reg_decl_plugins(ast_manager & m) {
|
void reg_decl_plugins(ast_manager & m) {
|
||||||
if (!m.get_plugin(m.mk_family_id(symbol("arith")))) {
|
if (!m.get_plugin(m.mk_family_id(symbol("arith")))) {
|
||||||
|
@ -65,7 +65,7 @@ void reg_decl_plugins(ast_manager & m) {
|
||||||
if (!m.get_plugin(m.mk_family_id(symbol("specrels")))) {
|
if (!m.get_plugin(m.mk_family_id(symbol("specrels")))) {
|
||||||
m.register_plugin(symbol("specrels"), alloc(special_relations_decl_plugin));
|
m.register_plugin(symbol("specrels"), alloc(special_relations_decl_plugin));
|
||||||
}
|
}
|
||||||
if (!m.get_plugin(m.mk_family_id(symbol("finite_sets")))) {
|
if (!m.get_plugin(m.mk_family_id(symbol("finite_set")))) {
|
||||||
m.register_plugin(symbol("finite_sets"), alloc(finite_sets_decl_plugin));
|
m.register_plugin(symbol("finite_set"), alloc(finite_set_decl_plugin));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ add_executable(test-z3
|
||||||
expr_substitution.cpp
|
expr_substitution.cpp
|
||||||
ext_numeral.cpp
|
ext_numeral.cpp
|
||||||
f2n.cpp
|
f2n.cpp
|
||||||
finite_sets.cpp
|
finite_set.cpp
|
||||||
factor_rewriter.cpp
|
factor_rewriter.cpp
|
||||||
finder.cpp
|
finder.cpp
|
||||||
fixed_bit_vector.cpp
|
fixed_bit_vector.cpp
|
||||||
|
|
|
@ -3,7 +3,7 @@ Copyright (c) 2025 Microsoft Corporation
|
||||||
|
|
||||||
Module Name:
|
Module Name:
|
||||||
|
|
||||||
tst_finite_sets.cpp
|
tst_finite_set.cpp
|
||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
|
|
||||||
|
@ -17,16 +17,16 @@ Revision History:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
#include "ast/ast.h"
|
#include "ast/ast.h"
|
||||||
#include "ast/finite_sets_decl_plugin.h"
|
#include "ast/finite_set_decl_plugin.h"
|
||||||
#include "ast/reg_decl_plugins.h"
|
#include "ast/reg_decl_plugins.h"
|
||||||
#include "ast/arith_decl_plugin.h"
|
#include "ast/arith_decl_plugin.h"
|
||||||
#include "ast/array_decl_plugin.h"
|
#include "ast/array_decl_plugin.h"
|
||||||
|
|
||||||
static void tst_finite_sets_basic() {
|
static void tst_finite_set_basic() {
|
||||||
ast_manager m;
|
ast_manager m;
|
||||||
reg_decl_plugins(m);
|
reg_decl_plugins(m);
|
||||||
|
|
||||||
finite_sets_util fsets(m);
|
finite_set_util fsets(m);
|
||||||
arith_util arith(m);
|
arith_util arith(m);
|
||||||
|
|
||||||
// Test creating a finite set sort
|
// Test creating a finite set sort
|
||||||
|
@ -85,11 +85,11 @@ static void tst_finite_sets_basic() {
|
||||||
ENSURE(m.is_bool(subset_expr->get_sort()));
|
ENSURE(m.is_bool(subset_expr->get_sort()));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tst_finite_sets_map_filter() {
|
static void tst_finite_set_map_filter() {
|
||||||
ast_manager m;
|
ast_manager m;
|
||||||
reg_decl_plugins(m);
|
reg_decl_plugins(m);
|
||||||
|
|
||||||
finite_sets_util fsets(m);
|
finite_set_util fsets(m);
|
||||||
arith_util arith(m);
|
arith_util arith(m);
|
||||||
array_util autil(m);
|
array_util autil(m);
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ static void tst_finite_sets_map_filter() {
|
||||||
ENSURE(filtered_set->get_sort() == finite_set_int.get());
|
ENSURE(filtered_set->get_sort() == finite_set_int.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_finite_sets() {
|
void tst_finite_set() {
|
||||||
tst_finite_sets_basic();
|
tst_finite_set_basic();
|
||||||
tst_finite_sets_map_filter();
|
tst_finite_set_map_filter();
|
||||||
}
|
}
|
|
@ -282,5 +282,5 @@ int main(int argc, char ** argv) {
|
||||||
TST(scoped_vector);
|
TST(scoped_vector);
|
||||||
TST(sls_seq_plugin);
|
TST(sls_seq_plugin);
|
||||||
TST(ho_matcher);
|
TST(ho_matcher);
|
||||||
TST(finite_sets);
|
TST(finite_set);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue