From f24c5ca99ae142bee31c9c82e56c7264fa903bd1 Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Tue, 21 Jun 2022 12:42:44 -0700 Subject: [PATCH] #6095 arrays that are interpreted using as-array should be reflected back to store expressions --- src/api/python/z3/z3.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/api/python/z3/z3.py b/src/api/python/z3/z3.py index b2e7e250c..7dbef9f6e 100644 --- a/src/api/python/z3/z3.py +++ b/src/api/python/z3/z3.py @@ -6470,7 +6470,25 @@ class ModelRef(Z3PPObject): return None r = _to_expr_ref(_r, self.ctx) if is_as_array(r): - return self.get_interp(get_as_array_func(r)) + fi = self.get_interp(get_as_array_func(r)) + if fi is None: + return fi + e = fi.else_value() + if e is None: + return fi + if fi.arity() != 1: + return fi + srt = decl.range() + dom = srt.domain() + e = K(dom, e) + i = 0 + sz = fi.num_entries() + n = fi.arity() + while i < sz: + fe = fi.entry(i) + e = Store(e, fe.arg_value(0), fe.value()) + i += 1 + return e else: return r else: