3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-08 00:41:56 +00:00

Move psig and match method to polymorphism_util

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-10-05 21:33:21 +00:00
parent 0362f0a7a6
commit dd9662f2de
4 changed files with 70 additions and 61 deletions

View file

@ -28,6 +28,7 @@ Operators:
#pragma once
#include "ast/ast.h"
#include "ast/polymorphism_util.h"
enum finite_set_sort_kind {
FINITE_SET_SORT
@ -49,26 +50,10 @@ enum finite_set_op_kind {
};
class finite_set_decl_plugin : public decl_plugin {
struct psig {
symbol m_name;
unsigned m_num_params;
sort_ref_vector m_dom;
sort_ref m_range;
psig(ast_manager& m, char const* name, unsigned n, unsigned dsz, sort* const* dom, sort* rng):
m_name(name),
m_num_params(n),
m_dom(m),
m_range(rng, m)
{
m_dom.append(dsz, dom);
}
};
ptr_vector<psig> m_sigs;
bool m_init;
ptr_vector<polymorphism::psig> m_sigs;
bool m_init;
void init();
void match(psig& sig, unsigned dsz, sort *const* dom, sort* range, sort_ref& range_out);
func_decl * mk_empty(sort* element_sort);
func_decl * mk_finite_set_op(decl_kind k, unsigned arity, sort * const * domain, sort* range);
sort * get_element_sort(sort* finite_set_sort) const;
@ -82,7 +67,7 @@ public:
}
void finalize() override {
for (psig* s : m_sigs)
for (polymorphism::psig* s : m_sigs)
dealloc(s);
m_sigs.reset();
}