mirror of
https://github.com/Z3Prover/z3
synced 2026-02-20 07:24:40 +00:00
Rename set.select to set.filter and OP_FINITE_SET_SELECT to OP_FINITE_SET_FILTER (#7989)
* Initial plan * Rename set.select to set.filter and OP_FINITE_SET_SELECT to OP_FINITE_SET_FILTER 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> Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ba5bc90d7c
commit
eb10ab1633
7 changed files with 25 additions and 24 deletions
|
|
@ -68,7 +68,7 @@ void finite_set_decl_plugin::init() {
|
|||
m_sigs[OP_FINITE_SET_SIZE] = alloc(polymorphism::psig, m, "set.size", 1, 1, &setA, intT);
|
||||
m_sigs[OP_FINITE_SET_SUBSET] = alloc(polymorphism::psig, m, "set.subset", 1, 2, setAsetA, boolT);
|
||||
m_sigs[OP_FINITE_SET_MAP] = alloc(polymorphism::psig, m, "set.map", 2, 2, arrABsetA, setB);
|
||||
m_sigs[OP_FINITE_SET_SELECT] = alloc(polymorphism::psig, m, "set.select", 1, 2, arrABoolsetA, setA);
|
||||
m_sigs[OP_FINITE_SET_FILTER] = alloc(polymorphism::psig, m, "set.filter", 1, 2, arrABoolsetA, setA);
|
||||
m_sigs[OP_FINITE_SET_RANGE] = alloc(polymorphism::psig, m, "set.range", 0, 2, intintT, setInt);
|
||||
m_sigs[OP_FINITE_SET_DIFF] = alloc(polymorphism::psig, m, "set.diff", 1, 2, setAsetA, A);
|
||||
// m_sigs[OP_FINITE_SET_MAP_INVERSE] = alloc(polymorphism::psig, m, "set.map_inverse", 2, 3, arrABsetBsetA, A);
|
||||
|
|
@ -158,7 +158,7 @@ func_decl * finite_set_decl_plugin::mk_func_decl(decl_kind k, unsigned num_param
|
|||
case OP_FINITE_SET_SIZE:
|
||||
case OP_FINITE_SET_SUBSET:
|
||||
case OP_FINITE_SET_MAP:
|
||||
case OP_FINITE_SET_SELECT:
|
||||
case OP_FINITE_SET_FILTER:
|
||||
case OP_FINITE_SET_RANGE:
|
||||
case OP_FINITE_SET_DIFF:
|
||||
return mk_finite_set_op(k, arity, domain, range);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ Operators:
|
|||
set.size : (FiniteSet S) -> Int
|
||||
set.subset : (FiniteSet S) (FiniteSet S) -> Bool
|
||||
set.map : (S -> T) (FiniteSet S) -> (FiniteSet T)
|
||||
set.select : (S -> Bool) (FiniteSet S) -> (FiniteSet S)
|
||||
set.filter : (S -> Bool) (FiniteSet S) -> (FiniteSet S)
|
||||
set.range : Int Int -> (FiniteSet Int)
|
||||
set.diff : (FiniteSet S) (FiniteSet S) -> S
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ enum finite_set_op_kind {
|
|||
OP_FINITE_SET_SIZE,
|
||||
OP_FINITE_SET_SUBSET,
|
||||
OP_FINITE_SET_MAP,
|
||||
OP_FINITE_SET_SELECT,
|
||||
OP_FINITE_SET_FILTER,
|
||||
OP_FINITE_SET_RANGE,
|
||||
OP_FINITE_SET_DIFF,
|
||||
OP_FINITE_SET_MAP_INVERSE,
|
||||
|
|
@ -131,7 +131,7 @@ public:
|
|||
bool is_size(expr const* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_SIZE); }
|
||||
bool is_subset(expr const* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_SUBSET); }
|
||||
bool is_map(expr const* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_MAP); }
|
||||
bool is_select(expr const* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_SELECT); }
|
||||
bool is_filter(expr const* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_FILTER); }
|
||||
bool is_range(expr const* n) const { return is_app_of(n, m_fid, OP_FINITE_SET_RANGE); }
|
||||
|
||||
MATCH_UNARY(is_singleton);
|
||||
|
|
@ -142,7 +142,7 @@ public:
|
|||
MATCH_BINARY(is_in);
|
||||
MATCH_BINARY(is_subset);
|
||||
MATCH_BINARY(is_map);
|
||||
MATCH_BINARY(is_select);
|
||||
MATCH_BINARY(is_filter);
|
||||
MATCH_BINARY(is_range);
|
||||
};
|
||||
|
||||
|
|
@ -191,8 +191,8 @@ public:
|
|||
return m_manager.mk_app(m_fid, OP_FINITE_SET_MAP, arr, set);
|
||||
}
|
||||
|
||||
app * mk_select(expr* arr, expr* set) {
|
||||
return m_manager.mk_app(m_fid, OP_FINITE_SET_SELECT, arr, set);
|
||||
app * mk_filter(expr* arr, expr* set) {
|
||||
return m_manager.mk_app(m_fid, OP_FINITE_SET_FILTER, arr, set);
|
||||
}
|
||||
|
||||
app * mk_range(expr* low, expr* high) {
|
||||
|
|
|
|||
|
|
@ -230,11 +230,11 @@ void finite_set_axioms::in_map_image_axiom(expr *x, expr *a) {
|
|||
m_add_clause(clause);
|
||||
}
|
||||
|
||||
// a := set.select(p, b)
|
||||
// a := set.filter(p, b)
|
||||
// (x in a) <=> (x in b) and p(x)
|
||||
void finite_set_axioms::in_select_axiom(expr *x, expr *a) {
|
||||
void finite_set_axioms::in_filter_axiom(expr *x, expr *a) {
|
||||
expr* p = nullptr, *b = nullptr;
|
||||
if (!u.is_select(a, p, b))
|
||||
if (!u.is_filter(a, p, b))
|
||||
return;
|
||||
|
||||
expr_ref x_in_a(u.mk_in(x, a), m);
|
||||
|
|
|
|||
|
|
@ -57,9 +57,9 @@ public:
|
|||
// (x in b) => f(x) in a
|
||||
void in_map_image_axiom(expr *x, expr *a);
|
||||
|
||||
// a := set.select(p, b)
|
||||
// a := set.filter(p, b)
|
||||
// (x in a) <=> (x in b) and p(x)
|
||||
void in_select_axiom(expr *x, expr *a);
|
||||
void in_filter_axiom(expr *x, expr *a);
|
||||
|
||||
// a := set.subset(b, c)
|
||||
// (a) <=> (set.intersect(b, c) = b)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue