Skip to content

Commit fcc7bd3

Browse files
fix #2489
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 3074e2b commit fcc7bd3

File tree

3 files changed

+17
-13
lines changed

3 files changed

+17
-13
lines changed

src/api/api_ast.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ extern "C" {
202202
func_decl* d = mk_c(c)->m().mk_fresh_func_decl(prefix,
203203
domain_size,
204204
reinterpret_cast<sort*const*>(domain),
205-
to_sort(range));
205+
to_sort(range), false);
206206

207207
mk_c(c)->save_ast_trail(d);
208208
RETURN_Z3(of_func_decl(d));
@@ -216,7 +216,7 @@ extern "C" {
216216
if (prefix == nullptr) {
217217
prefix = "";
218218
}
219-
app* a = mk_c(c)->m().mk_fresh_const(prefix, to_sort(ty));
219+
app* a = mk_c(c)->m().mk_fresh_const(prefix, to_sort(ty), false);
220220
mk_c(c)->save_ast_trail(a);
221221
RETURN_Z3(of_ast(a));
222222
Z3_CATCH_RETURN(nullptr);

src/ast/ast.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,10 +2346,10 @@ app * ast_manager::mk_app(func_decl * decl, unsigned num_args, expr * const * ar
23462346

23472347

23482348
func_decl * ast_manager::mk_fresh_func_decl(symbol const & prefix, symbol const & suffix, unsigned arity,
2349-
sort * const * domain, sort * range) {
2349+
sort * const * domain, sort * range, bool skolem) {
23502350
func_decl_info info(null_family_id, null_decl_kind);
2351-
info.m_skolem = true;
2352-
SASSERT(info.is_skolem());
2351+
info.m_skolem = skolem;
2352+
SASSERT(skolem == info.is_skolem());
23532353
func_decl * d;
23542354
if (prefix == symbol::null && suffix == symbol::null) {
23552355
d = mk_func_decl(symbol(m_fresh_id), arity, domain, range, &info);
@@ -2368,7 +2368,7 @@ func_decl * ast_manager::mk_fresh_func_decl(symbol const & prefix, symbol const
23682368
}
23692369
m_fresh_id++;
23702370
SASSERT(d->get_info());
2371-
SASSERT(d->is_skolem());
2371+
SASSERT(skolem == d->is_skolem());
23722372
return d;
23732373
}
23742374

src/ast/ast.h

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,20 +1921,24 @@ class ast_manager {
19211921
}
19221922

19231923
func_decl * mk_fresh_func_decl(symbol const & prefix, symbol const & suffix, unsigned arity,
1924-
sort * const * domain, sort * range);
1924+
sort * const * domain, sort * range, bool skolem = true);
19251925

1926-
func_decl * mk_fresh_func_decl(unsigned arity, sort * const * domain, sort * range) { return mk_fresh_func_decl(symbol::null, symbol::null, arity, domain, range); }
1926+
func_decl * mk_fresh_func_decl(unsigned arity, sort * const * domain, sort * range, bool skolem = true) {
1927+
return mk_fresh_func_decl(symbol::null, symbol::null, arity, domain, range, skolem);
1928+
}
19271929

19281930
func_decl * mk_fresh_func_decl(char const * prefix, char const * suffix, unsigned arity,
1929-
sort * const * domain, sort * range) {
1930-
return mk_fresh_func_decl(symbol(prefix), symbol(suffix), arity, domain, range);
1931+
sort * const * domain, sort * range, bool skolem = true) {
1932+
return mk_fresh_func_decl(symbol(prefix), symbol(suffix), arity, domain, range, skolem);
19311933
}
19321934

1933-
func_decl * mk_fresh_func_decl(char const * prefix, unsigned arity, sort * const * domain, sort * range) {
1934-
return mk_fresh_func_decl(symbol(prefix), symbol::null, arity, domain, range);
1935+
func_decl * mk_fresh_func_decl(char const * prefix, unsigned arity, sort * const * domain, sort * range, bool skolem = true) {
1936+
return mk_fresh_func_decl(symbol(prefix), symbol::null, arity, domain, range, skolem);
19351937
}
19361938

1937-
app * mk_fresh_const(char const * prefix, sort * s) { return mk_const(mk_fresh_func_decl(prefix, 0, nullptr, s)); }
1939+
app * mk_fresh_const(char const * prefix, sort * s, bool skolem = true) {
1940+
return mk_const(mk_fresh_func_decl(prefix, 0, nullptr, s, skolem));
1941+
}
19381942

19391943
symbol mk_fresh_var_name(char const * prefix = nullptr);
19401944

0 commit comments

Comments
 (0)